Standardize and plan out a file structure!
Project description
Path Schema
pip install pathschema
How to use
from pathschema import validate
schema = ''
path_to_validate = './path'
with open('path/to/schema.txt', '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 |
Command line
pathschema can be used directly in the command line.
python -m pathschema path/to/schema.txt 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
Development
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_*.py
Command line without installing
python ./pathschema/ ./tests/experimentations/test_schema.txt ./tests/experimentations/test_directory_ok
Example Schema Definition
Example:
assets/
textures/
*.gif
*.png
materials/
"(trans|solid)_.+\.mat"
+README.md
Only allows .mp4 or .flv in the videos folder
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
Any files and folder allowed in the assets folder
assets/
...
Any files and directories would be valid in the assets folder.
assets/
banner.png
backgrounds/
bg_black.png
bg_white.png
Must have a README.md file
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/
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pathschema-0.2.0.tar.gz.
File metadata
- Download URL: pathschema-0.2.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54bccd074f2cc8e8238157db19311f3d060a9acf18573d3d3d2da23b13bb2b5c
|
|
| MD5 |
ed7fb87f56ff7bce2558842e20c94695
|
|
| BLAKE2b-256 |
c79ee06864c48d584666a0f7a55b2e3d507512f0ffbc3f44660cd156b49bd368
|
File details
Details for the file pathschema-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pathschema-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adfbe39ba064e8dc4148e4e5733f3dfb8cff58680c63d2c7a29ee0d737cb22ed
|
|
| MD5 |
aba1e2d2f3c70ade1ece556fdb194960
|
|
| BLAKE2b-256 |
7e8cea482daf51e1ca2212c24801bffa29e86083ca0db06fcd7e7a5f03c153ff
|