Skip to content

Commit 59ac21c

Browse files
author
Russell Hay
authored
Merge pull request #66 from tableau/development
Releasing 0.2 to master
2 parents e6a0bba + aa93eef commit 59ac21c

32 files changed

+1407
-90
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,4 @@ target/
6363

6464
#Other things
6565
.DS_Store
66+
.idea

.travis.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ install:
1212
# command to run tests
1313
script:
1414
# Tests
15-
- python test.py
15+
- python setup.py test
1616
# pep8
17-
- pep8 --ignore=E501 .
17+
- pep8 .
1818
# Examples
1919
- (cd "Examples/Replicate Workbook" && python replicateWorkbook.py)
2020
- (cd "Examples/List TDS Info" && python listTDSInfo.py)
21+
- (cd "Examples/GetFields" && python show_fields.py)
2122

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## 0.2 (22 July 2016)
2+
3+
* Added support for loading twbx and tdsx files (#43, #44)
4+
* Added Fields property to datasource (#45)
5+
* Added Example for using the Fields Property (#51)
6+
* Added Ability to get fields used by a specific sheet (#54)
7+
* Code clean up and test reorganization
8+
9+
## 0.1 (29 June 2016)
10+
11+
* Initial Release to the world

Examples/GetFields/World.tds

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../List TDS Info/World.tds

Examples/GetFields/show_fields.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
############################################################
2+
# Step 1) Use Datasource object from the Document API
3+
############################################################
4+
from tableaudocumentapi import Datasource
5+
6+
############################################################
7+
# Step 2) Open the .tds we want to inspect
8+
############################################################
9+
sourceTDS = Datasource.from_file('World.tds')
10+
11+
############################################################
12+
# Step 3) Print out all of the fields and what type they are
13+
############################################################
14+
print('----------------------------------------------------------')
15+
print('--- {} total fields in this datasource'.format(len(sourceTDS.fields)))
16+
print('----------------------------------------------------------')
17+
for count, field in enumerate(sourceTDS.fields.values()):
18+
print('{:>4}: {} is a {}'.format(count+1, field.name, field.datatype))
19+
blank_line = False
20+
if field.calculation:
21+
print(' the formula is {}'.format(field.calculation))
22+
blank_line = True
23+
if field.default_aggregation:
24+
print(' the default aggregation is {}'.format(field.default_aggregation))
25+
blank_line = True
26+
27+
if blank_line:
28+
print('')
29+
print('----------------------------------------------------------')

README.md

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,26 @@ This repo contains Python source and example files for the Tableau Document API.
66

77
Document API
88
---------------
9-
The Document API provides a supported way to programmatically make updates to Tableau workbook (`.twb`) and datasource (`.tds`) files. If you've been making changes to these file types by directly updating the XML--that is, by XML hacking--this SDK is for you :)
10-
11-
Currently only the following operations are supported:
12-
13-
- Modify database server
14-
- Modify database name
15-
- Modify database user
16-
17-
We don't yet support creating files from scratch. In addition, support for `.twbx` and `.tdsx` files is coming.
9+
The Document API provides a supported way to programmatically make updates to Tableau workbook and data source files. If you've been making changes to these file types by directly updating the XML--that is, by XML hacking--this SDK is for you :)
10+
11+
Features include:
12+
- Support for 9.X, and 10.X workbook and data source files
13+
- Including TDSX and TWBX files
14+
- Getting connection information from data sources and workbooks
15+
- Server Name
16+
- Username
17+
- Database Name
18+
- Authentication Type
19+
- Connection Type
20+
- Updating connection information in workbooks and data sources
21+
- Server Name
22+
- Username
23+
- Database Name
24+
- Getting Field information from data sources and workbooks
25+
- Get all fields in a data source
26+
- Get all feilds in use by certain sheets in a workbook
27+
28+
We don't yet support creating files from scratch, adding extracts into workbooks or data sources, or updating field information
1829

1930

2031
###Getting Started
@@ -34,8 +45,19 @@ Download the `.zip` file that contains the SDK. Unzip the file and then run the
3445
pip install -e <directory containing setup.py>
3546
```
3647

37-
We plan on putting the package in PyPi to make installation easier.
48+
#### Installing the Development Version From Git
49+
50+
*Only do this if you know you want the development version, no guarantee that we won't break APIs during development*
51+
52+
```text
53+
pip install git+https://github.com/tableau/document-api-python.git@development
54+
```
55+
56+
If you go this route, but want to switch back to the non-development version, you need to run the following command before installing the stable version:
3857

58+
```text
59+
pip uninstall tableaudocumentapi
60+
```
3961

4062
###Basics
4163
The following example shows the basic syntax for using the Document API to update a workbook:
@@ -52,7 +74,7 @@ sourceWB.datasources[0].connections[0].username = "benl"
5274
sourceWB.save()
5375
```
5476

55-
With Data Integration in Tableau 10, a datasource can have multiple connections. To access the connections simply index them like you would datasources
77+
With Data Integration in Tableau 10, a data source can have multiple connections. To access the connections simply index them like you would datasources
5678

5779
```python
5880
from tableaudocumentapi import Workbook
@@ -75,13 +97,13 @@ sourceWB.save()
7597
**Notes**
7698

7799
- Import the `Workbook` object from the `tableaudocumentapi` module.
78-
- To open a workbook, instantiate a `Workbook` object and pass the `.twb` file name in the constructor.
79-
- The `Workbook` object exposes a `datasources` collection.
80-
- Each datasource object has a `connection` object that supports a `server`, `dbname`, and `username` property.
100+
- To open a workbook, instantiate a `Workbook` object and pass the file name as the first argument.
101+
- The `Workbook` object exposes a list of `datasources` in the workbook
102+
- Each data source object has a `connection` object that supports a `server`, `dbname`, and `username` property.
81103
- Save changes to the workbook by calling the `save` or `save_as` method.
82104

83105

84106

85107
###Examples
86108

87-
The downloadable package contains an example named `replicateWorkbook.py` (in the folder `\Examples\Replicate Workbook`). This example reads an existing workbook and reads a .csv file that contains a list of servers, database names, and users. For each new user in the .csv file, the code copies the original workbook, updates the `server`, `dbname`, and `username` properties, and saves the workbook under a new name.
109+
The downloadable package contains several example scripts that show more detailed usage of the Document API

contributing.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Contributing
2+
3+
We welcome contributions to this project!
4+
5+
Contribution can include, but are not limited to, any of the following:
6+
7+
* File an Issue
8+
* Request a Feature
9+
* Implement a Requested Feature
10+
* Fix an Issue/Bug
11+
* Add/Fix documentation
12+
13+
Contributions must follow the guidelines outlined on the [Tableau Organization](http://tableau.github.io/) page, though filing an issue or requesting
14+
a feature do not require the CLA.
15+
16+
## Issues and Feature Requests
17+
18+
To submit an issue/bug report, or to request a feature, please submit a [github issue](https://github.com/tableau/document-api-python/issues) to the repo.
19+
20+
If you are submiting a bug report, please provide as much information as you can, including clear and concise repro steps, attaching any necessary
21+
files to assist in the repro. **Be sure to scrub the files of any potentially sensitive information. Issues are public.**
22+
23+
For a feature request, please try to describe the scenario you are trying to accomplish that requires the feature. This will help us understand
24+
the limitations that you are running into, and provide us with a use case to know if we've satisfied your request.
25+
26+
## Fixes, Implementations, and Documentation
27+
28+
For all other things, please submit a PR that includes the fix, documentation, or new code that you are trying to contribute. More information on
29+
creating a PR can be found in the [github documentation](https://help.github.com/articles/creating-a-pull-request/)
30+
31+
If the feature is complex or has multiple solutions that could be equally appropriate approaches, it would be helpful to file an issue to discuss the
32+
design trade-offs of each solution before implementing, to allow us to collectively arrive at the best solution, which most likely exists in the middle
33+
somewhere.

publish.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
rm -rf dist
6+
python setup.py sdist
7+
python setup.py bdist_wheel
8+
python3 setup.py bdist_wheel
9+
twine upload dist/*

setup.cfg

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[wheel]
2+
universal = 1
3+
4+
[pycodestyle]
5+
select =
6+
max_line_length = 120
7+
8+
[pep8]
9+
max_line_length = 120
10+

setup.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55

66
setup(
77
name='tableaudocumentapi',
8-
version='0.0.1',
8+
version='0.2',
99
author='Tableau Software',
1010
author_email='github@tableau.com',
1111
url='https://github.com/tableau/document-api-python',
1212
packages=['tableaudocumentapi'],
1313
license='MIT',
14-
description='A Python module for working with Tableau files.'
14+
description='A Python module for working with Tableau files.',
15+
test_suite='test'
1516
)

0 commit comments

Comments
 (0)