albert 1.13.0b2__tar.gz → 1.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- albert-1.14.1/AGENTS.md +163 -0
- {albert-1.13.0b2 → albert-1.14.1}/CHANGELOG.md +8 -1
- {albert-1.13.0b2 → albert-1.14.1}/PKG-INFO +1 -1
- albert-1.14.1/docs/assets/Albert_Wordmark_Mono_RGB_White.svg +15 -0
- albert-1.14.1/docs/assets/Albert_Wordmark_RGB_Colour.svg +15 -0
- albert-1.14.1/docs/assets/favicon_bw.svg +4 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/index.md +2 -2
- albert-1.14.1/docs/resources/acls.md +1 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/styles/extra.css +9 -2
- {albert-1.13.0b2 → albert-1.14.1}/mkdocs.yml +3 -2
- {albert-1.13.0b2 → albert-1.14.1}/scripts/validate_version_bump.py +11 -3
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/__init__.py +1 -1
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/attachments.py +17 -11
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/projects.py +9 -9
- albert-1.14.1/src/albert/collections/worksheets.py +283 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/auth/_listener.py +4 -2
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/enums.py +1 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/acls.py +26 -2
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/notebooks.py +26 -2
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/property_data.py +61 -1
- albert-1.14.1/src/albert/utils/worksheets.py +90 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_inventory.py +3 -2
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_property_data.py +152 -1
- albert-1.13.0b2/docs/assets/Vector_Favicon_Blue.svg +0 -4
- albert-1.13.0b2/docs/assets/Wordmark_Black.png +0 -0
- albert-1.13.0b2/docs/assets/Wordmark_White.png +0 -0
- albert-1.13.0b2/src/albert/collections/worksheets.py +0 -118
- {albert-1.13.0b2 → albert-1.14.1}/.circleci/config.yml +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/.gitignore +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/.pre-commit-config.yaml +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/.vscode/settings.json +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/CONTRIBUTING.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/LICENSE +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/README.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/CONTRIBUTING.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/albert.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/authentication.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/activities.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/attachments.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/base.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/batch_data.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/btdataset.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/btinsight.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/btmodel.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/cas.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/companies.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/custom_fields.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/custom_templates.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/data_columns.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/data_templates.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/entity_types.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/files.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/hazards.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/inventory.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/links.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/lists.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/locations.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/lots.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/notebooks.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/notes.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/parameter_groups.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/parameters.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/pricings.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/product_design.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/projects.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/property_data.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/reports.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/roles.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/storage_classes.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/storage_locations.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/substances.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/synthesis.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/tags.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/tasks.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/un_numbers.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/units.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/users.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/workflows.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/collections/worksheets.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/concepts.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/configuration.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/credentials.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/examples/inventory.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/examples/notebook.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/examples/property_data.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/examples/tasks.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/installation.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/migration.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/activities.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/attachments.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/batch_data.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/btdataset.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/btinsight.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/btmodel.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/cas.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/companies.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/custom_fields.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/custom_templates.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/data_columns.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/data_templates.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/entity_types.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/files.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/hazards.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/identifiers.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/inventory.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/links.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/lists.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/locations.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/lots.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/notebooks.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/notes.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/parameter_groups.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/parameters.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/pricings.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/product_design.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/projects.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/property_data.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/reports.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/roles.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/sheets.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/storage_classes.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/storage_locations.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/substances.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/synthesis.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/tags.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/tasks.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/un_numbers.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/units.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/users.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/workflows.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/resources/worksheets.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/docs/sso.md +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/pyproject.toml +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/scripts/validate_release_tag.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/setup.sh +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/client.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/activities.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/base.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/batch_data.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/btdataset.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/btinsight.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/btmodel.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/cas.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/companies.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/custom_fields.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/custom_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/data_columns.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/data_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/entity_types.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/files.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/hazards.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/inventory.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/links.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/lists.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/lots.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/notebooks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/notes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/parameter_groups.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/parameters.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/pricings.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/product_design.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/property_data.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/report_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/reports.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/roles.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/storage_classes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/storage_locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/substance.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/synthesis.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/tags.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/tasks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/un_numbers.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/units.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/users.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/collections/workflows.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/auth/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/auth/_manager.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/auth/credentials.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/auth/sso.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/base.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/logging.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/pagination.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/session.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/identifiers.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/models/base.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/models/patch.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/core/shared/types.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/exceptions.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/_mixins.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/activities.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/attachments.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/batch_data.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/btdataset.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/btinsight.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/btmodel.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/cas.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/companies.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/custom_fields.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/custom_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/data_columns.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/data_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/entity_types.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/facet.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/files.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/hazards.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/inventory.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/links.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/lists.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/lots.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/notes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/parameter_groups.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/parameters.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/pricings.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/product_design.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/projects.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/property_data.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/report_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/reports.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/roles.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/sheets.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/storage_classes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/storage_locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/substance.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/synthesis.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/tagged_base.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/tags.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/tasks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/un_numbers.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/units.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/users.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/worker_jobs.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/workflows.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/resources/worksheets.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/_auth.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/_patch.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/data_template.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/inventory.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/src/albert/utils/tasks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_activities.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_attachments.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_batch_data.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_btdataset.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_btinsight.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_btmodel.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_cas.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_company.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_custom_fields.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_custom_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_data_columns.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_data_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_entity_types.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_files.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_hazards.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_links.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_lists.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_lots.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_notebooks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_notes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_parameter_groups.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_parameters.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_pricings.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_product_design.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_projects.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_report_templates.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_reports.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_roles.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_storage_classes.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_storage_locations.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_substance.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_tags.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_tasks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_un_number.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_units.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_users.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_workflows.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/collections/test_worksheet.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/conftest.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/core/shared/__init__.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/core/shared/test_identifiers.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/core/shared/test_types.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/core/test_auth.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/data/SDS_HCL.pdf +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/data/dontpanic.jpg +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/resources/test_inventory.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/resources/test_lots.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/resources/test_notebooks.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/resources/test_sheets.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/seeding.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/utils/fake_session.py +0 -0
- {albert-1.13.0b2 → albert-1.14.1}/tests/utils/test_patches.py +0 -0
albert-1.14.1/AGENTS.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# AGENTS
|
|
2
|
+
|
|
3
|
+
This file is the single source of truth for coding-agent guidance in this repo.
|
|
4
|
+
Follow these rules and patterns when making changes.
|
|
5
|
+
|
|
6
|
+
## Rules
|
|
7
|
+
|
|
8
|
+
### Changelog
|
|
9
|
+
|
|
10
|
+
Any change that impacts SDK users must be added to the changelog under the
|
|
11
|
+
appropriate release version, following Keep a Changelog 1.1.0.
|
|
12
|
+
|
|
13
|
+
This includes breaking and non-breaking changes, such as API or naming changes,
|
|
14
|
+
payload/behavior changes, deprecations, or internal refactors that affect
|
|
15
|
+
user-visible behavior.
|
|
16
|
+
|
|
17
|
+
When in doubt, add a changelog entry.
|
|
18
|
+
|
|
19
|
+
### Using Numpy-Style Docstrings
|
|
20
|
+
|
|
21
|
+
Any new public methods and classes in this repository should follow the
|
|
22
|
+
Numpy-style docstring format. This ensures consistency and compatibility with
|
|
23
|
+
mkdocstrings for automated documentation generation.
|
|
24
|
+
|
|
25
|
+
Example:
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
class Cas:
|
|
29
|
+
"""
|
|
30
|
+
Represents a CAS entity.
|
|
31
|
+
|
|
32
|
+
Attributes
|
|
33
|
+
----------
|
|
34
|
+
number : str
|
|
35
|
+
The CAS number.
|
|
36
|
+
name : str, optional
|
|
37
|
+
The name of the CAS.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def from_string(cls, *, number: str) -> "Cas":
|
|
41
|
+
"""
|
|
42
|
+
Creates a Cas object from a string.
|
|
43
|
+
|
|
44
|
+
Parameters
|
|
45
|
+
----------
|
|
46
|
+
number : str
|
|
47
|
+
The CAS number.
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
Cas
|
|
52
|
+
The Cas object created from the string.
|
|
53
|
+
"""
|
|
54
|
+
return cls(number=number)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
When contributing new classes or methods, ensure all public members have
|
|
58
|
+
properly formatted Numpy-style docstrings.
|
|
59
|
+
|
|
60
|
+
## Design Principles
|
|
61
|
+
|
|
62
|
+
1. **Keep it simple** - Avoid over-engineering. Make minimal changes. Don't create massive file diffs or edit unnecessary files. Validate at boundaries, trust internal code based on type hints.
|
|
63
|
+
|
|
64
|
+
2. **Follow existing code patterns** - Check similar code in the codebase before writing new code. Match existing patterns rather than creating new ones.
|
|
65
|
+
|
|
66
|
+
3. **YAGNI** - Only edit files absolutely necessary for the task. Don't add extra configuration unless explicitly needed. Prefer sensible defaults over configurable complexity.
|
|
67
|
+
|
|
68
|
+
4. **Verify by running code** - When guessing about how something works, run the code and verify rather than assuming.
|
|
69
|
+
|
|
70
|
+
5. Verify you haven't over-engineered the solution
|
|
71
|
+
|
|
72
|
+
## Project Basics
|
|
73
|
+
|
|
74
|
+
- Python: >=3.10 (type hints use modern syntax like list[str]).
|
|
75
|
+
- Formatting and linting: Ruff (line length 99). CI and pre-commit enforce this.
|
|
76
|
+
- Commit style: Conventional Commits (type(scope): summary), enforced by hooks.
|
|
77
|
+
|
|
78
|
+
Useful commands:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
./setup.sh
|
|
82
|
+
uv run ruff format .
|
|
83
|
+
uv run ruff check . --fix
|
|
84
|
+
uv run pytest
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Repo Layout
|
|
88
|
+
|
|
89
|
+
- src/albert/collections: API-facing collection classes that call endpoints.
|
|
90
|
+
- src/albert/resources: Pydantic models representing API resources.
|
|
91
|
+
- src/albert/core: Session, pagination, shared enums, and base classes.
|
|
92
|
+
- src/albert/utils: Reusable helper utilities used by collections/resources.
|
|
93
|
+
- docs/: mkdocs content (autogenerated from docstrings via mkdocstrings).
|
|
94
|
+
- tests/: pytest suites, fixtures, and seed helpers.
|
|
95
|
+
|
|
96
|
+
## API and Modeling Conventions
|
|
97
|
+
|
|
98
|
+
- Collections inherit from BaseCollection and accept an AlbertSession.
|
|
99
|
+
- Public collection methods should use @validate_call for runtime validation.
|
|
100
|
+
- Resources use BaseAlbertModel/BaseResource with Pydantic Fields and aliases.
|
|
101
|
+
- Keep API payloads in the wire format (camelCase) via Field(alias=...) and
|
|
102
|
+
model_dump(by_alias=True, mode="json", exclude_none=True).
|
|
103
|
+
- Prefer narrow, explicit payload construction instead of dumping entire models.
|
|
104
|
+
|
|
105
|
+
## Pagination
|
|
106
|
+
|
|
107
|
+
Many list/search methods use AlbertPaginator (src/albert/core/pagination.py).
|
|
108
|
+
Two modes exist:
|
|
109
|
+
|
|
110
|
+
- Offset pagination (PaginationMode.OFFSET)
|
|
111
|
+
- Uses the offset query parameter.
|
|
112
|
+
- Defaults to limit=1000.
|
|
113
|
+
- Continues until Items is empty.
|
|
114
|
+
|
|
115
|
+
- Key pagination (PaginationMode.KEY)
|
|
116
|
+
- Uses startKey and expects lastKey in the response.
|
|
117
|
+
- Page size defaults to backend behavior.
|
|
118
|
+
|
|
119
|
+
Guidelines:
|
|
120
|
+
|
|
121
|
+
- Expose a max_items parameter on public list/search methods where appropriate.
|
|
122
|
+
It is used to stop iteration early regardless of mode.
|
|
123
|
+
- If a method returns an iterator, ensure the paginator is used consistently and
|
|
124
|
+
that the last_key can be inspected for resuming.
|
|
125
|
+
- Use clear docstrings about offset/startKey behavior and max_items semantics.
|
|
126
|
+
|
|
127
|
+
## Testing
|
|
128
|
+
|
|
129
|
+
- Tests use pytest (see tests/).
|
|
130
|
+
- Integration-style tests require environment variables:
|
|
131
|
+
- ALBERT_CLIENT_ID_SDK
|
|
132
|
+
- ALBERT_CLIENT_SECRET_SDK
|
|
133
|
+
- ALBERT_BASE_URL
|
|
134
|
+
- The FakeAlbertSession in tests/utils supports unit-style tests without hitting
|
|
135
|
+
the network. Prefer it for pure behavior/unit tests.
|
|
136
|
+
- Seed helpers live in tests/seeding.py and are reused across fixtures.
|
|
137
|
+
|
|
138
|
+
## Documentation
|
|
139
|
+
|
|
140
|
+
- Docs are built with mkdocs + mkdocstrings.
|
|
141
|
+
- When adding a new resource/collection, add a docs page in docs/ and link it in
|
|
142
|
+
mkdocs.yml (alphabetical in nav).
|
|
143
|
+
- Prefer docstrings for API reference content and keep them Numpy-style.
|
|
144
|
+
|
|
145
|
+
## Release and Versioning
|
|
146
|
+
|
|
147
|
+
- Version is defined in src/albert/**init**.py and read dynamically by Hatch.
|
|
148
|
+
- Releases are created by tagging a version and drafting a GitHub release.
|
|
149
|
+
|
|
150
|
+
## Do/Don’t Summary
|
|
151
|
+
|
|
152
|
+
Do:
|
|
153
|
+
|
|
154
|
+
- Add changelog entries for user-visible changes.
|
|
155
|
+
- Keep docstrings Numpy-style for public APIs.
|
|
156
|
+
- Use ruff for formatting/linting and respect line length 99.
|
|
157
|
+
- Follow existing collection/resource patterns and naming.
|
|
158
|
+
|
|
159
|
+
Don’t:
|
|
160
|
+
|
|
161
|
+
- Add new public APIs without docstrings and tests.
|
|
162
|
+
- Bypass Conventional Commits in commit messages.
|
|
163
|
+
- Introduce new dependencies without strong justification.
|
|
@@ -5,7 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [1.14.0] - 2025-01-29
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added `ACLContainer` model for `{class, fgclist}` ACL payloads.
|
|
13
|
+
- Added `WorksheetCollection.duplicate_sheet` functionality.
|
|
14
|
+
- Added `WorksheetCollection.create_sheet_template` functionality.
|
|
15
|
+
- Added a deprecation warning for `NotebookCopyACL`; formal deprecation planned for 2.0 (use `ACLContainer`).
|
|
9
16
|
|
|
10
17
|
## [1.2.0] - 2025-07-25
|
|
11
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: albert
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.14.1
|
|
4
4
|
Summary: The official Python SDK for the Albert Invent platform.
|
|
5
5
|
Project-URL: Homepage, https://www.albertinvent.com/
|
|
6
6
|
Project-URL: Documentation, https://docs.developer.albertinvent.com/albert-python
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 450.4 124.83">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.cls-1 {
|
|
6
|
+
fill: #fff;
|
|
7
|
+
}
|
|
8
|
+
</style>
|
|
9
|
+
</defs>
|
|
10
|
+
<path class="cls-1" d="M155.73,0v114.36h-18.95V0h18.95Z"/>
|
|
11
|
+
<path class="cls-1" d="M172.72,114.36V0h18.79v45.75c5.88-8.17,16.01-13.4,27.12-13.4,22.06,0,39.05,18.13,39.05,41.98s-16.99,41.99-39.05,41.99c-11.11,0-21.24-4.74-27.12-12.91v10.95h-18.79ZM214.7,49.5c-13.56,0-24.01,10.95-24.01,24.83s10.45,24.83,24.01,24.83,24.01-10.95,24.01-24.83-10.45-24.83-24.01-24.83Z"/>
|
|
12
|
+
<path class="cls-1" d="M342.63,95.57c-6.7,12.58-19.28,20.75-36.11,20.75-24.34,0-41.66-17.32-41.66-41.99s17.48-41.98,40.68-41.98,39.86,18.14,39.86,41.98c0,3.11-.17,5.23-.17,5.72h-61.59c.82,11.6,11.11,20.26,23.03,20.26,10.46,0,15.85-5.06,20.42-12.09l15.52,7.35h0ZM326.61,66.33c-1.14-10.62-9.96-18.46-21.4-18.46s-20.26,9.31-21.4,18.46h42.8Z"/>
|
|
13
|
+
<path class="cls-1" d="M394.25,49.8c-13.88,0-22.38,8.32-22.38,24.82v39.73h-18.79V34.31h18.62v13.72c3.92-9.31,14.12-15.55,28.02-15.55v17.32h-5.47M407.08,6.84h20.33v25.64h22.98v17.33h-22.98v34.14c0,9.55,4.24,13.79,13.43,13.79,3.18,0,6.9-.89,9.55-2.65v18.21c-3.36,1.77-8.49,3.18-15.56,3.18-17.33,0-27.76-10.78-27.76-28.82V6.84h0Z"/>
|
|
14
|
+
<path class="cls-1" d="M119.79,66.31V0h-17.74L0,114.36h24L102.29,26.62v39.7h-18.67c-8.94,0-16.92,5.34-20.34,13.59-3.42,8.25-1.55,17.68,4.77,24l14.47,14.47c6.32,6.32,15.74,8.19,23.99,4.77,8.26-3.42,13.27-11.41,13.27-20.34v-19.49h9.63v-17h-9.63,0ZM102.29,102.8c0,2.13-1.13,3.82-3.1,4.64-.67.28-1.34.42-2,.42-1.27,0-2.47-.51-3.46-1.5l-14.47-14.47c-1.5-1.5-1.9-3.5-1.09-5.47.81-1.97,2.5-3.1,4.64-3.1h19.49v19.49h0Z"/>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 450.4 124.83">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.cls-1 {
|
|
6
|
+
fill: #7d19fe;
|
|
7
|
+
}
|
|
8
|
+
</style>
|
|
9
|
+
</defs>
|
|
10
|
+
<path class="cls-1" d="M155.73,0v114.36h-18.95V0h18.95Z"/>
|
|
11
|
+
<path class="cls-1" d="M172.72,114.36V0h18.79v45.75c5.88-8.17,16.01-13.4,27.12-13.4,22.06,0,39.05,18.13,39.05,41.98s-16.99,41.99-39.05,41.99c-11.11,0-21.24-4.74-27.12-12.91v10.95h-18.79ZM214.7,49.5c-13.56,0-24.01,10.95-24.01,24.83s10.45,24.83,24.01,24.83,24.01-10.95,24.01-24.83-10.45-24.83-24.01-24.83Z"/>
|
|
12
|
+
<path class="cls-1" d="M342.63,95.57c-6.7,12.58-19.28,20.75-36.11,20.75-24.34,0-41.66-17.32-41.66-41.99s17.48-41.98,40.68-41.98,39.86,18.14,39.86,41.98c0,3.11-.17,5.23-.17,5.72h-61.59c.82,11.6,11.11,20.26,23.03,20.26,10.46,0,15.85-5.06,20.42-12.09l15.52,7.35h0ZM326.61,66.33c-1.14-10.62-9.96-18.46-21.4-18.46s-20.26,9.31-21.4,18.46h42.8Z"/>
|
|
13
|
+
<path class="cls-1" d="M394.25,49.8c-13.88,0-22.38,8.32-22.38,24.82v39.73h-18.79V34.31h18.62v13.72c3.92-9.31,14.12-15.55,28.02-15.55v17.32h-5.47M407.08,6.84h20.33v25.64h22.98v17.33h-22.98v34.14c0,9.55,4.24,13.79,13.43,13.79,3.18,0,6.9-.89,9.55-2.65v18.21c-3.36,1.77-8.49,3.18-15.56,3.18-17.33,0-27.76-10.78-27.76-28.82V6.84h0Z"/>
|
|
14
|
+
<path class="cls-1" d="M119.79,66.31V0h-17.74L0,114.36h24L102.29,26.62v39.7h-18.67c-8.94,0-16.92,5.34-20.34,13.59-3.42,8.25-1.55,17.68,4.77,24l14.47,14.47c6.32,6.32,15.74,8.19,23.99,4.77,8.26-3.42,13.27-11.41,13.27-20.34v-19.49h9.63v-17h-9.63,0ZM102.29,102.8c0,2.13-1.13,3.82-3.1,4.64-.67.28-1.34.42-2,.42-1.27,0-2.47-.51-3.46-1.5l-14.47-14.47c-1.5-1.5-1.9-3.5-1.09-5.47.81-1.97,2.5-3.1,4.64-3.1h19.49v19.49h0Z"/>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="2" y="2" width="28" height="28" rx="14" fill="black"/>
|
|
3
|
+
<path d="M22.2329 15.4998V7H19.9031L6.5 21.6587H9.65181L19.9358 10.4118V15.4998H17.4838C16.31 15.4998 15.2613 16.1836 14.8125 17.2417C14.3637 18.2997 14.6091 19.5071 15.4395 20.3175L17.3401 22.1722C18.1705 22.9817 19.4077 23.2221 20.4919 22.7841C21.577 22.3452 22.2348 21.3218 22.2348 20.1772V17.6796H23.5V15.5007H22.2348L22.2329 15.4998ZM19.9348 20.1763C19.9348 20.4495 19.7865 20.6662 19.528 20.7709C19.4403 20.8064 19.3517 20.8246 19.2649 20.8246C19.0988 20.8246 18.9402 20.7591 18.8105 20.6316L16.9099 18.7768C16.7121 18.5838 16.6599 18.3289 16.7672 18.0757C16.8745 17.8235 17.0956 17.6787 17.3765 17.6787H19.9358V20.1763H19.9348Z" fill="white"/>
|
|
4
|
+
</svg>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Albert Python
|
|
2
2
|
|
|
3
3
|
<div class="logo-wrapper">
|
|
4
|
-
<img src="assets/
|
|
5
|
-
<img src="assets/
|
|
4
|
+
<img src="assets/Albert_Wordmark_Mono_RGB_White.svg" class="logo only-dark" alt="Albert Logo">
|
|
5
|
+
<img src="assets/Albert_Wordmark_RGB_Colour.svg" class="logo only-light" alt="Albert Logo">
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
8
|
[](https://app.circleci.com/pipelines/github/albert-labs/albert-python?branch=main)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
::: albert.resources.acls
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--md-primary-fg-color: #
|
|
3
|
-
--md-accent-fg-color: #
|
|
2
|
+
--md-primary-fg-color: #7D19FE;
|
|
3
|
+
--md-accent-fg-color: #7D19FE;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.md-typeset a:hover,
|
|
7
|
+
.md-nav__link:hover,
|
|
8
|
+
.md-nav--primary .md-nav__link:hover,
|
|
9
|
+
.md-nav--secondary .md-nav__link:hover {
|
|
10
|
+
color: #0b62fe;
|
|
4
11
|
}
|
|
5
12
|
|
|
6
13
|
.logo-wrapper {
|
|
@@ -24,8 +24,8 @@ theme:
|
|
|
24
24
|
name: "material"
|
|
25
25
|
font:
|
|
26
26
|
text: Aeonik Regular
|
|
27
|
-
logo: assets/
|
|
28
|
-
favicon: assets/
|
|
27
|
+
logo: assets/Albert_Wordmark_Mono_RGB_White.svg
|
|
28
|
+
favicon: assets/favicon_bw.svg
|
|
29
29
|
features:
|
|
30
30
|
- content.tabs.link # Tabs can contain links
|
|
31
31
|
- content.code.annotate # Annotated code blocks (tooltips)
|
|
@@ -177,6 +177,7 @@ nav:
|
|
|
177
177
|
- Resources:
|
|
178
178
|
- Activities: resources/activities.md
|
|
179
179
|
- Attachments: resources/attachments.md
|
|
180
|
+
- ACL: resources/acls.md
|
|
180
181
|
- Batch Data: resources/batch_data.md
|
|
181
182
|
- Breakthrough:
|
|
182
183
|
- Breakthrough Datasets: resources/btdataset.md
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
|
+
import re
|
|
3
|
+
import subprocess
|
|
2
4
|
import sys
|
|
3
|
-
from os import popen
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
7
|
from packaging import version
|
|
@@ -19,8 +20,15 @@ def main(base_branch: str):
|
|
|
19
20
|
local_path = Path(__file__).parents[1] / version_file
|
|
20
21
|
local_version = extract_version(local_path.read_text())
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
if not re.fullmatch(r"[A-Za-z0-9._/-]+", base_branch) or base_branch.startswith("-"):
|
|
24
|
+
raise ValueError(f"Invalid base branch ref: {base_branch!r}")
|
|
25
|
+
|
|
26
|
+
subprocess.run(["git", "fetch", "origin"], check=True)
|
|
27
|
+
base_contents = subprocess.check_output(
|
|
28
|
+
["git", "show", f"{base_branch}:{version_file}"],
|
|
29
|
+
text=True,
|
|
30
|
+
)
|
|
31
|
+
base_version = extract_version(base_contents)
|
|
24
32
|
|
|
25
33
|
if is_version_bump(local_version, base_version):
|
|
26
34
|
print(f"Version bump detected: {base_version} -> {local_version}")
|
|
@@ -152,20 +152,30 @@ class AttachmentCollection(BaseCollection):
|
|
|
152
152
|
The name of the file, by default ""
|
|
153
153
|
upload_key : str | None, optional
|
|
154
154
|
Override the storage key used when signing and uploading the file.
|
|
155
|
-
Defaults to
|
|
155
|
+
Defaults to ``{parent_id}/{note_id}/{file_name}``.
|
|
156
156
|
|
|
157
157
|
Returns
|
|
158
158
|
-------
|
|
159
159
|
Note
|
|
160
160
|
The created note.
|
|
161
161
|
"""
|
|
162
|
-
|
|
163
|
-
if not upload_name:
|
|
162
|
+
if not (upload_key or file_name):
|
|
164
163
|
raise ValueError("A file name or upload key must be provided for attachment upload.")
|
|
165
164
|
|
|
166
|
-
file_type = mimetypes.guess_type(file_name or upload_name)[0]
|
|
167
|
-
file_collection = self._get_file_collection()
|
|
168
165
|
note_collection = self._get_note_collection()
|
|
166
|
+
note = Note(
|
|
167
|
+
parent_id=parent_id,
|
|
168
|
+
note=note_text,
|
|
169
|
+
)
|
|
170
|
+
registered_note = note_collection.create(note=note)
|
|
171
|
+
if upload_key:
|
|
172
|
+
attachment_name = file_name or Path(upload_key).name
|
|
173
|
+
upload_name = upload_key
|
|
174
|
+
else:
|
|
175
|
+
attachment_name = file_name
|
|
176
|
+
upload_name = f"{parent_id}/{registered_note.id}/{file_name}"
|
|
177
|
+
file_type = mimetypes.guess_type(attachment_name or upload_name)[0]
|
|
178
|
+
file_collection = self._get_file_collection()
|
|
169
179
|
|
|
170
180
|
file_collection.sign_and_upload_file(
|
|
171
181
|
data=file_data,
|
|
@@ -176,16 +186,12 @@ class AttachmentCollection(BaseCollection):
|
|
|
176
186
|
file_info = file_collection.get_by_name(
|
|
177
187
|
name=upload_name, namespace=FileNamespace.RESULT.value
|
|
178
188
|
)
|
|
179
|
-
note = Note(
|
|
180
|
-
parent_id=parent_id,
|
|
181
|
-
note=note_text,
|
|
182
|
-
)
|
|
183
|
-
registered_note = note_collection.create(note=note)
|
|
184
189
|
self.attach_file_to_note(
|
|
185
190
|
note_id=registered_note.id,
|
|
186
|
-
file_name=
|
|
191
|
+
file_name=attachment_name,
|
|
187
192
|
file_key=file_info.name,
|
|
188
193
|
)
|
|
194
|
+
|
|
189
195
|
return note_collection.get_by_id(id=registered_note.id)
|
|
190
196
|
|
|
191
197
|
@validate_call
|
|
@@ -142,17 +142,17 @@ class ProjectCollection(BaseCollection):
|
|
|
142
142
|
----------
|
|
143
143
|
text : str, optional
|
|
144
144
|
Full-text search query.
|
|
145
|
-
status : list
|
|
145
|
+
status : list[str], optional
|
|
146
146
|
Filter by project statuses.
|
|
147
|
-
market_segment : list
|
|
147
|
+
market_segment : list[str], optional
|
|
148
148
|
Filter by market segment.
|
|
149
|
-
application : list
|
|
149
|
+
application : list[str], optional
|
|
150
150
|
Filter by application.
|
|
151
|
-
technology : list
|
|
151
|
+
technology : list[str], optional
|
|
152
152
|
Filter by technology tags.
|
|
153
|
-
created_by : list
|
|
153
|
+
created_by : list[str], optional
|
|
154
154
|
Filter by user names who created the project.
|
|
155
|
-
location : list
|
|
155
|
+
location : list[str], optional
|
|
156
156
|
Filter by location(s).
|
|
157
157
|
from_created_at : str, optional
|
|
158
158
|
Earliest creation date in 'YYYY-MM-DD' format.
|
|
@@ -162,15 +162,15 @@ class ProjectCollection(BaseCollection):
|
|
|
162
162
|
Facet field to filter on.
|
|
163
163
|
facet_text : str, optional
|
|
164
164
|
Facet text to search for.
|
|
165
|
-
contains_field : list
|
|
165
|
+
contains_field : list[str], optional
|
|
166
166
|
Fields to search inside.
|
|
167
|
-
contains_text : list
|
|
167
|
+
contains_text : list[str], optional
|
|
168
168
|
Values to search for within the `contains_field`.
|
|
169
169
|
linked_to : str, optional
|
|
170
170
|
Entity ID the project is linked to.
|
|
171
171
|
my_project : bool, optional
|
|
172
172
|
If True, return only projects owned by current user.
|
|
173
|
-
my_role : list
|
|
173
|
+
my_role : list[str], optional
|
|
174
174
|
User roles to filter by.
|
|
175
175
|
order_by : OrderBy, optional
|
|
176
176
|
Sort order. Default is DESCENDING.
|