Python API: Dependencies¶
This is the tested source code for the snippets used in
Managing Data Dependencies. The config file we’re using in this example can
be downloaded
here.
Later on in the script, we use a requirements file. That file can be downloaded
here.
Setup¶
>>> import datafs
We test with the following setup:
>>> api = datafs.get_api(
... config_file='examples/snippets/resources/datafs_mongo.yml')
...
This assumes that you have the provided config file at the above location.
clean up any previous test failures
>>> try:
... api.delete_archive('my_archive')
... except (KeyError, OSError):
... pass
...
>>> try:
... api.manager.delete_table('DataFiles')
... except KeyError:
... pass
...
Add a fresh manager table:
>>> api.manager.create_archive_table('DataFiles')
Example 1¶
Displayed example 1 code
>>> my_archive = api.create('my_archive')
>>> with my_archive.open('w+',
... dependencies={'archive2': '1.1', 'archive3': None}) as f:
...
... res = f.write(u'contents depend on archive 2 v1.1')
...
>>> my_archive.get_dependencies()
{'archive2': '1.1', 'archive3': None}
The last line of this test cannot be tested directly (exact dictionary formatting is unstable), so is tested in a second block:
>>> my_archive.get_dependencies() == {
... 'archive2': '1.1', 'archive3': None}
...
True
Example 2¶
Displayed example 2 code
>>> with my_archive.open('w+') as f:
...
... res = f.write(u'contents depend on archive 2 v1.2')
...
>>> my_archive.set_dependencies({'archive2': '1.2'})
>>> my_archive.get_dependencies()
{'archive2': '1.2'}
The last line of this test cannot be tested directly (exact dictionary formatting is unstable), so is tested in a second block:
>>> my_archive.get_dependencies() == {'archive2': '1.2'}
True
Example 3¶
The following text is displayed to demonstrate the file contents:
1 2 | dep1==1.0
dep2==0.4.1a3
|
The following code creates the actual file contents
Example 4¶
We test with the following setup:
>>> api = datafs.get_api(
... config_file='examples/snippets/resources/datafs_mongo.yml',
... requirements='examples/snippets/resources/requirements_data.txt')
...
Example:
>>> api = datafs.get_api(
... requirements = 'requirements_data.txt')
...
>>>
>>> my_archive = api.get_archive('my_archive')
>>> with my_archive.open('w+') as f:
... res = f.write(u'depends on dep1 and dep2')
...
>>> my_archive.get_dependencies()
{'dep1': '1.0', 'dep2': '0.4.1a3'}
The last line of this test cannot be tested directly (exact dictionary formatting is unstable), so is tested in a second block:
>>> my_archive.get_dependencies() == {'dep1': '1.0', 'dep2': '0.4.1a3'}
True
Example 5¶
>>> my_archive.get_dependencies()
{'dep1': '1.0', 'dep2': '0.4.1a3'}
The last line of this test cannot be tested directly (exact dictionary formatting is unstable), so is tested in a second block:
>>> my_archive.get_dependencies() == {'dep1': '1.0', 'dep2': '0.4.1a3'}
True
Example 6¶
>>> my_archive.get_dependencies(version='0.0.1')
{'archive2': '1.1', 'archive3': None}
The last line of this test cannot be tested directly (exact dictionary formatting is unstable), so is tested in a second block:
>>> my_archive.get_dependencies(version='0.0.1') == {
... 'archive2': '1.1', 'archive3': None}
True
Teardown¶
>>> try:
... api.delete_archive('my_archive')
... except KeyError:
... pass
...
>>> api.manager.delete_table('DataFiles')