albert 1.9.2__tar.gz → 1.9.3__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.9.2 → albert-1.9.3}/PKG-INFO +1 -1
- {albert-1.9.2 → albert-1.9.3}/src/albert/__init__.py +1 -1
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/lots.py +118 -3
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/lots.py +17 -0
- {albert-1.9.2 → albert-1.9.3}/.circleci/config.yml +0 -0
- {albert-1.9.2 → albert-1.9.3}/.gitignore +0 -0
- {albert-1.9.2 → albert-1.9.3}/.pre-commit-config.yaml +0 -0
- {albert-1.9.2 → albert-1.9.3}/.vscode/settings.json +0 -0
- {albert-1.9.2 → albert-1.9.3}/CHANGELOG.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/CONTRIBUTING.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/LICENSE +0 -0
- {albert-1.9.2 → albert-1.9.3}/README.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/CONTRIBUTING.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/albert.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/assets/Vector_Favicon_Blue.svg +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/assets/Wordmark_Black.png +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/assets/Wordmark_White.png +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/authentication.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/activities.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/attachments.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/base.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/batch_data.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/btdataset.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/btinsight.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/btmodel.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/cas.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/companies.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/custom_fields.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/custom_templates.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/data_columns.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/data_templates.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/entity_types.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/files.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/hazards.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/inventory.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/links.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/lists.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/locations.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/lots.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/notebooks.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/notes.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/parameter_groups.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/parameters.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/pricings.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/product_design.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/projects.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/property_data.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/reports.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/roles.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/storage_classes.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/storage_locations.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/substances.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/tags.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/tasks.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/un_numbers.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/units.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/users.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/workflows.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/collections/worksheets.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/concepts.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/configuration.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/credentials.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/index.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/installation.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/migration.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/activities.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/attachments.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/batch_data.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/btdataset.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/btinsight.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/btmodel.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/cas.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/companies.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/custom_fields.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/custom_templates.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/data_columns.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/data_templates.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/entity_types.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/files.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/hazards.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/identifiers.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/inventory.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/links.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/lists.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/locations.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/lots.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/notebooks.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/notes.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/parameter_groups.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/parameters.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/pricings.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/product_design.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/projects.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/property_data.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/reports.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/roles.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/sheets.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/storage_classes.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/storage_locations.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/substances.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/tags.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/tasks.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/un_numbers.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/units.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/users.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/workflows.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/resources/worksheets.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/sso.md +0 -0
- {albert-1.9.2 → albert-1.9.3}/docs/styles/extra.css +0 -0
- {albert-1.9.2 → albert-1.9.3}/mkdocs.yml +0 -0
- {albert-1.9.2 → albert-1.9.3}/pyproject.toml +0 -0
- {albert-1.9.2 → albert-1.9.3}/scripts/validate_release_tag.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/scripts/validate_version_bump.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/setup.sh +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/client.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/activities.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/attachments.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/base.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/batch_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/btdataset.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/btinsight.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/btmodel.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/cas.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/companies.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/custom_fields.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/custom_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/data_columns.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/data_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/entity_types.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/files.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/hazards.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/inventory.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/links.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/lists.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/notebooks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/notes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/parameter_groups.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/parameters.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/pricings.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/product_design.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/projects.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/property_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/report_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/reports.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/roles.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/storage_classes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/storage_locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/substance.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/tags.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/tasks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/un_numbers.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/units.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/users.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/workflows.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/collections/worksheets.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/auth/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/auth/_listener.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/auth/_manager.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/auth/credentials.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/auth/sso.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/base.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/logging.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/pagination.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/session.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/enums.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/identifiers.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/models/base.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/models/patch.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/core/shared/types.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/exceptions.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/_mixins.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/acls.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/activities.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/attachments.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/batch_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/btdataset.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/btinsight.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/btmodel.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/cas.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/companies.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/custom_fields.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/custom_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/data_columns.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/data_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/entity_types.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/facet.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/files.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/hazards.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/inventory.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/links.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/lists.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/notebooks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/notes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/parameter_groups.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/parameters.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/pricings.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/product_design.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/projects.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/property_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/report_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/reports.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/roles.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/sheets.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/storage_classes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/storage_locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/substance.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/tagged_base.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/tags.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/tasks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/un_numbers.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/units.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/users.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/workflows.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/resources/worksheets.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/utils/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/utils/_auth.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/utils/_patch.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/src/albert/utils/inventory.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_activities.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_attachments.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_batch_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_btdataset.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_btinsight.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_btmodel.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_cas.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_company.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_custom_fields.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_custom_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_data_columns.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_data_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_entity_types.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_files.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_hazards.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_inventory.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_links.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_lists.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_lots.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_notebooks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_notes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_parameter_groups.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_parameters.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_pricings.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_product_design.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_projects.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_property_data.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_report_templates.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_reports.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_roles.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_storage_classes.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_storage_locations.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_substance.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_tags.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_tasks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_un_number.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_units.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_users.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_workflows.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/collections/test_worksheet.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/conftest.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/core/shared/__init__.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/core/shared/test_identifiers.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/core/shared/test_types.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/core/test_auth.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/data/SDS_HCL.pdf +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/data/dontpanic.jpg +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/resources/test_inventory.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/resources/test_lots.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/resources/test_notebooks.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/resources/test_sheets.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/seeding.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/utils/fake_session.py +0 -0
- {albert-1.9.2 → albert-1.9.3}/tests/utils/test_patches.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: albert
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.3
|
|
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
|
|
@@ -7,10 +7,11 @@ from albert.collections.base import BaseCollection
|
|
|
7
7
|
from albert.core.logging import logger
|
|
8
8
|
from albert.core.pagination import AlbertPaginator
|
|
9
9
|
from albert.core.session import AlbertSession
|
|
10
|
-
from albert.core.shared.enums import PaginationMode
|
|
11
|
-
from albert.core.shared.identifiers import InventoryId, LotId
|
|
10
|
+
from albert.core.shared.enums import OrderBy, PaginationMode
|
|
11
|
+
from albert.core.shared.identifiers import InventoryId, LotId, TaskId
|
|
12
12
|
from albert.core.shared.models.patch import PatchDatum, PatchOperation, PatchPayload
|
|
13
|
-
from albert.resources.
|
|
13
|
+
from albert.resources.inventory import InventoryCategory
|
|
14
|
+
from albert.resources.lots import Lot, LotSearchItem
|
|
14
15
|
|
|
15
16
|
# 14 decimal places for inventory on hand delta calculations
|
|
16
17
|
DECIMAL_DELTA_QUANTIZE = Decimal("0.00000000000000")
|
|
@@ -120,6 +121,120 @@ class LotCollection(BaseCollection):
|
|
|
120
121
|
url = f"{self.base_path}?id={id}"
|
|
121
122
|
self.session.delete(url)
|
|
122
123
|
|
|
124
|
+
@validate_call
|
|
125
|
+
def search(
|
|
126
|
+
self,
|
|
127
|
+
*,
|
|
128
|
+
text: str | None = None,
|
|
129
|
+
inventory_id: InventoryId | list[InventoryId] | None = None,
|
|
130
|
+
location_id: str | list[str] | None = None,
|
|
131
|
+
storage_location_id: str | list[str] | None = None,
|
|
132
|
+
task_id: TaskId | list[TaskId] | None = None,
|
|
133
|
+
category: InventoryCategory | str | list[InventoryCategory | str] | None = None,
|
|
134
|
+
external_barcode_id: str | list[str] | None = None,
|
|
135
|
+
search_field: str | list[str] | None = None,
|
|
136
|
+
source_field: str | list[str] | None = None,
|
|
137
|
+
additional_field: str | list[str] | None = None,
|
|
138
|
+
is_drop_down: bool | None = None,
|
|
139
|
+
order_by: OrderBy = OrderBy.DESCENDING,
|
|
140
|
+
sort_by: str | None = None,
|
|
141
|
+
offset: int | None = None,
|
|
142
|
+
max_items: int | None = None,
|
|
143
|
+
) -> Iterator[LotSearchItem]:
|
|
144
|
+
"""
|
|
145
|
+
Search for Lot records matching the provided filters.
|
|
146
|
+
|
|
147
|
+
⚠️ This method returns partial (unhydrated) entities to optimize performance.
|
|
148
|
+
To retrieve fully detailed entities, use :meth:`get_all` instead.
|
|
149
|
+
|
|
150
|
+
Parameters
|
|
151
|
+
----------
|
|
152
|
+
text : str, optional
|
|
153
|
+
Free-text query matched against lot fields.
|
|
154
|
+
inventory_id : InventoryId or list[InventoryId], optional
|
|
155
|
+
Filter by parent inventory IDs.
|
|
156
|
+
location_id : str or list[str], optional
|
|
157
|
+
Filter by specific location IDs.
|
|
158
|
+
storage_location_id : str or list[str], optional
|
|
159
|
+
Filter by storage location IDs.
|
|
160
|
+
task_id : TaskId or list[TaskId], optional
|
|
161
|
+
Filter by source task IDs.
|
|
162
|
+
category : InventoryCategory or list[str], optional
|
|
163
|
+
Filter by parent inventory categories.
|
|
164
|
+
external_barcode_id : str or list[str], optional
|
|
165
|
+
Filter by external barcode IDs.
|
|
166
|
+
search_field : str or list[str], optional
|
|
167
|
+
Restrict the fields the `text` query searches.
|
|
168
|
+
source_field : str or list[str], optional
|
|
169
|
+
Restrict which fields are returned in the response.
|
|
170
|
+
additional_field : str or list[str], optional
|
|
171
|
+
Request additional columns from the search index.
|
|
172
|
+
is_drop_down : bool, optional
|
|
173
|
+
Use dropdown sanitization for the search text when True.
|
|
174
|
+
order_by : OrderBy, optional
|
|
175
|
+
Sort order for the results, default DESCENDING.
|
|
176
|
+
sort_by : str, optional
|
|
177
|
+
Attribute to sort by.
|
|
178
|
+
offset : int, optional
|
|
179
|
+
Pagination offset to start from.
|
|
180
|
+
max_items : int, optional
|
|
181
|
+
Maximum number of items to return in total. If None, fetches all available items.
|
|
182
|
+
|
|
183
|
+
Returns
|
|
184
|
+
-------
|
|
185
|
+
Iterator[LotSearchItem]
|
|
186
|
+
An iterator of matching partial (unhydrated) lot entities.
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
search_text = text if (text is None or len(text) < 50) else text[:50]
|
|
190
|
+
|
|
191
|
+
def _ensure_list(value):
|
|
192
|
+
if value is None:
|
|
193
|
+
return None
|
|
194
|
+
if isinstance(value, list | tuple | set):
|
|
195
|
+
return list(value)
|
|
196
|
+
return [value]
|
|
197
|
+
|
|
198
|
+
def _format_categories(value):
|
|
199
|
+
raw = _ensure_list(value)
|
|
200
|
+
if raw is None:
|
|
201
|
+
return None
|
|
202
|
+
formatted: list[str] = []
|
|
203
|
+
for category in raw:
|
|
204
|
+
formatted.append(
|
|
205
|
+
category.value if isinstance(category, InventoryCategory) else category
|
|
206
|
+
)
|
|
207
|
+
return formatted
|
|
208
|
+
|
|
209
|
+
params = {
|
|
210
|
+
"offset": offset,
|
|
211
|
+
"order": order_by.value,
|
|
212
|
+
"text": search_text,
|
|
213
|
+
"sortBy": sort_by,
|
|
214
|
+
"isDropDown": is_drop_down,
|
|
215
|
+
"inventoryId": _ensure_list(inventory_id),
|
|
216
|
+
"locationId": _ensure_list(location_id),
|
|
217
|
+
"storageLocationId": _ensure_list(storage_location_id),
|
|
218
|
+
"taskId": _ensure_list(task_id),
|
|
219
|
+
"category": _format_categories(category),
|
|
220
|
+
"externalBarcodeId": _ensure_list(external_barcode_id),
|
|
221
|
+
"searchField": _ensure_list(search_field),
|
|
222
|
+
"sourceField": _ensure_list(source_field),
|
|
223
|
+
"additionalField": _ensure_list(additional_field),
|
|
224
|
+
}
|
|
225
|
+
params = {key: value for key, value in params.items() if value is not None}
|
|
226
|
+
|
|
227
|
+
return AlbertPaginator(
|
|
228
|
+
mode=PaginationMode.OFFSET,
|
|
229
|
+
path=f"{self.base_path}/search",
|
|
230
|
+
session=self.session,
|
|
231
|
+
params=params,
|
|
232
|
+
max_items=max_items,
|
|
233
|
+
deserialize=lambda items: [
|
|
234
|
+
LotSearchItem(**item)._bind_collection(self) for item in items
|
|
235
|
+
],
|
|
236
|
+
)
|
|
237
|
+
|
|
123
238
|
@validate_call
|
|
124
239
|
def get_all(
|
|
125
240
|
self,
|
|
@@ -3,9 +3,11 @@ from typing import Any
|
|
|
3
3
|
|
|
4
4
|
from pydantic import Field, NonNegativeFloat, field_serializer, field_validator
|
|
5
5
|
|
|
6
|
+
from albert.core.base import BaseAlbertModel
|
|
6
7
|
from albert.core.shared.identifiers import InventoryId, LotId
|
|
7
8
|
from albert.core.shared.models.base import BaseResource
|
|
8
9
|
from albert.core.shared.types import MetadataItem, SerializeAsEntityLink
|
|
10
|
+
from albert.resources._mixins import HydrationMixin
|
|
9
11
|
from albert.resources.inventory import InventoryCategory
|
|
10
12
|
from albert.resources.locations import Location
|
|
11
13
|
from albert.resources.storage_locations import StorageLocation
|
|
@@ -143,3 +145,18 @@ class Lot(BaseResource):
|
|
|
143
145
|
@field_serializer("inventory_on_hand", return_type=str)
|
|
144
146
|
def serialize_inventory_on_hand(self, inventory_on_hand: NonNegativeFloat):
|
|
145
147
|
return self._format_decimal(inventory_on_hand)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class LotSearchItem(BaseAlbertModel, HydrationMixin[Lot]):
|
|
151
|
+
"""Lightweight representation of a Lot returned from search()."""
|
|
152
|
+
|
|
153
|
+
id: LotId = Field(alias="albertId")
|
|
154
|
+
inventory_id: InventoryId | None = Field(default=None, alias="parentId")
|
|
155
|
+
parent_name: str | None = Field(default=None, alias="parentName")
|
|
156
|
+
parent_unit: str | None = Field(default=None, alias="parentUnit")
|
|
157
|
+
parent_category: InventoryCategory | None = Field(default=None, alias="parentIdCategory")
|
|
158
|
+
task_id: str | None = Field(default=None, alias="taskId")
|
|
159
|
+
barcode_id: str | None = Field(default=None, alias="barcodeId")
|
|
160
|
+
expiration_date: str | None = Field(default=None, alias="expirationDate")
|
|
161
|
+
manufacturer_lot_number: str | None = Field(default=None, alias="manufacturerLotNumber")
|
|
162
|
+
lot_number: str | None = Field(default=None, alias="number")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|