Microplate and dish definitions for software: outer footprint, well geometry, skirt, material, and the vendor drawing each dimension came from.
Browse them in 3D: https://docs.ramonaoptics.com/tools/labware_viewer.html
pip install labwareor
conda install -c conda-forge labwarefrom labware import load_labware
plates = load_labware()
plate = plates["SBS_96_well_plate"]
print(plate.name) # SBS 96 well
print(plate.well_dimensions.rows, plate.well_dimensions.columns) # 8 12
print(plate.well_dimensions.pitch) # 0.009, in meterslabware/definitions/holds one JSON file per part. The file name, without.json, is the keyload_labware()returns it under.labware/schema.pyis the pydantic model every definition is validated against.labware/labware.v1.schema.jsonis that model published as a JSON schema. Each definition names it in its$schemakey.
Uploads to PyPI are automatic, and the version comes from the git tag, so there is no version number to edit in the source.
A merge to main that changes the package is released on its own: the
pypi workflow runs the tests, creates the tag and a GitHub release, and
publishes.
- If anything in
labware/other than a JSON file changed, such as the schema model or the loader, the minor version goes up. - Otherwise, if a JSON file in
labware/was added, changed or deleted, which is what a new or corrected plate definition is, the patch version goes up. - A merge that only touches files outside
labware/, such as this README, the tests or the CI, is not released.
A major version is always made by hand.
To release by hand, create the tag from the GitHub web interface:
- Open https://github.com/ramonaoptics/labware/releases/new
- Under "Choose a tag", type the new version with a leading
v, for examplev0.1.1, and pick "Create new tag on publish". - Leave the target as
main, click "Generate release notes", then "Publish release".
The pypi workflow then builds the sdist and wheel and publishes them, and
labware.__version__ in the installed package reports that same version.