added support for ~ expansion

This commit is contained in:
Erik Frojdh 2020-08-19 12:03:32 +02:00
parent 071a1c9f98
commit 57e0fd805e
11 changed files with 41 additions and 1 deletions

View File

@ -95,6 +95,7 @@ class Detector(CppDetectorApi):
@config.setter @config.setter
def config(self, fname): def config(self, fname):
fname = ut.make_string_path(fname)
self.loadConfig(fname) self.loadConfig(fname)
@property @property
@ -119,6 +120,7 @@ class Detector(CppDetectorApi):
@parameters.setter @parameters.setter
def parameters(self, fname): def parameters(self, fname):
fname = ut.make_string_path(fname)
self.loadParameters(fname) self.loadParameters(fname)
@property @property
@ -359,6 +361,7 @@ class Detector(CppDetectorApi):
@fpath.setter @fpath.setter
def fpath(self, path): def fpath(self, path):
path = ut.make_string_path(path)
self.setFilePath(path) self.setFilePath(path)
@property @property
@ -589,6 +592,7 @@ class Detector(CppDetectorApi):
@trimbits.setter @trimbits.setter
def trimbits(self, fname): def trimbits(self, fname):
fname = ut.make_string_path(fname)
self.loadTrimbits(fname) self.loadTrimbits(fname)
@property @property
@ -1040,6 +1044,7 @@ class Detector(CppDetectorApi):
@pattern.setter @pattern.setter
def pattern(self, fname): def pattern(self, fname):
fname = ut.make_string_path(fname)
self.setPattern(fname) self.setPattern(fname)
@property @property

View File

@ -8,6 +8,8 @@ from collections import namedtuple
import _slsdet #C++ lib import _slsdet #C++ lib
import functools import functools
import datetime as dt import datetime as dt
import pathlib
import os
Geometry = namedtuple('Geometry', ['x', 'y']) Geometry = namedtuple('Geometry', ['x', 'y'])
@ -77,6 +79,7 @@ def element(func):
return element_if_equal(func(self, *args, **kwargs)) return element_if_equal(func(self, *args, **kwargs))
return wrapper return wrapper
def eiger_register_to_time(register): def eiger_register_to_time(register):
""" """
Decode register value and return time in s. Values are stored in Decode register value and return time in s. Values are stored in
@ -93,3 +96,15 @@ def make_timedelta(t):
return t return t
else: else:
return dt.timedelta(seconds=t) return dt.timedelta(seconds=t)
def make_string_path(path):
"""
Accepts either a pathlib.Path or a string, expands ~ to user and convert
Path to str
"""
if isinstance(path, pathlib.Path):
return path.expanduser().as_posix()
elif isinstance(path, str):
return os.path.expanduser(path)
else:
raise ValueError("Cannot convert argument to posix path")

View File

@ -7,6 +7,7 @@ Testing functions from utils.py
import pytest import pytest
from slsdet.utils import * from slsdet.utils import *
import datetime as dt import datetime as dt
import pathlib
def test_iterable(): def test_iterable():
assert is_iterable(5) == False assert is_iterable(5) == False
@ -93,4 +94,23 @@ def test_make_timedelta_from_timedelta():
t = dt.timedelta(minutes=1) t = dt.timedelta(minutes=1)
r = make_timedelta(t) r = make_timedelta(t)
assert 60 == r.total_seconds() assert 60 == r.total_seconds()
assert r == dt.timedelta(minutes=1) assert r == dt.timedelta(minutes=1)
def test_make_string_path_from_Path():
pathstr = "/some/temp/path"
p = pathlib.Path(pathstr)
r = make_string_path(p)
assert isinstance(r, str)
assert r == p.as_posix()
assert r == pathstr
def test_make_string_path_expand_user():
pathstr = "~/tmp/virtual.config"
home = pathlib.Path.home()
expanded_str = pathstr.replace('~', home.as_posix())
p = pathlib.Path(pathstr)
rp = make_string_path(p)
rs = make_string_path(pathstr)
assert rp == expanded_str
assert rs == expanded_str