Skip to main content

Standardize and plan out a file structure!

Project description

Path Schema

PyPi Version PyPI Python Version License MIT

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

pathschema-0.2.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

pathschema-0.2.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

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

Hashes for pathschema-0.2.0.tar.gz
Algorithm Hash digest
SHA256 54bccd074f2cc8e8238157db19311f3d060a9acf18573d3d3d2da23b13bb2b5c
MD5 ed7fb87f56ff7bce2558842e20c94695
BLAKE2b-256 c79ee06864c48d584666a0f7a55b2e3d507512f0ffbc3f44660cd156b49bd368

See more details on using hashes here.

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

Hashes for pathschema-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 adfbe39ba064e8dc4148e4e5733f3dfb8cff58680c63d2c7a29ee0d737cb22ed
MD5 aba1e2d2f3c70ade1ece556fdb194960
BLAKE2b-256 7e8cea482daf51e1ca2212c24801bffa29e86083ca0db06fcd7e7a5f03c153ff

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