Пример #1
0
def test_get_relpath():
    relpath = Path('abc')
    assert relpath.get_relpath() is relpath
    assert relpath.get_relpath(os.path.curdir) == relpath
    cwd = os.getcwd()
    pardir = os.path.basename(cwd)
    assert relpath.get_relpath(os.path.pardir) == os.path.join(pardir, 'abc')
Пример #2
0
def test_is_abspath():
    abspath = Path.from_argv()
    assert abspath.is_abspath()
    assert abspath == sys.argv[0]

    relpath = Path('abc')  # rel path
    assert relpath.get_abspath().is_abspath()
    assert relpath.get_abspath() == os.path.abspath('abc')
Пример #3
0
def test_abspath_get_parent_on_unix():
    src_path = os.path.join('/', 'd', 'e')
    path = Path(src_path)
    assert path.get_parent(1) == path.dirname
    assert path.get_parent(1) == os.path.join('/', 'd')
    assert path.get_parent(2) == '/'
    assert path.get_parent(3) is None
    assert path.get_parent(4) is None
Пример #4
0
def test_relpath_get_parent_when_root_is_curdir():
    src_path = os.path.join(os.path.curdir, 'a', 'b', 'c')
    path = Path(src_path)
    assert path.get_parent(1) == path.dirname
    assert path.get_parent(1) == os.path.join(os.path.curdir, 'a', 'b')
    assert path.get_parent(2) == os.path.join(os.path.curdir, 'a')
    assert path.get_parent(3) == os.path.curdir
    for i in range(1, 10):
        assert path.get_parent(3+i) == os.path.join(*([os.path.pardir] * i))
Пример #5
0
def test_path_equals_on_win32():
    # ignore case
    for l, r in itertools.product(['c:', 'C:'], repeat=2):
        assert Path(l) == Path(r)

    # ignore drive sep
    for l, r in itertools.product(['c:\\', 'C:'], repeat=2):
        assert Path(l) == Path(r)

    path_str, path = get_path_from_argv_0()
    assert path == path_str.upper()
    assert path == path_str.lower()
    assert path == os.path.normcase(path_str.upper())
    assert path == os.path.normcase(path_str.lower())
Пример #6
0
def test_path_div():
    ' allow to use `Path() / str()` expr '

    path = Path.from_argv()
    new_path = path / 'abc'
    assert isinstance(path, Path)
    assert new_path == os.path.join(sys.argv[0], 'abc')
Пример #7
0
def pipenv_context(pipfile_path):
    from pipenv.project import Project
    proj = Project(chdir=False)
    proj._pipfile_location = pipfile_path
    activate_this_path = Path(
        proj.virtualenv_location) / 'Scripts' / 'activate_this.py'
    run_py(activate_this_path)
    yield
Пример #8
0
def test_abspath_with_root_on_win32():
    path_str = 'c:\\'
    path = Path(path_str)
    assert os.path.isabs(path_str)
    assert path.is_abspath() == os.path.isabs(path_str)
    assert path.get_abspath().is_abspath()
    assert path.get_abspath() == os.path.abspath(path_str)

    # c: should be abspath
    path_str = 'c:'
    path = Path(path_str)
    assert not os.path.isabs(path_str)
    assert path.is_abspath()
    assert path.get_abspath() == os.path.abspath('c:\\')
Пример #9
0
def test_abspath_dirname_and_name():
    path_str, path = get_path_from_argv_0()
    assert path.dirname == os.path.dirname(path_str)
    assert path.name == os.path.basename(path_str)

    if NT:
        path = Path('a:\\b\\c\\d')
        dirname = path.dirname
        assert str(dirname) == 'a:\\b\\c'
        dirname = dirname.dirname
        assert str(dirname) == 'a:\\b'
        dirname = dirname.dirname
        assert str(dirname) == 'a:\\'

        assert Path('C:').dirname is None
        assert Path('C:\\').dirname is None
    else:
        assert Path('/').dirname is None
Пример #10
0
 def __init__(self, cwd):
     self._local_file = self._get_exists_or_first(NodeInfo.from_path(cwd),
                                                  CONF_NAMES)
     self._global_file = self._get_exists_or_first(
         NodeInfo.from_path(Path.from_home()), CONF_NAMES)
     self._local_conf: dict = None
     self._global_conf: dict = None
     self._is_local_new: bool = None
     self._local_changed = False
Пример #11
0
 def __init__(self):
     self._template_dir = Path(sys.argv[0]).dirname
     self._setup = self._open_text('setup.py')
     self._templates = {}
     self._add_template('install-from-pypi.bat')
     self._add_template('uninstall.bat')
     self._readonlys = {}
     self._add_readonly('install.bat')
     self._add_readonly('upload.bat')
     self._add_readonly('upload_proxy.bat')
Пример #12
0
 def cmds_in_dir(self, path, desc=None):
     if not os.path.isdir(path):
         return
     names = []
     for name in os.listdir(path):
         names.append(Path(name).pure_name)
     msg = 'commands in {}'
     if desc:
         msg += f' ({desc})'
     self.log_info(msg, path)
     self.print_cmds(names)
Пример #13
0
    def __init__(self, ctx: click.Context, root=None):
        if root is None:
            cwd = Path.from_cwd()
        else:
            dirinfo =DirectoryInfo(root)
            if not dirinfo.is_directory():
                ctx.fail(f'{root} is not a dir')
            cwd = dirinfo.path

        from .core.ioc import pkgit_ioc
        pkgit_ioc.register_value('cwd', cwd)
Пример #14
0
def test_path_from_caller_module_root():
    path = Path.from_caller_module_root()
    assert path == __file__

    dot = os.path.abspath('.')
    caller_module_root = [
        m.path_caller_module_root for m in _get_example_modules()
    ]
    assert caller_module_root == [
        os.path.join(dot, 'tests', 'ex_module_2.py'),
        os.path.join(dot, 'tests', 'ex_package_1', '__init__.py'),
        os.path.join(dot, 'tests', 'ex_package_1', '__init__.py'),
        os.path.join(dot, 'tests', 'ex_package_1', '__init__.py'),
        os.path.join(dot, 'tests', 'ex_package_1', '__init__.py'),
    ]
Пример #15
0
    def create(cls, path):
        metadata = PackageMetadata()

        packages = find_packages(where=Path(path).dirname or '.')
        if packages:
            metadata.name = cls.optional_strip('name', packages[0])
        else:
            metadata.name = cls.input_str('name')

        metadata.version = cls.optional_strip('version', metadata.version)

        metadata.author = cls.input_str('author')
        metadata.author_email = cls.input_str('author email')
        metadata.url = cls.input_str('url')

        return metadata
Пример #16
0
    def run(self, argv):
        args = docopt(__doc__)

        # mode
        if args['--with-workdir']:
            self._mode = 'cd'

        p = os.path.abspath(args['<dirpath>'])
        if not os.path.isdir(p):
            self.log_error('{} is not a directory', p)
            exit(1)

        path = Path(p)

        content = self.load_template(self._get_template_name()).format_map(
            {'path': path})

        self.write_script(path, args['--dest'] or path.name, content)
Пример #17
0
    def pick():
        print(yellow('[?]'), 'please pick a file that contains entry points:')
        idx = pick_item(filelist, defidx=find_default_on_files(filelist))
        if idx == -1:
            return

        filepath = filelist[idx]
        content = FileInfo(filepath).read_text()
        matches = re.findall('^def ([^(]+)\\(.+$', content, flags=re.M) # func names

        def find_default_on_funcs(items):
            for wkname in ('cli', 'main',):
                for i, x in enumerate(items):
                    if x == wkname:
                        return i

        if not matches:
            logger.error('no python files was founds from {}.'.format(lightgreen(filepath)))
            return

        print(yellow('[?]'), 'please pick a func from {}:'.format(lightgreen(Path(filepath).name)))
        idx = pick_item(matches, defidx=find_default_on_funcs(matches))
        if idx == -1:
            return
        funcname = matches[idx]

        msg = yellow('[?]')
        msg += 'please input the entry points name (default is {})'.format(
            lightgreen(packages_names[0])
        )
        print(msg, end='')
        entry_points = input().strip() or packages_names[0]

        module_name = filepath[:-3].replace(os.sep, '.') # remove `.py` and more

        script = '{entry_points}={module_name}:{funcname}'.format(
            entry_points=entry_points,
            module_name=module_name,
            funcname=funcname,
        )
        if script not in console_scripts:
            console_scripts.append(script)
        return _pick_more('entry_points')
Пример #18
0
def test_relpath_dirname_and_name():
    path_str = 's'
    path = Path(path_str)

    dirname, name = path.dirname, path.name
    assert str(dirname) == '.'
    assert str(name) == 's'
    dirname, name = dirname.dirname, dirname.name
    assert str(dirname) == '..'
    assert str(name) == '.'
    dirname, name = dirname.dirname, dirname.name
    assert str(dirname) == os.path.join('..', '..')
    assert str(name) == '..'
    dirname, name = dirname.dirname, dirname.name
    assert str(dirname) == os.path.join('..', '..', '..')
    assert str(name) == '..'
    dirname, name = dirname.dirname, dirname.name
    assert str(dirname) == os.path.join('..', '..', '..', '..')
    assert str(name) == '..'
Пример #19
0
 def load_template(self, name):
     path = os.path.join(Path(sys.argv[0]).dirname, 'templates', name)
     return FileInfo(path).read_text()
Пример #20
0
def get_conf_file() -> FileInfo:
    path = Path.from_home() / '.config' / 'clearcache' / 'conf.json'
    return FileInfo(path)
Пример #21
0
def test_abspath_property_on_win32():

    # test root:
    for root_str in ['c:', 'c:\\']:
        root_path = Path(root_str)
        assert root_path.name == 'c:'
Пример #22
0
def test_abspath_propertye_on_unix():

    # test root:
    root_path = Path('/')
    assert root_path.name == '/'
Пример #23
0
def test_relpath_get_parent_when_path_is_pardir():
    src_path = os.path.pardir
    path = Path(src_path)
    assert path.get_parent(1) == path.dirname
    for i in range(1, 10):
        assert path.get_parent(i) == os.path.join(*([os.path.pardir] * (1+i)))
Пример #24
0
def test_get_abspath():
    relpath = Path('abc')
    abspath = relpath.get_abspath()
    assert abspath.is_abspath()
    assert abspath == os.path.abspath('abc')
Пример #25
0
def test_abspath_join():
    # join with pardir
    path = Path.from_argv() / os.path.pardir
    assert path.is_abspath()
    assert path == os.path.dirname(sys.argv[0])
Пример #26
0
def test_is_abspath():
    assert not Path('abc').is_abspath()
Пример #27
0
import coloredlogs
from fsoopify import Path, FileInfo

SCRIPTS_ROOT = os.environ.get('SCRIPTS_ROOT', None)

def get_logger(name):
    logger = logging.getLogger(name)
    coloredlogs.install(
        level='DEBUG',
        logger=logger,
        fmt='[%(levelname)s] %(name)s: %(message)s',
        field_styles={'levelname': {'color': 'cyan'}}
    )
    return logger

MAIN_NAME = Path(sys.argv[0]).name.pure_name

APP_LOGGER = get_logger(MAIN_NAME)

if not SCRIPTS_ROOT:
    APP_LOGGER.error('Please setup the env-var `SCRIPTS_ROOT`')
    exit(1)

if not os.path.isdir(SCRIPTS_ROOT):
    APP_LOGGER.error(f'<{SCRIPTS_ROOT}> is not a dir.')
    exit(2)

class BaseApp:
    ctx: click.Context = None
    path: str = None
    name: str = None
Пример #28
0
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019~2999 - Cologler <*****@*****.**>
# ----------
# a module use for test Path.from_caller_? api
# ----------

from fsoopify import Path

path_caller_file = Path.from_caller_file()
path_caller_module_root = Path.from_caller_module_root()
Пример #29
0
def test_path_from_argv():
    path = Path.from_argv()
    assert path == sys.argv[0]
Пример #30
0
def test_path_from_main_file():
    path = Path.from_main_file()
    assert path.endswith('.py')  # should run by pytest