PyPi Version PyPI Python Version License MIT
pip install pathschema
from pathschema import validate schema = 'YOUR SCHEMA HERE' path_to_validate = './path' with open('path/to/schema.pathschema', 'r') as f: schema = f.read() result = validate(path_to_validate, schema) if(result.has_error()): print('Invalid') else: print('Valid')
| Symbol | Description | Example |
|---|---|---|
/ |
Slashes at the end of the name marks this path as a folder | root/ |
"" |
Quotes adds regex validation to the file name | "file[0-9]{3}" |
""/ |
Quotes with a slash adds regex validation to the folder name | "folder[0-9]{3}"/ |
* |
Unix style pattern matching for files | *.txt |
*/ |
Unix style pattern matching for folders | log_*/ |
... |
Allows any (and nested) files and folder | ... |
+ |
A + at the start makes the file or folder required |
+required_file.txt |
- |
A - at the start makes the file or folder forbidden |
-forbidden_folder/ |
# |
Write a comment | # cool comment |
pathschema can be used directly in the command line.
python -m pathschema ./.pathschema path/to/dir/to/validate
Argument details:
usage: __main__.py [-h] [--errors-only] schema directory Validate a directory against a schema positional arguments: schema Path to schema file directory Path to directory to validate options: -h, --help show this help message and exit --errors-only Only show errors
Installing
python -m pip install -r ./requirements.txt
python -m build
python -m pip install -e .Running tests
python -m unittest discover -v -s ./tests -p test_*.pyCommand line without installing
python ./pathschema/ ./tests/experimentations/test_schema.pathschema ./tests/experimentations/test_directory_ok
Example:
assets/ textures/ *.gif *.png materials/ "(trans|solid)_.+\.mat" +README.md
videos/ *.mp4 *.flv
This structure would be valid.
videos/ robots.mp4 planets.flv my-mix-tape.flv
This structure would be invalid. (.png and .jpg is not allowed)
videos/ office.png robots.jpg
assets/ ...
Any files and directories would be valid in the assets folder.
assets/ banner.png backgrounds/ bg_black.png bg_white.png
example/ */ * +README.md
This structure would be valid.
example/ things/ file.txt README.md morethings/ README.md
This structure would be invalid. (Missing README.md)
example/ things/ file.txt morethings/