Metadata-Version: 2.1
Name: crux
Version: 1.2
Summary: Crux Informatics API client library
Home-page: https://github.com/cruxinformatics/crux-python
Author: Crux Informatics, Inc.
Author-email: python-opensource@cruxinformatics.com
License: MIT
Description: # Crux Python Client
        
        A Python library for interacting with the Crux platform.
        
        The aim of this module is to be a Pythonic way to use the Crux API reliably. It covers client functionality including scanning subscriptions, getting delivery status, and downloading files.
        
        Python 3.6+ is supported.
        
        **See [crux-python.cruxinformatics.com](https://crux-python.cruxinformatics.com/) for detailed documentation.**
        
        ## Installation
        
        Install a recent version of Python, and a Python dependency and virtual environment manager like [pipenv](https://pipenv.readthedocs.io/en/latest/). On macOS run:
        
        ```bash
        brew install python
        brew install pipenv
        ```
        
        Install `crux` [from PyPI](https://pypi.org/project/crux/) in a virtual environment, and get a shell in that environment:
        
        ```bash
        mkdir -p crux_example
        cd crux_example
        pipenv install "crux==1.2"
        pipenv shell
        ```
        ## Getting Started
        
        Create a file, like example.py, and use the `crux` module:
        
        ```python
        from crux import Crux
        
        conn = Crux()
        identity = conn.whoami()
        print("I am", identity.email)
        ```
        
        Run the script:
        
        ```bash
        HISTCONTROL=ignoreboth
         export CRUX_API_KEY='YOUR_API_KEY'
        python3 example.py
        ```
        
        See the [installation](https://crux-python.cruxinformatics.com/en/latest/installation.html) and [authentication](https://crux-python.cruxinformatics.com/en/latest/authentication.html) documentation for details.
        
        ## Development
        
        Python 3.7 is required for development, which can be installed with `brew install python`. For heavy development work, every supported version of Python must be installed, see the pyenv documentation below.
        
        [Pipenv](https://pipenv.readthedocs.io/en/latest/) should be used to manage dependancies during development.
        
        1. [Install Pipenv](https://pipenv.readthedocs.io/en/latest/install/#installing-pipenv), on macOS run `brew install pipenv`
        2. `git clone https://github.com/cruxinformatics/crux-python.git`
        3. `cd crux-python`
        4. `pipenv install --dev` to install the dependancies
        5. `pipenv shell` to get a shell in the virtual environment
        
        ### Multiple Python versions
        
        To be able to run tests against all supported Python versions, you must have all supported Python versions installed. The test runner will look for binaries called `python2.7`, `python3.5`, `python3.6`, etc. There are multiple ways to install Python versions, we'll document using [pyenv](https://github.com/pyenv/pyenv).
        
        1. `brew install pyenv` to install
        2. Put `eval "$(pyenv init -)"` towards the end of the shell configuration file (~/.bashrc or ~/.bash_profile), because it manipulates `$PATH`, for example:
        
            ```bash
            echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
            ```
        
        3. Open a new Terminal to get an updated shell
        4. Install required/missing Python versions (this assumes you have Python 2.7 already installed, otherwise install it too):
        
            ```bash
            pyenv install 3.5.6
            pyenv install 3.6.6
            pyenv install 3.7.0
            ```
        
        5. `pyenv global system 3.5.6 3.6.6 3.7.0` to make all the Python versions available
        6. If you already have pipenv virtual environment, remove it with `pipenv --rm` so it detects the Python versions
        7. `pipenv install --dev` to install all the dependancies
        8. `pipenv shell` to get a shell in the virtual environment
        
        ### Running tests
        
        We use [Nox](https://nox.thea.codes/en/stable/) to automate running tests, and use `make` to automate running some commands. These commands should be run within a shell created with `pipenv shell`.
        
        ```bash
        # Run all tests: lint, unit, format_check
        make test
        # Or
        nox
        
        # Run only lint checks
        make lint
        # Or
        nox -s lint
        
        # Run unit tests against all available Python versions
        make unit
        # Or
        nox -s unit
        
        # Run integration tests agains all available Python versions
         export CRUX_API_KEY="12345"
        export CRUX_API_HOST="https://api.example.com"
        make integration
        # Or
         export CRUX_API_KEY="12345"
        export CRUX_API_HOST="https://api.example.com"
        nox --s integration
        
        # Check formatting
        make format_check
        # Or
        nox -s format_check
        
        # List all commands available
        make
        # Or
        nox -l
        
        # Run unit test only against Python 3.7
        nox -s unit-3.7
        
        # Reformat code
        make format
        
        # Generate Sphinx HTML documentation
        make docs
        ```
        
        #### Running test scripts
        
        Manual testing scripts could be found at `tests/regression`.
        In order to run one, i.e. `client.py`, follow the steps:
        
        1. copy corresponding `.env.dist` file as `.env` file (if you plan to run `client.py`, copy `client.env.dist` as `client.env`)
        2. fill variables within `.env` file
        3. launch the script (while being in the `tests/regression` folder, execute `python client.py`)
        
Keywords: crux-python
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
Description-Content-Type: text/markdown
