dotsetup


Namedotsetup JSON
Version 0.0.2 PyPI version JSON
download
home_pagehttps://github.com/muhammad-fiaz/dotsetup
SummaryA simple setup tool for Python projects to manage environment variables and configurations ands settings.
upload_time2023-12-01 11:32:41
maintainer
docs_urlNone
authorMuhammad Fiaz
requires_python
licenseMIT
keywords configuration management environment variables setup tool
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DotSetup
[![PyPI Version](https://img.shields.io/pypi/v/dotsetup)](https://pypi.org/project/dotsetup/)
[![Python Versions](https://img.shields.io/pypi/pyversions/dotsetup)](https://pypi.org/project/dotsetup/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Downloads](https://img.shields.io/pypi/dm/dotsetup)](https://pypi.org/project/dotsetup/)
[![Last Commit](https://img.shields.io/github/last-commit/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup)
[![GitHub Issues](https://img.shields.io/github/issues/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/issues)
[![GitHub Stars](https://img.shields.io/github/stars/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/stargazers)
[![GitHub Forks](https://img.shields.io/github/forks/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/network)

**DotSetup** is a Python package designed for flexible configuration management, supporting `.ini`, `.json`, `.env`, and custom file types. Simplify the storage and retrieval of settings in your projects effortlessly.

## Table of Contents
1. [DotSetup](#dotsetup)
2. [Features](#features)
3. [Installation](#installation)
4. [Getting Started](#getting-started)
    - [Simple Example](#simple-example)
    - [Breaking down Example](#breaking-down-example)
    - [Custom Path for File Types](#custom-path-for-file-types)
    - [Nested Configurations](#nested-configurations)
5. [Custom File Syntax](#custom-file-syntax)
6. [Contributing](#contributing)
7. [Code of Conduct](#code-of-conduct)
8. [License](#license)
9. [Support the Project](#support-the-project)


## Features

- **Multi-format Support:** Seamlessly handle configurations from files like `.ini`, `.json`, `.env`, and custom file types.
- **Intuitive API:** Easy-to-use methods for 🔄 loading, accessing, and saving configurations.
- **File Type Extension:** Customize DotSetup to support additional file types beyond the included formats.
- **Nested Configurations:** Load nested configurations from files like `.ini` and `.json` files.
- **Custom File Syntax:** Define your own syntax for custom file types.
- **Custom File Path:** Load configurations from a custom path for different file types.
- **Error Handling:** Handle errors that may occur when loading configurations.
- **Lightweight:** DotSetup is a lightweight package with no external dependencies.
- **Cross-Platform:** DotSetup is compatible with Windows, macOS, and Linux.
- **Open-Source:** DotSetup is an open-source project licensed under the MIT License.


## Installation

```bash
pip install dotsetup
```

## Getting Started
To get started with DotSetup, follow these steps:

Import the DotSetup class in your Python script or project to get started.

## **Simple Example**:
```python
from dotsetup import DotSetup

# Initialize DotSetup
ds = DotSetup()

# Load from env file
value_env = ds.load('version', file_type='env')
print(f"Value from JSON File: {value_env}")
    
```
the above example loads the value of the variable `version` from the `.env` file in the root folder of the project.

## **Breaking down Example:**
```python
from dotsetup import DotSetup, DotSetupException, FileNotFoundError, VariableNotFoundError, JSONDecodeError

def main():
    # Initialize DotSetup
    ds = DotSetup()

    try:
        # Load from JSON file
        value_json = ds.load('database', file_type='json')
        print(f"Value from JSON File: {value_json}")
    except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:
        print(f"Error: {e}")

    try:
        # Load from ENV file with default path
        value_env = ds.load('DATABASE_URL', file_type='env')
        print(f"Value from ENV (default path): {value_env}")
    except (FileNotFoundError, VariableNotFoundError) as e:
        print(f"Error: {e}")

    try:
        # Load from custom file
        value_custom = ds.load('num2', file_type='custom', file_path='config.con')
        print(f"Value from Custom File: {value_custom}")
    except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:
        print(f"Error: {e}")

    try:
        # Load from INI file
        value_ini = ds.load('section1.option1', file_type='ini')
        print(f"Value from INI File: {value_ini}")
    except (FileNotFoundError, VariableNotFoundError) as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    main()
```
here you can also see how to handle errors that may occur when loading configurations.
## Custom Path for File Types
To load configurations from a custom path for different file types:
    
```python  
from dotsetup import DotSetup
ds = DotSetup()

# Load configuration from the specified custom path
value = ds.load('key_name', file_type='type', file_path='path/to/config.con')

```
The default path for the env file is `.env` in the root folder. The default path for the ini file is `config.ini` in the root folder, and the default path for the json file is `config.json` in the root folder. For the custom file, the default path is `config.con` in the root folder. Alternatively, you can specify your own path using the file_path parameter

## Nested Configurations
you can also load the nested configuration from the json and ini files by using the dot notation for example

**json Example:**
```json
{
  "database": {
    "host": "localhost",
    "port": 5432,
    "username": "user",
    "password": "password"
  },
  "api_key": "your_api_key"
}

```
```python
from dotsetup import DotSetup
ds = DotSetup()
# Load value from nested JSON file
value_json = ds.load('database.host', file_type='json', file_path='config.json')
print(f"Value from JSON File: {value_json}")
```

## Custom File Syntax
DotSetup supports custom file types. To use a custom file type, you must define a custom file syntax. The custom file syntax is a dictionary that maps variable names to their values. 

```
USERNAME="johndoe"
PASSWORD="mysecretpassword"
API_KEY="abc123"
NUMBER=1
Numbers={1,2,3,4,5}
num2=(1,2)
num3=[1,2,3]
num4=1.2
str="Hello World"
str2=("Hello World","Hello World")
str3=["Hello World","Hello World"]
LINKS=["https://www.google.com","https://www.facebook.com","https://www.twitter.com"]
LINKS2={"KEY":"https://www.google.com","KEY2":"https://www.facebook.com"}
```
In this example, variables and values are defined using the format key=value. You can define your own syntax for custom files with custom file extension(**filename.custom_extension**) based on your project's requirements. Make sure to follow this syntax when defining your custom file syntax.

## Contributing
Contributions are welcome! Before contributing, please read our Contributing Guidelines to ensure a smooth and collaborative development process.

## Code of Conduct

Please review our Code of Conduct to understand the standards of behavior we expect from contributors and users of this project.

## License
This project is licensed under the [MIT License](). See [LICENSE](LICENSE) for more details.

## Support the Project
<br>
<div align="center">

  <h5> <strong> 💰 You can help me improve more by a little support </strong></h5>
  

[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/muhammadfiaz) [![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://patreon.com/muhammadfiaz) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/muhammadfiaz)
[![Sponsor muhammad-fiaz](https://img.shields.io/badge/Sponsor-%231EAEDB.svg?&style=for-the-badge&logo=GitHub-Sponsors&logoColor=white)](https://github.com/sponsors/muhammad-fiaz)
</div>


## Happy Coding ❤️




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/muhammad-fiaz/dotsetup",
    "name": "dotsetup",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "configuration management environment variables setup tool",
    "author": "Muhammad Fiaz",
    "author_email": "fiazatbusiness@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/22/47/8bfcb562c805dc8b36063bba478c671ce1be374e0f4600b3dc5b645318fa/dotsetup-0.0.2.tar.gz",
    "platform": null,
    "description": "# DotSetup\n[![PyPI Version](https://img.shields.io/pypi/v/dotsetup)](https://pypi.org/project/dotsetup/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/dotsetup)](https://pypi.org/project/dotsetup/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Downloads](https://img.shields.io/pypi/dm/dotsetup)](https://pypi.org/project/dotsetup/)\n[![Last Commit](https://img.shields.io/github/last-commit/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup)\n[![GitHub Issues](https://img.shields.io/github/issues/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/issues)\n[![GitHub Stars](https://img.shields.io/github/stars/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/muhammad-fiaz/dotsetup)](https://github.com/muhammad-fiaz/dotsetup/network)\n\n**DotSetup** is a Python package designed for flexible configuration management, supporting `.ini`, `.json`, `.env`, and custom file types. Simplify the storage and retrieval of settings in your projects effortlessly.\n\n## Table of Contents\n1. [DotSetup](#dotsetup)\n2. [Features](#features)\n3. [Installation](#installation)\n4. [Getting Started](#getting-started)\n    - [Simple Example](#simple-example)\n    - [Breaking down Example](#breaking-down-example)\n    - [Custom Path for File Types](#custom-path-for-file-types)\n    - [Nested Configurations](#nested-configurations)\n5. [Custom File Syntax](#custom-file-syntax)\n6. [Contributing](#contributing)\n7. [Code of Conduct](#code-of-conduct)\n8. [License](#license)\n9. [Support the Project](#support-the-project)\n\n\n## Features\n\n- **Multi-format Support:** Seamlessly handle configurations from files like `.ini`, `.json`, `.env`, and custom file types.\n- **Intuitive API:** Easy-to-use methods for \ud83d\udd04 loading, accessing, and saving configurations.\n- **File Type Extension:** Customize DotSetup to support additional file types beyond the included formats.\n- **Nested Configurations:** Load nested configurations from files like `.ini` and `.json` files.\n- **Custom File Syntax:** Define your own syntax for custom file types.\n- **Custom File Path:** Load configurations from a custom path for different file types.\n- **Error Handling:** Handle errors that may occur when loading configurations.\n- **Lightweight:** DotSetup is a lightweight package with no external dependencies.\n- **Cross-Platform:** DotSetup is compatible with Windows, macOS, and Linux.\n- **Open-Source:** DotSetup is an open-source project licensed under the MIT License.\n\n\n## Installation\n\n```bash\npip install dotsetup\n```\n\n## Getting Started\nTo get started with DotSetup, follow these steps:\n\nImport the DotSetup class in your Python script or project to get started.\n\n## **Simple Example**:\n```python\nfrom dotsetup import DotSetup\n\n# Initialize DotSetup\nds = DotSetup()\n\n# Load from env file\nvalue_env = ds.load('version', file_type='env')\nprint(f\"Value from JSON File: {value_env}\")\n    \n```\nthe above example loads the value of the variable `version` from the `.env` file in the root folder of the project.\n\n## **Breaking down Example:**\n```python\nfrom dotsetup import DotSetup, DotSetupException, FileNotFoundError, VariableNotFoundError, JSONDecodeError\n\ndef main():\n    # Initialize DotSetup\n    ds = DotSetup()\n\n    try:\n        # Load from JSON file\n        value_json = ds.load('database', file_type='json')\n        print(f\"Value from JSON File: {value_json}\")\n    except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:\n        print(f\"Error: {e}\")\n\n    try:\n        # Load from ENV file with default path\n        value_env = ds.load('DATABASE_URL', file_type='env')\n        print(f\"Value from ENV (default path): {value_env}\")\n    except (FileNotFoundError, VariableNotFoundError) as e:\n        print(f\"Error: {e}\")\n\n    try:\n        # Load from custom file\n        value_custom = ds.load('num2', file_type='custom', file_path='config.con')\n        print(f\"Value from Custom File: {value_custom}\")\n    except (FileNotFoundError, VariableNotFoundError, JSONDecodeError) as e:\n        print(f\"Error: {e}\")\n\n    try:\n        # Load from INI file\n        value_ini = ds.load('section1.option1', file_type='ini')\n        print(f\"Value from INI File: {value_ini}\")\n    except (FileNotFoundError, VariableNotFoundError) as e:\n        print(f\"Error: {e}\")\n\nif __name__ == \"__main__\":\n    main()\n```\nhere you can also see how to handle errors that may occur when loading configurations.\n## Custom Path for File Types\nTo load configurations from a custom path for different file types:\n    \n```python  \nfrom dotsetup import DotSetup\nds = DotSetup()\n\n# Load configuration from the specified custom path\nvalue = ds.load('key_name', file_type='type', file_path='path/to/config.con')\n\n```\nThe default path for the env file is `.env` in the root folder. The default path for the ini file is `config.ini` in the root folder, and the default path for the json file is `config.json` in the root folder. For the custom file, the default path is `config.con` in the root folder. Alternatively, you can specify your own path using the file_path parameter\n\n## Nested Configurations\nyou can also load the nested configuration from the json and ini files by using the dot notation for example\n\n**json Example:**\n```json\n{\n  \"database\": {\n    \"host\": \"localhost\",\n    \"port\": 5432,\n    \"username\": \"user\",\n    \"password\": \"password\"\n  },\n  \"api_key\": \"your_api_key\"\n}\n\n```\n```python\nfrom dotsetup import DotSetup\nds = DotSetup()\n# Load value from nested JSON file\nvalue_json = ds.load('database.host', file_type='json', file_path='config.json')\nprint(f\"Value from JSON File: {value_json}\")\n```\n\n## Custom File Syntax\nDotSetup supports custom file types. To use a custom file type, you must define a custom file syntax. The custom file syntax is a dictionary that maps variable names to their values. \n\n```\nUSERNAME=\"johndoe\"\nPASSWORD=\"mysecretpassword\"\nAPI_KEY=\"abc123\"\nNUMBER=1\nNumbers={1,2,3,4,5}\nnum2=(1,2)\nnum3=[1,2,3]\nnum4=1.2\nstr=\"Hello World\"\nstr2=(\"Hello World\",\"Hello World\")\nstr3=[\"Hello World\",\"Hello World\"]\nLINKS=[\"https://www.google.com\",\"https://www.facebook.com\",\"https://www.twitter.com\"]\nLINKS2={\"KEY\":\"https://www.google.com\",\"KEY2\":\"https://www.facebook.com\"}\n```\nIn this example, variables and values are defined using the format key=value. You can define your own syntax for custom files with custom file extension(**filename.custom_extension**) based on your project's requirements. Make sure to follow this syntax when defining your custom file syntax.\n\n## Contributing\nContributions are welcome! Before contributing, please read our Contributing Guidelines to ensure a smooth and collaborative development process.\n\n## Code of Conduct\n\nPlease review our Code of Conduct to understand the standards of behavior we expect from contributors and users of this project.\n\n## License\nThis project is licensed under the [MIT License](). See [LICENSE](LICENSE) for more details.\n\n## Support the Project\n<br>\n<div align=\"center\">\n\n  <h5> <strong> \ud83d\udcb0 You can help me improve more by a little support </strong></h5>\n  \n\n[![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/muhammadfiaz) [![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://patreon.com/muhammadfiaz) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/muhammadfiaz)\n[![Sponsor muhammad-fiaz](https://img.shields.io/badge/Sponsor-%231EAEDB.svg?&style=for-the-badge&logo=GitHub-Sponsors&logoColor=white)](https://github.com/sponsors/muhammad-fiaz)\n</div>\n\n\n## Happy Coding \u2764\ufe0f\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A simple setup tool for Python projects to manage environment variables and configurations ands settings.",
    "version": "0.0.2",
    "project_urls": {
        "Bug Reports": "https://github.com/muhammad-fiaz/dotsetup/issues",
        "Buy me a Coffee!": "https://buymeacoffee.com/muhammadfiaz",
        "GitHub Sponsors": "https://github.com/sponsors/muhammad-fiaz",
        "Homepage": "https://github.com/muhammad-fiaz/dotsetup",
        "Ko-fi": "https://ko-fi.com/muhammadfiaz",
        "Open Collective": "https://opencollective.com/muhammadfiaz",
        "Patreon": "https://patreon.com/muhammadfiaz",
        "Source": "https://github.com/muhammad-fiaz/dotsetup"
    },
    "split_keywords": [
        "configuration",
        "management",
        "environment",
        "variables",
        "setup",
        "tool"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "22478bfcb562c805dc8b36063bba478c671ce1be374e0f4600b3dc5b645318fa",
                "md5": "9a805d86c3725b073313723c0a05ab72",
                "sha256": "4b8ae87ea738e773155c05d42ca38f4290c2531382d020af2b1df8bdcc9696a9"
            },
            "downloads": -1,
            "filename": "dotsetup-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "9a805d86c3725b073313723c0a05ab72",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 10446,
            "upload_time": "2023-12-01T11:32:41",
            "upload_time_iso_8601": "2023-12-01T11:32:41.714110Z",
            "url": "https://files.pythonhosted.org/packages/22/47/8bfcb562c805dc8b36063bba478c671ce1be374e0f4600b3dc5b645318fa/dotsetup-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-01 11:32:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "muhammad-fiaz",
    "github_project": "dotsetup",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "dotsetup"
}
        
Elapsed time: 0.15618s