Skip to content

A template for making a new Python project in the Nengo ecosystem

License

Notifications You must be signed in to change notification settings

nengo/nengo-bones

Repository files navigation

Latest PyPI version Python versions

NengoBones

The aim of this project is to automate the configuration of repositories throughout the Nengo ecosystem. The idea is that we can centralize the design and maintenance of "meta" project code (such as CI testing infrastructure) in this project, rather than each repository maintaining that code independently.

The basic methodology for this project is a templating system in which there are common templates for meta files that are populated with data in each downstream project. Projects control this templating through the .nengobones.yml configuration file, which defines the information used to fill in the templates.

Wherever possible, we try to do this templating in such a way that downstream projects will be automatically updated when an update is made in nengo-bones. However, some files cannot be updated automatically and require downstream repos to manually run a script to update those files.

Note that this repository itself is configured using the nengo-bones templating system, so if you would like an example of how to use it, check out the source code.

Installation

NengoBones is designed to be used based on the master branch (although we release occasional stable checkpoints to PyPI). This can be installed via

git clone https://github.com/nengo/nengo-bones.git
pip install -e ./nengo-bones

Basic usage

The first step is to fill in the .nengobones.yml configuration file. You can use the one in this repository as a starting point, or see the documentation for more details. This file should be placed in the top level of your project.

All of the manually generated template files can then be rendered by running this command in the same folder as the .nengobones.yml file:

bones generate

See bones generate --help or the documentation for a full list of command line options.

Documentation