Metadata-Version: 2.1
Name: atd-mds-client-dev
Version: 0.0.3
Summary: A Python utility to interact data endpoints compliant with the Mobility Data Specification, as designed by the Open Mobility Foundation
Home-page: https://github.com/cityofaustin/atd-mds-client/tree/atd-mds-client
Author: City of Austin
Author-email: transportation.data@austintexas.gov
License: UNKNOWN
Description: # atd-mds-client
        A Python utility to interact data endpoints compliant with the [Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/tree/master/provider), as designed by the Open Mobility Foundation.
        
        This client was inspired by the [City of Santa Monica MDS Provider Client](https://github.com/CityofSantaMonica/mds-provider).
        
        ## Installation
        
        Install the library:
        
        ```python
        pip install atd-mds-client
        ```
        
        Or the development branch:
        ```python
        pip install atd-mds-client-dev
        ```
        
        ## Getting started
        
        ```python
        # Import standard libraies:
        import json
        from datetime import datetime
        
        # Import the MDS Library:
        from mds import *
        
        # Provider Configuration
        provider_configuration = {
            # Authentication type: "OAuth", "Bearer", "Basic" or "Custom"
            "auth_type": "Bearer",
            # If you have a Bearer authentication, provide the token:
            "token": "...secret...token...here",
            # Provide the URL endpoint of the provider:
            "mds_api_url": "https://mds.your-scooter-company.com/api/endpoint/v1",
            # (Optional) The Provider ID
            "provider_id": "...mds...provider...id",
            # Any additional HTTP Headers:
            "headers": {
                "App-Version": "3.0.0"
            },
            # Any additional settings:
            "time_format": "unix",
            "delay": 1, # Delay in seconds per http request
            "max_attempts": 3, # Max attempts if the http request fails
            "paging": True, # Enable/Disable pagination
            "timeout": 10, # Maximum time allowed for an HTTP request in seconds
            "version": "0.3.0", # MDS Version: "0.2.0", "0.3.0" or "0.4.0" or remove for custom driver
        }
        
        # Builds a time-zone aware date time range
        my_time = MDSTimeZone(
            date_time_now=datetime(2020, 1, 1, 20), # Either Now or any date as specified by datetime, becomes end_time
            offset=3600,             # Subtract 1 hour from date_time_now and becomes start_time
            time_zone="US/Central",  # US/Central
        )
        
         # Initialize the MDS Client
        mds_client = MDSClient(config=provider_configuration, provider="amazing scooters")
        
        # Get trips
        trips = mds_client.get_trips(
            # First the start time for the query
            start_time=my_time.get_time_start(
                utc=True, # Transforms local time into UTC
                unix=True # Transforms format from ISO into Unix Epoch time
            ),
            # Now the end time:
            end_time=my_time.get_time_end(
                utc=True, # Transforms local time into UTC
                unix=True # Transforms format from ISO into Unix Epoch time
            )
        )
        
        print(json.dumps(trips))
        ```
        
        # CD/CI
        
        We make use of CircleCI for our deployments, you can see the build script in the `.circleci` folder in this repo. The basic process consists of a couple steps:
        
        1. Generate basic variables based on the current branch
        2. Change the package name based on the current branch
        3. Builds the package
        4. Deploys with twine 
        
        **In short, the only way to deploy a package is to change it's version number manually in `setup.py`.** If the changes were made in the master branch, the deployment will go into production, for the dev branch, a postfix will be added to the name of the package before it is deployed to pypi. 
        
        # Development
        
        We currently have two branches: master and dev. The master branch is used in production, our dev is meant for development and testing. 
        
        ### Dev & Master Postfix
        
        For the dev branch, the build script will attach a post fix `"-dev"` to the package name specified in `setup.py`. For example, in the dev branch file `setup.py` we see the package name is `name="atd-mds-client"` and the current version was `0.0.X`, if you were to change the version number and commit to the dev branch, the deployment script will deploy to pypi as `atd-mds-client-dev` with the new version.
        
        ### Pull Requests & Local Development
        
        Pull requests are ignored by the CD/CI pipeline, meaning they do not get built. If you need a package built for dev testing:
        
        - Test your script locally
        - Create a PR against the dev branch, make sure you change the version number in setup.py
        - Merge your PR branch to the dev branch
        
        How about local development?
        
        At the moment, local development is open-ended. You may use any python mechanism or style when including source python packages in your development and local tests.
        
        # License
        
        The package is distributed under the GPL 3.0 license.
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: Public Domain
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Description-Content-Type: text/markdown
