A tool to create a directory structure based on a YAML file
Project description
Py Auto Structure
Py Auto Structure is a versatile tool designed to simplify the process of creating directory structures for your Python projects. It leverages YAML files to define project hierarchies and offers a convenient command-line interface for effortless structure creation.
Features
- Project Structure Definition: Define and customize your project structure in a YAML file.
- Command-Line Interface (CLI): Create project directories with ease using simple commands.
- Customization: Tailor the project name and root folder during structure creation.
Installation
pip install py-auto-structure
Usage
1. Using it from the command line
Creating a project structure is as easy as running a command in your terminal. Use the following command, replacing <project_name> with the desired name:
py-structure -p <path_to_be_set> -n <project_name>
Options:
- -p, --path: Path where the parent directory of the project will be set.
- -n, --name: Specify the name of the project and it will be the root of the project.
- --set-yaml: Path to the YAML file containing the project structure definition. Default is an internal project_structure.yaml.
- --yaml: Returns the raw content of the default yaml in order to copy it.
By default, the script looks for the project structure definition in a file named project_structure.yaml in the current directory.
2. Using it as a module
You can also import it as a module and call the function project_build this way:
from project_builder.project_builder import project_build
project_build(path=your_path, yaml_path=your_custom_yaml_path)
Default YAML
Here is as simplified version (in order to improve readability) of the default .yaml used:
project_structure:
- name: data
type: directory
content:
- name: raw
- name: notebooks
type: directory
- name: src
type: directory
content:
- name: __init__.py
type: file
- name: feature1
type: directory
- name: tests
type: directory
- name: docs
type: directory
- name: outputs
type: directory
- name: requirements.txt
type: file
- name: main.py
type: file
content:
>
def main():
print("Hello World!")
if __name__ == "__main__":
main()
You can customize the default passing your own .yaml path to the function but this would create the following structure:
MyProject/
|-- data/
| `-- raw/
|-- notebooks/
|-- src/
| |-- __init__.py
| `-- feature1/
|-- tests/
|-- docs/
|-- outputs/
|-- requirements.txt
|-- main.py
Make sure to follow this structure for the custom yaml:
name: <dirname | filename>
type: <file | directory>
content: <list for directories | string for files>
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
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 py-auto-structure-0.1.3.tar.gz.
File metadata
- Download URL: py-auto-structure-0.1.3.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35a064b302202536f5177c403a7668a0425e739edd05c2261d01ca6735c504b1
|
|
| MD5 |
8007d0fb1d043bb9faacc98608b626c1
|
|
| BLAKE2b-256 |
9ac226fba5ec489fa254c7cea334d7a0b6337ac56e23138e9b95553444749ab5
|
File details
Details for the file py_auto_structure-0.1.3-py3-none-any.whl.
File metadata
- Download URL: py_auto_structure-0.1.3-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e699c927b2ed44486cb44e0e362496d4b10a013cb364f5996b2a2c83d3e9cd9
|
|
| MD5 |
60c613a00c845e1e11c51ffa6d288365
|
|
| BLAKE2b-256 |
77fa6a01518ecbc052f08f59e040f9db97a8e62bd12d121da1c4a75ab23a7e28
|