Skip to main content

aind-codeocean-utils

License Code Style semantic-release: angular Interrogate Coverage Python

Library to contain useful utility methods to interface with Code Ocean.

Installation

To use the package, you can install it from pypi:

pip install aind-codeocean-utils

To install the package from source, in the root directory, run

pip install -e .

To develop the code, run

pip install -e .[dev]

Usage

The package includes helper functions to interact with Code Ocean:

APIHandler

This class enables one to:

  1. Update asset tags in Code Ocean
  2. Find external data assets that do not exist in S3
  3. Find external data assets
import os

from codeocean.client import CodeOcean
from aind_codeocean_utils.api_handler import APIHandler

# Get token and domain parameters for CodeOcean client
CO_TOKEN = os.environ["CO_TOKEN"]
CO_DOMAIN = os.environ["CO_DOMAIN"]

co_client = CodeOcean(domain=CO_DOMAIN, token=CO_TOKEN)

api_handler = APIHandler(co_client)

data_assets = [
  co_client.data_assets.get_data_asset(data_asset_id="abc"),
  co_client.data_assets.get_data_asset(data_asset_id="def")
]

api_handler.update_tags(
  tags_to_remove=["test"],
  tags_to_add=["new_tag"],
  data_assets=data_assets,
)

Contributing

Linters and testing

There are several libraries used to run linters, check documentation, and run tests.

  • Please test your changes using the coverage library, which will run the tests and log a coverage report:
coverage run -m unittest discover && coverage report
  • Use interrogate to check that modules, methods, etc. have been documented thoroughly:
interrogate .
  • Use flake8 to check that code is up to standards (no unused imports, etc.):
flake8 .
  • Use black to automatically format the code into PEP standards:
black .
  • Use isort to automatically sort import statements:
isort .

Pull requests

For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use Angular style for commit messages. Roughly, they should follow the pattern:

<type>(<scope>): <short summary>

where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  • build: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  • ci: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bugfix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

Semantic Release

The table below, from semantic release, shows which commit message gets you which release type when semantic-release runs (using the default configuration):

Commit message Release type
fix(pencil): stop graphite breaking when too much pressure applied Patch Fix Release, Default release
feat(pencil): add 'graphiteWidth' option Minor Feature Release
perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons.
Major Breaking Release
(Note that the BREAKING CHANGE: token must be in the footer of the commit)

Note: The automatic version bump workflow does not work for manual version changes. As shown above, use the appropriate scope and commit message that reflects changes included in a PR.

Documentation

To generate the rst files source files for documentation, run

sphinx-apidoc -o doc_template/source/ src 

Then to create the documentation HTML files, run

sphinx-build -b html doc_template/source/ doc_template/build/html

More info on sphinx installation can be found here.

Metadata

Release files for aind-codeocean-utils 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aind-codeocean-utils 1.0.1
File Size Uploaded
aind_codeocean_utils-1.0.1.tar.gz 42.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aind-codeocean-utils 1.0.1
File Interpreter ABI Platform
aind_codeocean_utils-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 49.6 kB

Release files / aind_codeocean_utils-1.0.1.tar.gz

Download URL aind_codeocean_utils-1.0.1.tar.gz
Size 42.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8baef8b82fb68a78d1a18e5e991ad48cb8530a1fd57bcf6c33f7b3d47ea46bd9
BLAKE2b-256 checksum
How to use checksums
29c5bf32699f1c15b88fade17406ee434de5790a13e4915439bb4220c878559d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / aind_codeocean_utils-1.0.1-py3-none-any.whl

Download URL aind_codeocean_utils-1.0.1-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
965fd89a4b7705d308f5de4e699b72bb48acfb6c39b73fb4ac4790488f756c2f
BLAKE2b-256 checksum
How to use checksums
c97e6f276a57d45c8a8c1a47ea3949b7441d5884827aab8443048e62d172e88a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page