{"id":18265135,"url":"https://github.com/nasa-ammos/ait-core","last_synced_at":"2026-05-20T01:08:35.455Z","repository":{"id":31235395,"uuid":"127309515","full_name":"NASA-AMMOS/AIT-Core","owner":"NASA-AMMOS","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-27T19:59:12.000Z","size":6212,"stargazers_count":46,"open_issues_count":106,"forks_count":27,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-29T00:09:42.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NASA-AMMOS.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-29T15:16:31.000Z","updated_at":"2025-03-15T18:24:33.000Z","dependencies_parsed_at":"2024-01-10T23:49:08.125Z","dependency_job_id":"61e856fa-e8a8-4086-9535-118c1a9c7808","html_url":"https://github.com/NASA-AMMOS/AIT-Core","commit_stats":{"total_commits":472,"total_committers":26,"mean_commits":"18.153846153846153","dds":0.5720338983050848,"last_synced_commit":"eb777b88d21602b9c53a1c03aaec95dd3cc8a4c1"},"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2FAIT-Core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2FAIT-Core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2FAIT-Core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NASA-AMMOS%2FAIT-Core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NASA-AMMOS","download_url":"https://codeload.github.com/NASA-AMMOS/AIT-Core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271528,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:17:13.084Z","updated_at":"2026-05-09T07:08:32.083Z","avatar_url":"https://github.com/NASA-AMMOS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n.. image:: https://github.com/NASA-AMMOS/AIT-Core/actions/workflows/full_build.yaml/badge.svg?branch=master\n   :target: https://github.com/NASA-AMMOS/AIT-Core/actions\n   :alt: Build and Lint Status\n\n.. image:: https://readthedocs.org/projects/ait-core/badge/?version=latest\n    :target: https://ait-core.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\nThe AMMOS Instrument Toolkit (Formerly the Bespoke Links to Instruments\nfor Surface and Space (BLISS)) is a Python-based software suite\ndeveloped to handle Ground Data System (GDS), Electronic Ground Support\nEquipment (EGSE), commanding, telemetry uplink/downlink, and sequencing\nfor instrument and CubeSat Missions. It is a generalization and expansion\nof tools developed for a number of ISS\nmissions.\n\nGetting Started\n===============\n\nYou can read through the `Installation and Configuration\nPage \u003chttp://ait-core.readthedocs.io/en/latest/installation.html\u003e`__ for\ninstruction on how to install AIT Core.\n\nYou can read through the `New Project Setup\nPage \u003chttp://ait-core.readthedocs.io/en/latest/project_setup.html\u003e`__\nfor instructions on how to use AIT on your next project.\n\nJoin the Community\n==================\n\nThe project's `User and Developer Mailing List \u003chttps://groups.google.com/forum/#!forum/ait-dev\u003e`__ is the best way to communicate with the team, ask questions, brainstorm plans for future changes, and help contribute to the project.\n\nThis project exists thanks to the dedicated users, contributors, committers, and project management committee members. If you'd like to learn more about how the project is organized and how to become a part of the team please check out the `Project Structure and Governance \u003chttps://github.com/NASA-AMMOS/AIT-Core/wiki/Project-Structure-and-Governance\u003e`__ documentation.\n\nContributing\n============\n\nThank you for your interest in contributing to AIT! We welcome contributions from people of all backgrounds and disciplines. While much of the focus of our project is software, we believe that many of the most critical contributions come in the form of documentation improvements, asset generation, user testing and feedback, and community involvement. So if you're interested and want to help out please don't hesitate! Send us an email on the public mailing list below, introduce yourself, and join the community.\n\nCommunication\n-------------\nAll project communication happens via mailing lists. Discussions related to development should happen on the public `Developer and User Mailing List \u003chttps://groups.google.com/forum/#!forum/ait-dev\u003e`__. If you're new to the community make sure to introduce yourself as well!\n\nDev Installation\n----------------\nAs always, we encourage you to install AIT into a virtual environment of your choosing when you set up your development environment. AIT uses `poetry` for package management. Before setting up your development environment you will need the following installed and ready to use:\n\n- A virtual environment \"manager\" of your choosing with a configured and activated virtual environment. Since AIT uses `poetry` you can consider leveraging its `environment management \u003chttps://python-poetry.org/docs/managing-environments/\u003e`__ functionality as well.\n    - Using `poetry shell` is also very convenient for development testing and simplifying environment management. You should make sure to install the package into the shell to get access to the development dependencies as well. It's recommended that you use `poetry shell` when running the tox builds because other virtual environment managers will often prevent tox from accessing `pyenv`-installed Python versions.\n- `pyenv \u003chttps://github.com/pyenv/pyenv\u003e`__ so you can easily install different Python versions\n- `poetry \u003chttps://python-poetry.org/docs/#installation\u003e`__ installed either to your specific virtual environment or system-wide, whichever you prefer.\n\nInstall the package in \"editable\" mode with all the development dependencies by running the following::\n\n    poetry install\n\nAs with a normal installation you will need to point `AIT_CONFIG` at the primary configuration file. You should consider saving this in your shell RC file or your virtual environment configuration files so you don't have to reset with every new shell::\n\n    export AIT_CONFIG=/path/to/ait-core/config/config.yaml\n\nYou should configure `pre-commit` by running the following. This will install our pre-commit and pre-push hooks::\n\n    pre-commit install \u0026\u0026 pre-commit install -t pre-push\n\nFinally, you should install the different Python versions that the project supports so they're accessible to `tox`. Using `pyenv` is the easiest way to accomplish this::\n\n    cat .python-version | xargs -I{} pyenv install --skip-existing {}\n\nDev Tools\n---------\n\nTox\n~~~\nUse `tox` to run a thorough build of the toolkit that checks test execution across different Python versions, verifies the docs build, runs the linting pipeline, and checks that the repo packages cleanly. Make sure you run `tox` in Poetry's `shell` without another virtual environment active to avoid problems with `tox` finding different python versions for the tests. You can run all of the development tools with::\n\n    tox\n\nYou can see the available `tox` test environments by passing `-l` and execute a specific one by passing its name to `-e`. Run `tox -h` for more info.\n\nTests\n~~~~~\n\nUse `pytest` to manually run the test suite::\n\n    pytest\n\nOr via `tox` for a specific python version::\n\n    tox -e py310\n\n\nCode Checks\n~~~~~~~~~~~\nWe run ``black``, ``flake8``, ``mypy``, and a few other minor checkers on the code base. Our linting and code check pipeline is run whenever you commit or push. If you'd like to run it manually you can do so with the following::\n\n    pre_commit run --color=always {posargs:--all}\n\nIndividual calls to the tools are configured in ``.pre-commit-config.yaml``. If you'd like to run a specific tool on its own you can see how we call them there.\n\nYou can run all the linting tools with tox as well::\n\n    tox -e lint\n\n\nDocumentation\n~~~~~~~~~~~~~\n\nAIT uses Sphinx to build its documentation. You can build the documentation with::\n\n    poetry run build_sphinx\n\nTo view the documentation, open ``doc/build/html/index.html`` in a web browser. If you just want to check that the docs build is working you can use tox::\n\n    tox -e docs\n\nIf you need to update the auto-generated documentation you can run the following command to rebuild all of the package documentation::\n\n    sphinx-apidoc --separate --force --no-toc -o doc/source ait --implicit-namespaces\n\nPlease make sure to update the docs if changes in a ticket result in the documentation being out of date.\n\n\nProject Workflow\n----------------\nIssue Tracking\n~~~~~~~~~~~~~~\nAll changes need to be made against one or more tickets for tracking purposes. AIT uses GitHub Issues along with Zenhub to track issue in the project. All tickets should have (outside of rare edge-cases):\n\n- A concise title\n- An in-depth description of the problem / request. If reporting a bug, the description should include information on how to reproduce the bug. Also include the version of the code where you’re seeing the bug.\n\nIf you’re going to begin work on a ticket make sure to progress the ticket through the various Pipeline steps as appropriate as well as assigning yourself as an Assignee. If you lack sufficient permissions to do so you can post on the ticket asking for the above to be done for you.\n\nCommit Messages\n~~~~~~~~~~~~~~~\nAIT projects take a fairly standard approach to commit message formatting. You can checkout Tim Pope's blog for a good starting point to figuring out how to format your commit messages. All commit messages should reference a ticket in their title / summary line::\n\n    Issue #248 - Show an example commit message title\n\nThis makes sure that tickets are updated on GitHub with references to commits that are related to them.\n\nCommit should always be atomic. Keep solutions isolated whenever possible. Filler commits such as \"clean up white space\" or \"fix typo\" should be rebased out before making a pull request. Please ensure your commit history is clean and meaningful!\n\nCode Formatting and Style\n~~~~~~~~~~~~~~~~~~~~~~~~~\nAIT makes a best-effort attempt at sticking with PEP-8 conventions. This is enforced automatically by ``black`` and checked by ``flake8``. You should run the ``pre-commit`` linting pipeline on any changes you make.\n\nTesting\n~~~~~~~\nWe do our best to make sure that all of our changes are tested. If you're fixing a bug you should always have an accompanying unit test to ensure we don't regress!\n\nCheck the Developer Tips section below for information on running each repository's test suite.\n\nPull Requests and Feature Branches\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nAll changes should be isolated to a feature branch that links to a ticket. The standard across AIT projects is to use issue-### for branch names where ### is the issue number found on GitHub.\n\nThe title of a pull request should include a reference to the ticket being fixed as mentioned for commit messages. The description of a pull request should provide an in-depth explanation of the changes present. Note, if you wrote good commit messages this step should be easy!\n\nAny tickets that are resolved by the pull request should be referenced with GitHub's syntax for closing out tickets. Assuming the above ticket we would have the following in a pull request description:\n\nChanges are required to be reviewed by at least one member of the AIT PMC/Committers groups, tests must pass, and the branch must be up to date with master before changes will be merged. If changes are made as part of code review please ensure your commit history is cleaned up.\n\nResolve #248\n--------------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-ammos%2Fait-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnasa-ammos%2Fait-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnasa-ammos%2Fait-core/lists"}