Skip to main content

A python package for handling path aliases.

Project description

pathaliases

Build Status

A python package for handling path aliases.

Path aliases can be loaded directly from YAML files:

dir/:
  subdir/:
    alias: SUBDIR
    some/other/dir/:
      alias: SUBDIR_2

file.txt: { alias: [FILE, ALTERNATE_ALIAS] }

dir2/:
  extra_keys: are ignored
  alias: 2ndDir

some/very/long/path/:
  into/a/deep/file/hierarchy/:
    can/be/addressed/with: { alias: A_PATH_INDEPENDANT_ALIAS }

Resolving this with pathaliases.resolve_yaml_to_path_strings("aliases.yml") returns a dictionary:

{
    "SUBDIR": "dir/subdir/",
    "SUBDIR_2": "dir/subdir/some/other/dir/"
    "FILE": "file.txt",
    "ALTERNATE_ALIAS": "file.txt",
    "2ndDir": "dir2/",
    "A_PATH_INDEPENDENT_ALIAS": "some/very/long/path/into/a/deep/file/hierarchy/can/be/addressed/with"
}

Which can be used to make codebases independent from paths:

# Before
subdir = "dir/subdir/"
subdir_2 = os.path.join(subdir, subdir_2)

# After: *where* the dirs are is configurable
aliases = pathaliases.resolve_yaml_to_path_strings("aliases.yml")
subdir = aliases["SUBDIR"]
subdir_2 = aliases["SUBDIR_2"]

pathaliases is designed to be:

  • Simple - It just concatenates all the keys that lead up to an alias.

  • Readable - Developers and admins should be able to edit paths easily.

  • Standard - It uses standard file formats and conventions, making it easy to port to other languages.

Installation

Clone the repo:

$ git clone https://github.com/adamkewley/pathaliases.git
$ python setup.py install

Usage

Resolve aliases directly from a YAML file:

import pathaliases

aliases = pathaliases.resolve_yaml_to_path_strings("aliases.yml")

print(aliases["SUBDIR"])  # echoes: "dir/subdir/"

Resolve aliases from a dict:

import pathaliases

aliases_dict = {
    "dir/": {
        "subdir/": {"alias": "SUBDIR"}
    }
}

aliases = pathaliases.resolve_path_strings(aliases_dict)
print(aliases["SUBDIR"])  # echoes: "dir/subdir/"

Substituting Variables

Alias files can also contain variables, templated with ${VARNAME}:

foo/:
  ${var}/:
    alias: ${key}

pathaliases allows you to pass in an environment when evaluating paths:

env = {
  "var": "bar",
  "key": "some_alias"
}

aliases =  pathaliases.resolve_yaml_to_path_strings("aliases.yml", env=env)

aliases == {
  "some_alias": "foo/bar/",
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pathaliases-0.0.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

pathaliases-0.0.3-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file pathaliases-0.0.3.tar.gz.

File metadata

File hashes

Hashes for pathaliases-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ed924d233018302f0f224bda4a53f4ac26e7a13d0e860713bac3937506919606
MD5 288838e7ed13a30a22e5e3609dfe8a5a
BLAKE2b-256 7007553634467bbcfadb3cb01e30b3a9549a7d2d0e818a677f769bf349aeee2d

See more details on using hashes here.

File details

Details for the file pathaliases-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pathaliases-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 15bae1e4711bd730612dc82f6f12b15878370280e5a25b6de3f0e7ce03ece29b
MD5 1deca180ef5a0366d892a35f98e82d5f
BLAKE2b-256 3cceb20abacdf69d87560cc0150f2a9e1f76c5577909fbb6d952e63ae000b4c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page