A python package for handling path aliases.
Project description
pathaliases
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pathaliases-0.0.3.tar.gz
.
File metadata
- Download URL: pathaliases-0.0.3.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed924d233018302f0f224bda4a53f4ac26e7a13d0e860713bac3937506919606 |
|
MD5 | 288838e7ed13a30a22e5e3609dfe8a5a |
|
BLAKE2b-256 | 7007553634467bbcfadb3cb01e30b3a9549a7d2d0e818a677f769bf349aeee2d |
File details
Details for the file pathaliases-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: pathaliases-0.0.3-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15bae1e4711bd730612dc82f6f12b15878370280e5a25b6de3f0e7ce03ece29b |
|
MD5 | 1deca180ef5a0366d892a35f98e82d5f |
|
BLAKE2b-256 | 3cceb20abacdf69d87560cc0150f2a9e1f76c5577909fbb6d952e63ae000b4c4 |