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/ |
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
pathschema-0.0.1.tar.gz
(12.3 kB
view details)
Built Distribution
File details
Details for the file pathschema-0.0.1.tar.gz
.
File metadata
- Download URL: pathschema-0.0.1.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fba853542c83a5c72413e176e884c668f329bef15d95e119ccb09cc8889132cc |
|
MD5 | e30d7eaeb41100b59528f4b2ef7c8dd9 |
|
BLAKE2b-256 | b23ca62db50edf61da99ab9cbd9a2056925b27a549f31e2d782e7d1c5b2a6cc6 |
File details
Details for the file pathschema-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: pathschema-0.0.1-py3-none-any.whl
- Upload date:
- Size: 9.0 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 | e5603f28fd94192b865be460b487e6aed918d69b539692ff8732715645869989 |
|
MD5 | 1c24f34cd582b673ceb584b34443137e |
|
BLAKE2b-256 | c24b41f23b8923257d7b49a4a205d59f46708899a2c27f7f72c7047257409b44 |