data_pipeline_api 0.7.0__tar.gz → 0.7.2__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.
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/PKG-INFO +1 -1
- data_pipeline_api-0.7.2/data_pipeline_api/database_file_api.py +67 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/file_api.py +39 -16
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/access_upload.py +230 -107
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/common.py +4 -1
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/download.py +45 -33
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/upload_data_product.py +3 -1
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/standard_api.py +20 -16
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/PKG-INFO +1 -1
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/SOURCES.txt +1 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/build.gradle +0 -4
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/object/example5.h5 +1 -1
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_access_upload.py +2 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_common.py +9 -7
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_standard_api.py +4 -3
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/.gitignore +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/.pylintrc +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/.travis.yml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/LICENSE +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/README.md +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/conda/meta.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/contributing.md +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/__init__.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/data_processing_api.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/file_formats/object_file.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/file_formats/parameter_file.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/git_info.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/metadata.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/metadata_store.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/overrides.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/README.md +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/__init__.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/downloader.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/templates/data_product.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/upload.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api/registry/utils.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/dependency_links.txt +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/entry_points.txt +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/requires.txt +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/data_pipeline_api.egg-info/top_level.txt +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/environment.yml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/examples/example_configs/simple_network_sim_config.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/examples/example_configs/simple_network_sim_upload.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/examples/standard_api_usage.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/build.gradle +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/build.gradle +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessEntry.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessLog.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessLogWriter.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessLogger.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessLoggerFactory.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/AccessLoggerImpl.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/access/NoImplAccessLogger.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/api/FileApi.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/config/Config.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/config/ConfigFactory.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/config/ConfigReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/file/CleanableFileChannel.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/file/FileDirectoryNormaliser.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/file/FileReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/hash/HashMetadataAppender.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/hash/Hasher.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/hash/Sha1Hasher.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/IssueItem.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/MatchingMetadataSelector.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/MetaDataReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/MetadataFactory.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/MetadataItem.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/MetadataSelector.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/ReadOnlyRunMetadata.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/RunMetadata.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/metadata/WriteOnlyRunMetadata.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/overrides/OverridesApplier.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/yaml/BaseYamlReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/yaml/BaseYamlWriter.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/yaml/YamlFactory.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/yaml/YamlReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/main/java/uk/ramp/yaml/YamlWriter.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/access/AccessLoggerTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/api/FileApiIntegrationTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/file/CleanableFileChannelIntegrationTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/file/FileDirectoryNormaliserTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/hash/HashMetadataAppenderTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/hash/Sha1HasherTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/metadata/MatchingMetadataSelectorTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/metadata/MetadataItemTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/metadata/MetadataItemVersionComparisonTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/java/uk/ramp/yaml/BaseYamlWriterTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/resources/config.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/resources/folder/data/metadata.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/file_api/src/test/resources/folder/data/parameter/example1.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/gradle/wrapper/gradle-wrapper.jar +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/gradle/wrapper/gradle-wrapper.properties +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/gradlew +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/gradlew.bat +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/settings.gradle +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/api/StandardApi.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/distribution/Distribution.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/distribution/MinMax.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/distribution/MinMaxDeserializer.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/distribution/MinMaxSerializer.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/estimate/Estimate.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/objects/NumericalArray.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/objects/NumericalArrayImpl.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/objects/StandardArrayDataReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/objects/StandardTable.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/objects/StandardTableDataReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/Component.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/Components.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ComponentsDeserializer.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ComponentsSerializer.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ParameterDataReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ParameterDataReaderImpl.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ParameterDataWriter.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ParameterDataWriterImpl.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/ReadComponent.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/parameters/WriteComponent.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/samples/Sampler.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/samples/Samples.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TOMLFactory.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TOMLInputDecorator.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TOMLMapper.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TOMLOutputDecorator.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TomlReader.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/main/java/uk/ramp/toml/TomlWriter.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/api/StandardApiIntegrationTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/api/StandardApiTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/distribution/DistributionTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/estimate/EstimateTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/parameters/ComponentsDeserializerTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/parameters/ComponentsSerializerTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/parameters/ParameterDataReaderTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/parameters/ParameterDataWriterImplTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/samples/SamplerTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/samples/SamplesTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/toml/TomlReaderPairwiseIntegrationTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/java/uk/ramp/toml/TomlWriterPairwiseIntegrationTest.java +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/config.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/expectedDistribution.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/expectedDistributionCategorical.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/expectedEstimate.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/expectedSamples.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/expectedSamplesMultiple.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/metadata.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/folder/data/parameter/example1.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/location.txt +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/table.csv +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/java_api/standard_api/src/test/resources/table.h5 +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/jitpack.yml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/scripts/convert_access_to_config.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/scripts/release.sh +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/setup.cfg +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/setup.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/__init__.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/conftest.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/config.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/demographics.h5 +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/metadata.yaml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/object/example-v2.h5 +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/object/example.h5 +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/parameter/example-v2.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/data/parameter/example.toml +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/file_formats/test_object_file.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/file_formats/test_parameter_file.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/__init__.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_download.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_downloader.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_upload.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/registry/test_utils.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_data_processing_api.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_file_api.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_git_info.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_metadata_store.py +0 -0
- {data_pipeline_api-0.7.0 → data_pipeline_api-0.7.2}/tests/test_overrides.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from logging import getLogger
|
|
2
|
+
from io import IOBase
|
|
3
|
+
import __main__
|
|
4
|
+
from data_pipeline_api.file_api import FileAPI, RunMetadata
|
|
5
|
+
from data_pipeline_api.registry.download import download_from_configs
|
|
6
|
+
from data_pipeline_api.registry.access_upload import upload_model_run
|
|
7
|
+
from data_pipeline_api.registry.utils import get_access_token, get_remote_options
|
|
8
|
+
|
|
9
|
+
logger = getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DatabaseFileAPI(FileAPI):
|
|
13
|
+
"""The DatabaseFileAPI extends the FileAPI and provides direct access to the
|
|
14
|
+
database, but still mediated by the file system.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
RUN_METADATA_NEEDED_FOR_DOWNLOAD = {RunMetadata.data_registry_url}
|
|
18
|
+
RUN_METADATA_NEEDED_FOR_UPLOAD = {
|
|
19
|
+
RunMetadata.data_directory,
|
|
20
|
+
RunMetadata.run_id,
|
|
21
|
+
RunMetadata.model_version,
|
|
22
|
+
RunMetadata.model_name,
|
|
23
|
+
RunMetadata.open_timestamp,
|
|
24
|
+
RunMetadata.git_sha,
|
|
25
|
+
RunMetadata.git_repo,
|
|
26
|
+
RunMetadata.remote_uri,
|
|
27
|
+
RunMetadata.description,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
def _has_run_metadata(self, keys):
|
|
31
|
+
missing_keys = {key for key in keys if key not in self._run_metadata}
|
|
32
|
+
if missing_keys:
|
|
33
|
+
logger.warning("missing %s", missing_keys)
|
|
34
|
+
return False
|
|
35
|
+
return True
|
|
36
|
+
|
|
37
|
+
def open_for_read(self, **call_metadata) -> IOBase:
|
|
38
|
+
"""Attempt a read, and if it fails, attempt a download and try the read again.
|
|
39
|
+
"""
|
|
40
|
+
try:
|
|
41
|
+
return super().open_for_read(**call_metadata)
|
|
42
|
+
except (KeyError, FileNotFoundError):
|
|
43
|
+
if self._has_run_metadata(DatabaseFileAPI.RUN_METADATA_NEEDED_FOR_DOWNLOAD):
|
|
44
|
+
download_from_configs(
|
|
45
|
+
self._run_metadata,
|
|
46
|
+
[{"where": self.get_read_metadata(call_metadata)}],
|
|
47
|
+
get_access_token(),
|
|
48
|
+
self._root,
|
|
49
|
+
)
|
|
50
|
+
self.load_metadata_store()
|
|
51
|
+
return super().open_for_read(**call_metadata)
|
|
52
|
+
raise
|
|
53
|
+
|
|
54
|
+
def close(self):
|
|
55
|
+
"""Close as normal, then attempt to upload the results to the database.
|
|
56
|
+
"""
|
|
57
|
+
super().close()
|
|
58
|
+
if self._has_run_metadata(DatabaseFileAPI.RUN_METADATA_NEEDED_FOR_UPLOAD):
|
|
59
|
+
upload_model_run(
|
|
60
|
+
config_filename=self._access_log_path,
|
|
61
|
+
model_config_filename=self._config_filename,
|
|
62
|
+
submission_script_filename=self._run_metadata.get(
|
|
63
|
+
RunMetadata.submission_script, __main__.__file__
|
|
64
|
+
),
|
|
65
|
+
remote_options=get_remote_options(),
|
|
66
|
+
token=get_access_token(),
|
|
67
|
+
)
|
|
@@ -75,12 +75,31 @@ class WriteAccess(FileAccess):
|
|
|
75
75
|
return dict(type="write", **super().to_access_log_record(hash_cache))
|
|
76
76
|
|
|
77
77
|
|
|
78
|
+
class RunMetadata:
|
|
79
|
+
run_id = "run_id"
|
|
80
|
+
open_timestamp = "open_timestamp"
|
|
81
|
+
close_timestamp = "close_timestamp"
|
|
82
|
+
data_directory = "data_directory"
|
|
83
|
+
|
|
84
|
+
git_repo = "git_repo"
|
|
85
|
+
git_sha = "git_sha"
|
|
86
|
+
default_input_namespace = "default_input_namespace"
|
|
87
|
+
default_output_namespace = "default_output_namespace"
|
|
88
|
+
data_registry_url = "data_registry_url"
|
|
89
|
+
remote_uri = "remote_uri"
|
|
90
|
+
remote_uri_override = "remote_uri_override"
|
|
91
|
+
model_version = "model_version"
|
|
92
|
+
model_name = "model_name"
|
|
93
|
+
description = "description"
|
|
94
|
+
submission_script = "submission_script"
|
|
95
|
+
|
|
96
|
+
|
|
78
97
|
class FileAPI:
|
|
79
98
|
RESERVED_RUN_METADATA_KEYS = {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
99
|
+
RunMetadata.run_id,
|
|
100
|
+
RunMetadata.open_timestamp,
|
|
101
|
+
RunMetadata.close_timestamp,
|
|
102
|
+
RunMetadata.data_directory,
|
|
84
103
|
}
|
|
85
104
|
|
|
86
105
|
@staticmethod
|
|
@@ -137,7 +156,6 @@ class FileAPI:
|
|
|
137
156
|
self._run_metadata = {}
|
|
138
157
|
|
|
139
158
|
self._open_timestamp = datetime.now()
|
|
140
|
-
self._run_metadata["open_timestamp"] = self._open_timestamp
|
|
141
159
|
logger.debug("open_timestamp = %s", self._open_timestamp)
|
|
142
160
|
|
|
143
161
|
if config_filename is None:
|
|
@@ -153,7 +171,6 @@ class FileAPI:
|
|
|
153
171
|
logger.debug("root = %s", self._root.resolve())
|
|
154
172
|
|
|
155
173
|
self._run_id = self._config.get("run_id", uuid4().hex)
|
|
156
|
-
self._run_metadata["run_id"] = self._run_id
|
|
157
174
|
logger.debug("run_id = %s", self._run_id)
|
|
158
175
|
|
|
159
176
|
self._fail_on_hash_mismatch = self._config.get("fail_on_hash_mismatch", True)
|
|
@@ -165,7 +182,7 @@ class FileAPI:
|
|
|
165
182
|
|
|
166
183
|
data_directory = self._config.get("data_directory", self._root)
|
|
167
184
|
self._unnormalised_data_directory = Path(data_directory)
|
|
168
|
-
|
|
185
|
+
|
|
169
186
|
self._data_directory = FileAPI.normalise_path(
|
|
170
187
|
self._root, self._unnormalised_data_directory
|
|
171
188
|
)
|
|
@@ -181,7 +198,12 @@ class FileAPI:
|
|
|
181
198
|
)
|
|
182
199
|
logger.debug("access_log_path = %s", self._access_log_path)
|
|
183
200
|
|
|
184
|
-
|
|
201
|
+
# Carefully set up the run metadata, preferring overrides from config.
|
|
202
|
+
self._run_metadata["run_id"] = self._run_id
|
|
203
|
+
self._run_metadata["data_directory"] = str(self._unnormalised_data_directory)
|
|
204
|
+
self._run_metadata["open_timestamp"] = self._open_timestamp
|
|
205
|
+
self._run_metadata.update(self._config.get("run_metadata", {}))
|
|
206
|
+
|
|
185
207
|
self._read_overrides = FileAPI.construct_overrides(self._config.get("read", ()))
|
|
186
208
|
self._write_overrides = FileAPI.construct_overrides(
|
|
187
209
|
self._config.get("write", ())
|
|
@@ -215,12 +237,13 @@ class FileAPI:
|
|
|
215
237
|
== read_metadata[MetadataKey.verified_hash]
|
|
216
238
|
):
|
|
217
239
|
logger.debug("verified hash")
|
|
218
|
-
|
|
219
|
-
(
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
240
|
+
else:
|
|
241
|
+
raise ValueError(
|
|
242
|
+
(
|
|
243
|
+
"calculated hash {calculated_hash} != "
|
|
244
|
+
"verified hash {verified_hash}"
|
|
245
|
+
).format(**read_metadata)
|
|
246
|
+
)
|
|
224
247
|
|
|
225
248
|
logger.debug("open('%s', mode='rb')", path)
|
|
226
249
|
file = open(path, mode="rb")
|
|
@@ -276,14 +299,14 @@ class FileAPI:
|
|
|
276
299
|
return file
|
|
277
300
|
|
|
278
301
|
def set_run_metadata(self, key: str, value: Any):
|
|
279
|
-
"""Set run-level metadata.
|
|
302
|
+
"""Set the value for a run-level metadata key.
|
|
280
303
|
"""
|
|
281
304
|
if key in FileAPI.RESERVED_RUN_METADATA_KEYS:
|
|
282
305
|
raise ValueError(f"{key} is reserved")
|
|
283
306
|
self._run_metadata[key] = value
|
|
284
307
|
|
|
285
308
|
def get_run_metadata(self, key: str) -> Any:
|
|
286
|
-
"""Get run-level metadata.
|
|
309
|
+
"""Get the value for a run-level metadata key.
|
|
287
310
|
"""
|
|
288
311
|
return self._run_metadata[key]
|
|
289
312
|
|