deriva 1.7.3__py3-none-any.whl → 1.7.5__py3-none-any.whl
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.
- deriva/config/rollback_annotation.py +1 -1
- deriva/core/__init__.py +1 -1
- deriva/core/datapath.py +55 -55
- deriva/core/ermrest_model.py +702 -186
- deriva/core/hatrac_cli.py +3 -5
- deriva/core/hatrac_store.py +9 -20
- deriva/core/mmo.py +379 -0
- deriva/transfer/download/processors/postprocess/transfer_post_processor.py +2 -2
- deriva/transfer/download/processors/query/base_query_processor.py +2 -1
- deriva/transfer/upload/deriva_upload.py +4 -0
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/METADATA +1 -1
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/RECORD +25 -16
- tests/deriva/core/mmo/__init__.py +0 -0
- tests/deriva/core/mmo/base.py +300 -0
- tests/deriva/core/mmo/test_mmo_drop.py +252 -0
- tests/deriva/core/mmo/test_mmo_find.py +90 -0
- tests/deriva/core/mmo/test_mmo_prune.py +196 -0
- tests/deriva/core/mmo/test_mmo_rename.py +222 -0
- tests/deriva/core/mmo/test_mmo_replace.py +180 -0
- tests/deriva/core/test_datapath.py +52 -26
- tests/deriva/core/test_ermrest_model.py +782 -0
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/LICENSE +0 -0
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/WHEEL +0 -0
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/entry_points.txt +0 -0
- {deriva-1.7.3.dist-info → deriva-1.7.5.dist-info}/top_level.txt +0 -0
|
@@ -76,33 +76,33 @@ def define_test_schema(catalog):
|
|
|
76
76
|
)
|
|
77
77
|
isa.create_table(table_def)
|
|
78
78
|
|
|
79
|
-
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
79
|
+
# experiment table definition helper
|
|
80
|
+
def exp_table_def(exp_table_name):
|
|
81
|
+
return _em.Table.define(
|
|
82
|
+
exp_table_name,
|
|
83
|
+
column_defs=[
|
|
84
|
+
_em.Column.define(cname, ctype) for (cname, ctype) in [
|
|
85
|
+
('Name', _em.builtin_types.text),
|
|
86
|
+
('Amount', _em.builtin_types.int4),
|
|
87
|
+
('Time', _em.builtin_types.timestamptz),
|
|
88
|
+
('Type', _em.builtin_types.text),
|
|
89
|
+
('Project Investigator', _em.builtin_types.text),
|
|
90
|
+
('Project_Num', _em.builtin_types.int4),
|
|
91
|
+
('Empty', _em.builtin_types.int4)
|
|
92
|
+
]
|
|
93
|
+
],
|
|
94
|
+
key_defs=[
|
|
95
|
+
_em.Key.define(['Name'])
|
|
96
|
+
],
|
|
97
|
+
fkey_defs=[
|
|
98
|
+
_em.ForeignKey.define(['Type'], SNAME_VOCAB, TNAME_EXPERIMENT_TYPE, ['ID']),
|
|
99
|
+
_em.ForeignKey.define(['Project Investigator', 'Project_Num'], SNAME_ISA, TNAME_PROJECT, ['Investigator', 'Num'])
|
|
91
100
|
]
|
|
92
|
-
|
|
93
|
-
key_defs=[
|
|
94
|
-
_em.Key.define(['Name'])
|
|
95
|
-
],
|
|
96
|
-
fkey_defs=[
|
|
97
|
-
_em.ForeignKey.define(['Type'], SNAME_VOCAB, TNAME_EXPERIMENT_TYPE, ['ID']),
|
|
98
|
-
_em.ForeignKey.define(['Project Investigator', 'Project_Num'], SNAME_ISA, TNAME_PROJECT, ['Investigator', 'Num'])
|
|
99
|
-
]
|
|
100
|
-
)
|
|
101
|
-
isa.create_table(table_def)
|
|
101
|
+
)
|
|
102
102
|
|
|
103
|
-
# create
|
|
104
|
-
|
|
105
|
-
isa.create_table(
|
|
103
|
+
# create experiment tables
|
|
104
|
+
isa.create_table(exp_table_def(TNAME_EXPERIMENT))
|
|
105
|
+
isa.create_table(exp_table_def(TNAME_EXPERIMENT_COPY))
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
def _generate_experiment_entities(types, count):
|
|
@@ -665,6 +665,13 @@ class DatapathTests (unittest.TestCase):
|
|
|
665
665
|
df = DataFrame(results)
|
|
666
666
|
self.assertEqual(len(df), TEST_EXP_MAX)
|
|
667
667
|
|
|
668
|
+
def test_insert_double_fetch(self):
|
|
669
|
+
entities = _generate_experiment_entities(self.types, 2)
|
|
670
|
+
results = self.experiment_copy.insert(entities)
|
|
671
|
+
rows1 = results.fetch()
|
|
672
|
+
rows2 = results.fetch()
|
|
673
|
+
self.assertEqual(rows1, rows2)
|
|
674
|
+
|
|
668
675
|
def test_insert_empty_entities(self):
|
|
669
676
|
results = self.experiment_copy.insert(None)
|
|
670
677
|
self.assertEqual(len(results), 0)
|
|
@@ -728,6 +735,25 @@ class DatapathTests (unittest.TestCase):
|
|
|
728
735
|
with self.assertRaises(TypeError):
|
|
729
736
|
self.experiment_type.update('this is not a dict')
|
|
730
737
|
|
|
738
|
+
def test_delete_whole_path(self):
|
|
739
|
+
self.experiment_copy.insert(_generate_experiment_entities(self.types, 10))
|
|
740
|
+
self.assertEqual(len(self.experiment_copy.entities()), 10)
|
|
741
|
+
self.experiment_copy.path.delete()
|
|
742
|
+
self.assertEqual(len(self.experiment_copy.entities()), 0)
|
|
743
|
+
|
|
744
|
+
def test_delete_filtered_path(self):
|
|
745
|
+
self.experiment_copy.insert(_generate_experiment_entities(self.types, 10))
|
|
746
|
+
expression = self.experiment_copy.column_definitions['Name'] == TEST_EXP_NAME_FORMAT.format(1)
|
|
747
|
+
self.assertEqual(len(self.experiment_copy.filter(expression).entities()), 1)
|
|
748
|
+
self.experiment_copy.filter(expression).delete()
|
|
749
|
+
self.assertEqual(len(self.experiment_copy.filter(expression).entities()), 0)
|
|
750
|
+
|
|
751
|
+
def test_delete_whole_table(self):
|
|
752
|
+
self.experiment_copy.insert(_generate_experiment_entities(self.types, 10))
|
|
753
|
+
self.assertEqual(len(self.experiment_copy.entities()), 10)
|
|
754
|
+
self.experiment_copy.delete()
|
|
755
|
+
self.assertEqual(len(self.experiment_copy.entities()), 0)
|
|
756
|
+
|
|
731
757
|
def test_nondefaults(self):
|
|
732
758
|
nondefaults = {'RID', 'RCB', 'RCT'}
|
|
733
759
|
results = self.experiment.entities()
|
|
@@ -830,4 +856,4 @@ class DatapathTests (unittest.TestCase):
|
|
|
830
856
|
|
|
831
857
|
|
|
832
858
|
if __name__ == '__main__':
|
|
833
|
-
|
|
859
|
+
unittest.main()
|