diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..f5d5961 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,61 @@ +# Build and deploy the docs/ site to GitHub Pages using the repo's own +# Jekyll 4 Gemfile, so the published site matches a local `jekyll serve`. +# (GitHub's default Pages build uses the github-pages gem / Jekyll 3.9.) +name: Deploy docs to Pages + +on: + push: + branches: [master] + paths: + - "docs/**" + - ".github/workflows/pages.yml" + workflow_dispatch: + +# Allow GITHUB_TOKEN to deploy to Pages. +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment; don't cancel an in-progress run. +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: docs + steps: + - uses: actions/checkout@v7 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + bundler-cache: true + working-directory: docs + - name: Configure Pages + id: pages + uses: actions/configure-pages@v6 + - name: Build site + env: + JEKYLL_ENV: production + PAGES_BASE_PATH: ${{ steps.pages.outputs.base_path }} + run: bundle exec jekyll build --baseurl "$PAGES_BASE_PATH" + - name: Upload artifact + uses: actions/upload-pages-artifact@v5 + with: + path: docs/_site + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index d732afc..ae9f81b 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -10,12 +10,12 @@ jobs: name: Build dist files for PyPi runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 with: fetch-depth: 0 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v6 with: - python-version: 3.13 + python-version: 3.14 - name: Build dist files run: > python -m pip install --upgrade pip && pip install -e .[build] && diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index c99b1e0..47ba610 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -16,12 +16,12 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install dependencies @@ -37,12 +37,12 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.13] + python-version: [3.14] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v7 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 1a18c16..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,59 +0,0 @@ -## 011 (November 2022) -* Remove extraneous debug print statements - -## 010 (June 2022) -* Add service/schema attributes - -## 091 (March 2022) -* Add attribute for hidden field - -## 09 (December 2021) -* PyPI upgraded to Python3 - -## 08 (October 2021) -* See dashboards in a workbook -* Add shapes property -* Add custom sql -* Drop python 2, add up through 3.9 - -## 07 (26 May 2021) -* Fix bug in xfile that overwrote the namespace name when saving a document - -## 06 (11 January 2017) - -* Initial SQL and query banding support (#123) -* Fixed bug in xfiles to allow opening workbooks with external file caches (#117, #118) -* Code Cleanup (#120, #121) -* Added Py36 support (#124) -* Switched to pycodestyle from pip8 on travis runs (#124) - -## 05 (01 November 2016) - -* Added ability to set the port for connections (#97) -* Added ability to read and write caption for datasources (#99) -* Added documentation - -## 0.4 (07 October 2016) - -* Add ability to remove repository location (#86) -* Fixed bug in connection parsing when federated connections are present (#87) -* Fixed bug in UNICODE support (#80) - -## 0.3 (31 August 2016) - -* Added basic connection class retargeting (#65) -* Added ability to create a new connection (#69) -* Added description to the field object (#73) -* Improved Test Coverage (#62, #67) - -## 0.2 (22 July 2016) - -* Added support for loading twbx and tdsx files (#43, #44) -* Added Fields property to datasource (#45) -* Added Example for using the Fields Property (#51) -* Added Ability to get fields used by a specific sheet (#54) -* Code clean up and test reorganization - -## 0.1 (29 June 2016) - -* Initial Release to the world diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md deleted file mode 100644 index 903e57b..0000000 --- a/CONTRIBUTORS.md +++ /dev/null @@ -1,15 +0,0 @@ -This project wouldn't be possible without our amazing contributors. - -The following people have contributed to this project to make it possible, and we thank them for their contributions! - -## Contributors - -* [Charley Peng](https://github.com/chid) -* [Miguel Sánchez](https://github.com/MiguelSR) -* [Ryan Richmond](https://github.com/r-richmond) - -## Core Team - -* [Tyler Doyle](https://github.com/t8y8) -* [Russell Hay](https://github.com/RussTheAerialist) - diff --git a/contributing.md b/contributing.md deleted file mode 120000 index e047e03..0000000 --- a/contributing.md +++ /dev/null @@ -1 +0,0 @@ -docs/docs/contributing.md \ No newline at end of file diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..fd1ef36 --- /dev/null +++ b/contributing.md @@ -0,0 +1,3 @@ +# Contributing + +See the [Contributing guide](https://tableau.github.io/document-api-python/docs/contributing) in the project documentation. diff --git a/docs/Gemfile b/docs/Gemfile index 775d954..83a0e1a 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -1,3 +1,9 @@ source 'https://rubygems.org' -gem 'github-pages', group: :jekyll_plugins +# Standalone Jekyll 4 runs on modern Ruby (4.0+). We don't use the +# github-pages gem because it pins an old Jekyll/Liquid that is +# incompatible with Ruby 3.2+ (String#untaint was removed). +gem 'jekyll', '~> 4.3' + +# webrick was removed from Ruby's default gems in 3.0; needed by `jekyll serve`. +gem 'webrick' diff --git a/docs/docs/api-ref.md b/docs/docs/api-ref.md index 365634a..1dd932a 100644 --- a/docs/docs/api-ref.md +++ b/docs/docs/api-ref.md @@ -34,13 +34,13 @@ Saves any changes to the workbook to a new file specified by the `new_file` para `self.worksheets:` Returns a list of worksheets found in the workbook. -`self.datasources:` Returns a list of Datasource objects found in the workbook. +`self.datasources:` Returns a list of datasource objects found in the workbook. `self.filename:` Returns the filename of the workbook. `self.shapes` Returns a list of strings with the names of shapes found in the workbook. -`self.dashboards:` Returns a list of strings with the names of the dashboards found in the workbook +`self.dashboards:` Returns a list of strings with the names of the dashboards found in the workbook ## Datasources ```python @@ -56,13 +56,13 @@ A class representing Tableau Data Sources, embedded in workbook files or in TDS `Datasource.save(self)` Saves any changes to the datasource to the existing file. -`Datasource.save_as(self)` Saves any changes to the datasource to a new file specified by the `new_file` parameter. +`Datasource.save_as(self, new_filename)` Saves any changes to the datasource to a new file specified by the `new_filename` parameter. -`Datasource.add_field(self, name, datatype, role, field_type, caption)` Adds a base field object with the given values. +`Datasource.add_field(self, name, datatype, role, field_type, caption, hidden)` Adds a base field object with the given values. `Datasource.remove_field(self, field)` Remove a given field. -`Datasource.add_calculation(self, caption, formula, datatype, role, type)` Adds a calculated field with the given values. +`Datasource.add_calculation(self, caption, formula, datatype, role, type, hidden)` Adds a calculated field with the given values. **Properties:** @@ -149,7 +149,7 @@ Represents a field in a datasource `self.calculation` Returns a string with the formula if this field is a calculated field. -`self.default_aggregation` Returns a string with he default type of aggregation on the field (e.g Sum, Avg). +`self.default_aggregation` Returns a string with the default type of aggregation on the field (e.g, Sum, Avg). `self.description` Returns a string with contents of the tag on a field. diff --git a/docs/docs/contributing.md b/docs/docs/contributing.md index 8567996..fc80869 100644 --- a/docs/docs/contributing.md +++ b/docs/docs/contributing.md @@ -60,8 +60,8 @@ somewhere. ## Release process -We expect that everything merged into the development branch is ready to release on master. Releases can be made at any time - ideally it would be on a regular cadence but currently it is basically on request. +We expect that everything merged into the development branch is ready to release on master. - bump the version in setup.py - update the changelog: all commits to development should contain a meaningful message, the changelog can be built from these -- merge to master. -This kicks off an automated release in github and then publish to pypi. +- merge to master. +This kicks off an automated release in GitHub and then publish to PyPI. diff --git a/docs/docs/dev-guide.md b/docs/docs/dev-guide.md index 3905c23..d5cd064 100644 --- a/docs/docs/dev-guide.md +++ b/docs/docs/dev-guide.md @@ -26,7 +26,7 @@ layout: docs 1. Run the tests to make sure everything is peachy: ```shell - python setup.py test + python -m unittest discover -v ``` 1. Set up the feature, fix, or documentation branch. @@ -49,8 +49,8 @@ layout: docs 1. Add tests. - All of our tests live under the `test/` folder in the repository. - We use `unittest` and the built-in test runner `python setup.py test`. + All of our tests live under the `test/` folder in the repository. + We use `unittest` and run them with `python -m unittest discover -v`. If a test needs a static file, like a twb/twbx, it should live under `test/assets/` 1. Update the documentation. diff --git a/docs/docs/index.md b/docs/docs/index.md index 89dcba4..bf8272f 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -3,7 +3,7 @@ title: Get Started layout: docs --- -To use this SDK, you must have Python installed. You can use either 2.7.X or 3.3 and later. +To use this SDK, you must have Python 3 installed. The SDK is tested against Python 3.10 and later. (As of 2021, Python 2 is no longer supported.) * TOC {:toc} @@ -76,7 +76,7 @@ sourceWB.save() - Import the `Workbook` object from the `tableaudocumentapi` module. - To open a workbook, instantiate a `Workbook` object and pass the file name as the first argument. - The `Workbook` object exposes a list of `datasources` in the workbook -- Each data source object has a `connection` object that supports a `server`, `dbname`, and `username` property. +- Each data source object exposes a `connections` list; each connection supports `server`, `dbname`, and `username` properties. - Save changes to the workbook by calling the `save` or `save_as` method.
diff --git a/docs/index.md b/docs/index.md index cfd15c7..fdf461b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -28,10 +28,10 @@ Features include: - Server Name - Username - Database Name -- Getting Field information from data sources and workbooks +- Getting field information from data sources and workbooks - Get all fields in a data source - Get all fields in use by certain sheets in a workbook -For Hyper files, take a look a the [Tableau Hyper API](https://tableau.github.io/hyper-db/docs/). +For Hyper files, take a look at the [Tableau Hyper API](https://tableau.github.io/hyper-db/docs/). We don't yet support creating files from scratch, adding extracts into workbooks or data sources, or updating field information. diff --git a/tableaudocumentapi/__init__.py b/tableaudocumentapi/__init__.py index 6a10f6f..3c3eaee 100644 --- a/tableaudocumentapi/__init__.py +++ b/tableaudocumentapi/__init__.py @@ -3,5 +3,5 @@ from .datasource import Datasource, ConnectionParser from .workbook import Workbook -__version__ = '0.0.1' +__version__ = '0.11' __VERSION__ = __version__