Giter VIP home page Giter VIP logo

iil-dev's Introduction

iil-dev

Development environment for working with Intelligent Instruments Lab tools and repos. Use this environment if you anticipate editing multiple Python packages, otherwise it might be simpler for you to pip install the individual package(s).

Each project is included as a git submodule. This means each project has its own separate git repo and history. You can also make commits to iil-dev which track which commit of each submodule is currently checked out. When you commit to iil-dev, you aren't committing your work on any of the projects -- you are committing a record of their current state in git.

So, always remember to commit your changes within each submodule. If you want to pin dev versions of several projects together, make a commit to iil-dev on your own branch. If you want to change this README or environment.yml, then commit to main of iil-dev.

Install

Clone with submodules:

git clone --recurse-submodules [email protected]:Intelligent-Instruments-Lab/iil-dev.git
cd iil-dev

Clone without submodules and then clone the submodules separately:

git clone [email protected]:Intelligent-Instruments-Lab/iil-dev.git
cd iil-dev
git submodule update --init --recursive

conda

We manage Python versions, non-python dependencies and environments with conda. If you don't have an anaconda/miniconda/miniforge python install already, download a miniforge installer and run it in a terminal (we recommend miniconda). Afterwards, verify with which python -- it should have miniforge in the path.

Now set up the conda Python environment (from within the iil-dev directory):

conda env create -f environment.yml
conda activate iil-dev-env

This will create a conda environment called iil-dev with the poetry tool installed.

Installing individual packages

Now that you have gotten this far, you can make with editable installs of the git submodules in this repo by running poetry install inside of each project, e.g.:

cd anguilla
git checkout main
poetry install

Updating dependencies

We use poetry to manage other dependencies. To add a new dependency to a project, cd into the project (e.g., anguilla, tolvera) and use poetry add, or edit pyproject.toml, then use poetry install.

Test

In a project directory, run pytest.

Release

If you are an owner of a project on PyPI, to make a release:

  1. within the project submodule, make a branch for the release, e.g. git checkout -b v0.1.2
  2. edit pyproject.toml to change any path dependencies to normal pypi dependencies, and update the version number
  3. use poetry build to make sure the project builds
  4. add your PyPI API key to poetry using poetry config pypi-token.pypi <token>
  5. double check the current version number and use poetry publish --build

Contact

Developed by the Intelligent Instruments Lab. Get in touch to collaborate:

iil.isFacebookInstagramX (Twitter)YouTubeDiscordGitHubLinkedInEmail

Funding

The Intelligent Instruments project (INTENT) is funded by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (Grant agreement No. 101001848).

iil-dev's People

Contributors

jarmitage avatar victor-shepardson avatar

Stargazers

Alvaro Obyrne avatar

Watchers

thor magnusson avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.