This repo is no longer supported. Please consult https://docs.eyesopen.com/orion-developer/development/create_new_package.html to learn about how to create a cookiecutter floe package template.
A Cookiecutter template for Orion packages containing Cubes and Floes.
For all questions regarding the usage of this CookieCutter template, please contact OpenEye Support.
- Sets up skeleton of an Orion package containing Cubes and Floes
- Simple example Cube and Floe
- Testing setup using PyTest including working test for the example cube and floe
- Automatic documentation generation (using Sphinx) for cubes and floes
- Commands for running tests, building docs, and packaging using Invoke
- Version configuration via storing the version only in the module's
__init__.py
file
- Python 3.8 or higher. We recommend starting with a clean conda environment, which can be created and activated as:
conda create -n vir_env python=3.8 conda activate vir_env
- Cookiecutter
- Access to OpenEye’s Python package server, Magpie. If you are a licensed Orion user and don't have access, please contact OpenEye Support. Follow the instructions there to configure access to Orion python packages via your
pip.conf
file. - A configured Orion profile to communicate with Orion server. After 'pip install -e .' step below, profile can be configured as: (needs Orion login credentials)
ocli --profile=default config profile
- Install cookiecutter, usually via running
pip install cookiecutter
If you have Orion version 2020.3.x, run: :
cookiecutter gh:oess/cookiecutter-orion-package
If you have Orion version 2021.1.x, run: :
cookiecutter gh:oess/cookiecutter-orion-package-2021
Note: running cookiecutter directly against the GitHub repository requires git
to be locally installed. To install without requiring git
, download the ZIP file from GitHub and run cookiecutter cookiecutter-orion-package-master.zip
This will generate a directory with the name you provided as the project_slug in the cookiecutter setup. Switch into the directory
cd <project_slug>
Next install all requirements and development requirements:
pip install -e . pip install -r requirements_dev.txt
Once all dependencies are installed, you should be able to use invoke to build a version of the package for upload to Orion (the tar.gz will be in the dist directory):
invoke package
Tests are set up for the cube and floe that are included, they can be run locally:
invoke test-all
Command to just test cubes
invoke test-cubes
Command to just test floes
invoke test-floes
To clean up generated documentation and packaging files, run:
invoke clean
You can also selectively clean only documentation files as follows:
invoke clean-docs
The following directory structure will be created by the cookiecutter
, the items marked in {{ }}
will be replaced by your choices upon completion:
{{cookiecutter.project_slug}}/ <-- Top directory for your Project.
├── MANIFEST.in
├── README.md <-- README with your Project Name and description.
├── docs <-- Docs subdirectory set up for automatic documentation of cubes and floes.
│ ├── Makefile
│ ├── make.bat
│ └── source
│ ├── _static
│ ├── _templates
│ ├── conf.py
│ └── index.rst
├── floes <-- Subdirectory where all floes should be placed.
│ └── example_floe.py <-- An example floe.
├── manifest.json <-- Manifest for Orion.
├── requirements_dev.txt <-- Requirements file for development of this package.
├── setup.py <-- Python file for creating a python package
├── tasks.py <-- Python file with defined tasks for building docs, running tests, and building the package.
├── tests <-- Subdirectory for testing of cubes and floes.
│ ├── floe_tests <-- Subdirectory for floe tests
│ │ └── test_example_floe.py <-- Example floe test to run locally or in Orion
│ ├── test_data
│ │ └── 10.ism
│ └── test_example_cube.py <-- An example unit test for the included cube.
└── {{cookiecutter.module_name}} <-- Subdirectory of the package for the python module. All cubes should go in here.
├── __init__.py
└── example_cube.py <-- An example cube.