Skip to content

Commit 217e5b6

Browse files
authored
Merge pull request #1 from pennmem/file_paths
File paths
2 parents e9bf3db + cb45c41 commit 217e5b6

5 files changed

Lines changed: 71 additions & 2 deletions

File tree

CHANGELOG.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Changes
22
=======
33

4+
Version 1.1.0
5+
-------------
6+
**2018-05-17**
7+
8+
* Adds helper container class for keeping track of file paths relative to some
9+
mount point
10+
411
Version 1.0.0
512
-------------
613

cml_pipelines/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from .wrapper import task, make_task
55

6-
__version__ = '1.0.0'
6+
__version__ = '1.1.0'
77
version_info = namedtuple("VersionInfo", "major,minor,patch")(*__version__.split('.'))
88

99
logger = logging.getLogger("cml.pipelines")

cml_pipelines/paths.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import os
2+
3+
4+
class FilePaths(object):
5+
""" Paths to files that frequently get passed around to many tasks.
6+
7+
All paths given relative to the root path but are converted to absolute
8+
paths on creation.
9+
10+
Parameters
11+
----------
12+
root: str
13+
Root directory, usually the mount point for RHINO
14+
15+
Notes
16+
-----
17+
All keyword arguments are converted into absolute paths relative to the
18+
given root directory
19+
20+
"""
21+
22+
def __init__(self, root, **kwargs):
23+
self.root = os.path.expanduser(root)
24+
25+
self._keys = []
26+
for key, val in kwargs.items():
27+
stripped_val = val.lstrip('/').rstrip('/')
28+
abs_path = os.path.join(self.root, stripped_val)
29+
setattr(self, key, abs_path)
30+
self._keys.append(key)
31+
32+
def keys(self):
33+
""" List of file path keys that have been defined """
34+
return self._keys
35+

conda.recipe/meta.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ package:
88

99
source:
1010
git_url: ../
11-
# git_rev: {{ 'v' + setup_data['version'] }} # always use tagged version
11+
git_rev: {{ 'v' + setup_data['version'] }} # always use tagged version
1212

1313
build:
1414
# If this is a new build for the same version, increment the build

tests/test_paths.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import os
2+
import pytest
3+
from cml_pipelines.paths import FilePaths
4+
5+
6+
class TestFilePaths:
7+
@classmethod
8+
def setup_class(cls):
9+
cls.test_paths = FilePaths("/mnt/mount_point/", dir1="/base/",
10+
dir2="dir2/")
11+
12+
@pytest.mark.parametrize("basedir", ["basedir", "/basedir", "/basedir/"])
13+
@pytest.mark.parametrize("root", ["/", "~", "mount_point/", "/mount_point/"])
14+
def test_initialize(self, root, basedir):
15+
paths = FilePaths(root, base=basedir)
16+
17+
basedir = basedir.lstrip("/").rstrip("/")
18+
19+
assert paths.root == os.path.expanduser(root)
20+
assert paths.base == os.path.join(os.path.expanduser(root), basedir)
21+
return
22+
23+
def test_keys(self):
24+
keys = self.test_paths.keys()
25+
assert len(keys) == 2
26+
assert "dir1" in keys
27+
assert "dir2" in keys

0 commit comments

Comments
 (0)