Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-auto-structure-0.1.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_auto_structure-0.1.3-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

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

Hashes for py-auto-structure-0.1.3.tar.gz
Algorithm Hash digest
SHA256 35a064b302202536f5177c403a7668a0425e739edd05c2261d01ca6735c504b1
MD5 8007d0fb1d043bb9faacc98608b626c1
BLAKE2b-256 9ac226fba5ec489fa254c7cea334d7a0b6337ac56e23138e9b95553444749ab5

See more details on using hashes here.

File details

Details for the file py_auto_structure-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for py_auto_structure-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7e699c927b2ed44486cb44e0e362496d4b10a013cb364f5996b2a2c83d3e9cd9
MD5 60c613a00c845e1e11c51ffa6d288365
BLAKE2b-256 77fa6a01518ecbc052f08f59e040f9db97a8e62bd12d121da1c4a75ab23a7e28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page