8000 Merge pull request #66 from tableau/development · csweezy/document-api-python@59ac21c · GitHub
[go: up one dir, main page]

Skip to content

Commit 59ac21c

Browse files
author
Russell Hay
authored
Merge pull request tableau#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)
    0