Metadata-Version: 2.4
Name: bdgd2opendss
Version: 1.1.0
Summary: BDGD2OpenDSS converts BDGD data into OpenDSS models.
Author-email: Paulo Radatz <paulo.radatz@gmail.com>
License: MIT
Project-URL: Issue Tracker, https://github.com/PauloRadatz/bdgd2opendss/issues
Project-URL: Source, https://github.com/PauloRadatz/bdgd2opendss
Keywords: OpenDSS,Python,Power Systems,Distribution Systems,Energy,OpenDSS
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS.rst
Requires-Dist: click>=8.1.3
Requires-Dist: click-plugins>=1.1.1
Requires-Dist: cligj>=0.7.2
Requires-Dist: customtkinter>=5.1.2
Requires-Dist: darkdetect>=0.8.0
Requires-Dist: docopt>=0.6.2
Requires-Dist: colorama==0.4.6; python_version < "3.13"
Requires-Dist: holidays==0.61; python_version < "3.13"
Requires-Dist: networkx==3.4.2; python_version < "3.13"
Requires-Dist: six==1.16.0; python_version < "3.13"
Requires-Dist: attrs==22.2.0; python_version < "3.12"
Requires-Dist: certifi==2022.12.7; python_version < "3.12"
Requires-Dist: charset-normalizer==3.1.0; python_version < "3.12"
Requires-Dist: Fiona==1.9.2; python_version < "3.12"
Requires-Dist: geopandas==0.12.2; python_version < "3.12"
Requires-Dist: idna==3.4; python_version < "3.12"
Requires-Dist: importlib-metadata==6.1.0; python_version < "3.12"
Requires-Dist: iniconfig==2.0.0; python_version < "3.12"
Requires-Dist: munch==2.5.0; python_version < "3.12"
Requires-Dist: numpy==1.24.2; python_version < "3.12"
Requires-Dist: packaging==24.0; python_version < "3.12"
Requires-Dist: pandas==1.5.3; python_version < "3.12"
Requires-Dist: pluggy<2.0.0,>=1.0.0; python_version < "3.12"
Requires-Dist: pyproj==3.4.1; python_version < "3.12"
Requires-Dist: python-dateutil==2.8.2; python_version < "3.12"
Requires-Dist: pytz==2023.2; python_version < "3.12"
Requires-Dist: requests==2.28.2; python_version < "3.12"
Requires-Dist: shapely==2.0.1; python_version < "3.12"
Requires-Dist: tomli==2.0.1; python_version < "3.12"
Requires-Dist: urllib3==1.26.15; python_version < "3.12"
Requires-Dist: yarg==0.1.9; python_version < "3.12"
Requires-Dist: zipp==3.15.0; python_version < "3.12"
Requires-Dist: pyogrio==0.9.0; python_version < "3.12"
Requires-Dist: pyarrow==17.0.0; python_version < "3.12"
Requires-Dist: setuptools==67.2.0; python_version < "3.12"
Requires-Dist: matplotlib==3.7.1; python_version < "3.12"
Requires-Dist: exceptiongroup==1.1.1; python_version < "3.12"
Requires-Dist: tqdm==4.65.0; python_version < "3.12"
Requires-Dist: attrs==23.2.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: certifi==2024.6.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: charset-normalizer==3.3.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: fiona==1.9.6; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: geopandas==0.14.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: idna==3.7; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: numpy==2.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: packaging==24.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pandas==2.2.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pyproj==3.6.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: python-dateutil==2.9.0.post0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pytz==2024.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: requests==2.32.3; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: shapely==2.0.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: urllib3==2.2.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pyogrio==0.8.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pyarrow==16.1.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: setuptools==71.0.3; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: matplotlib==3.9.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: tqdm==4.66.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: bdgd-tools==1.0.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: beautifulsoup4==4.12.3; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: cffi==1.17.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: cloudpickle==3.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: comtypes==1.4.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: contourpy==1.2.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: cycler==0.12.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: dask==2024.7.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: dask-expr==1.1.9; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: dask-geopandas==0.4.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: distributed==2024.7.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: dss-python==0.15.7; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: dss-python-backend==0.14.5; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: fonttools==4.52.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: fsspec==2024.6.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: Jinja2==3.1.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: Js2Py==0.74; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: kiwisolver==1.4.5; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: locket==1.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: MarkupSafe==2.1.5; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: msgpack==1.0.8; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: partd==1.4.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pillow==10.3.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pipwin==0.5.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: psutil==6.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: py-dss-interface==2.0.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pycparser==2.22; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pyjsparser==2.7.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pyparsing==3.1.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pypiwin32==223; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: PyPrind==2.11.3; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pySmartDL==1.3.4; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: pywin32==306; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: PyYAML==6.0.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: sortedcontainers==2.4.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: soupsieve==2.5; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: tblib==3.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: toolz==0.12.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: tornado==6.4.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: typing_extensions==4.12.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: tzdata==2024.1; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: tzlocal==5.2; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: wheel==0.43.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: zict==3.0.0; python_version >= "3.12" and python_version < "3.13"
Requires-Dist: certifi==2025.11.12; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: colorama==0.4.6; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: geopandas==1.1.1; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: holidays==0.84; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: networkx==3.5; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: numpy==2.3.4; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: packaging==25.0; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: pandas==2.3.3; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: pyarrow==22.0.0; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: pyogrio==0.11.1; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: pyproj==3.7.2; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: python-dateutil==2.9.0.post0; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: pytz==2025.2; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: shapely==2.1.2; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: six==1.17.0; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: tqdm==4.67.1; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: tzdata==2025.2; python_version >= "3.13" and python_version < "3.14"
Requires-Dist: certifi==2026.2.25; python_version >= "3.14"
Requires-Dist: colorama==0.4.6; python_version >= "3.14"
Requires-Dist: geopandas==1.1.3; python_version >= "3.14"
Requires-Dist: holidays==0.93; python_version >= "3.14"
Requires-Dist: iniconfig==2.3.0; python_version >= "3.14"
Requires-Dist: networkx==3.6.1; python_version >= "3.14"
Requires-Dist: numpy==2.4.3; python_version >= "3.14"
Requires-Dist: packaging==26.0; python_version >= "3.14"
Requires-Dist: pandas==3.0.1; python_version >= "3.14"
Requires-Dist: pluggy==1.6.0; python_version >= "3.14"
Requires-Dist: pyarrow==23.0.1; python_version >= "3.14"
Requires-Dist: Pygments==2.19.2; python_version >= "3.14"
Requires-Dist: pyogrio==0.12.1; python_version >= "3.14"
Requires-Dist: pyproj==3.7.2; python_version >= "3.14"
Requires-Dist: pytest==9.0.2; python_version >= "3.14"
Requires-Dist: python-dateutil==2.9.0.post0; python_version >= "3.14"
Requires-Dist: shapely==2.1.2; python_version >= "3.14"
Requires-Dist: six==1.17.0; python_version >= "3.14"
Requires-Dist: tqdm==4.67.3; python_version >= "3.14"
Requires-Dist: tzdata==2025.3; python_version >= "3.14"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: sphinx-rtd-theme; extra == "dev"
Requires-Dist: nbsphinx; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: ipython; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Dynamic: license-file

# bdgd2opendss

`bdgd2opendss` is a powerful tool designed to facilitate the integration and analysis of distribution systems in OpenDSS. It builds on core functionalities initially developed in the `bdgd-tools` project, extending them with new features focused on improving conversion efficiency and accuracy. In addition to its technical benefits, bdgd2opendss serves an important educational purpose, aimed at democratizing Brazilian distribution system modeling by making real Brazilian distribution system models accessible to students and researchers.

## What does `bdgd2opendss` do?

`bdgd2opendss` is responsible solely for converting models from `bdgd` format to OpenDSS format. It is not intended to verify or validate any data contained in `bdgd`.

## Why a New Repository?

`bdgd2opendss` was created to continue and evolve the work from the `bdgd-tools` project with a clearer focus on performing only the conversion from `bdgd` to OpenDSS. While `bdgd-tools` provided a solid foundation, the decision to create a new repository stems from several key reasons:

1. **Streamlined Focus**: `bdgd2opendss` narrows its focus to exclusively performing the conversion from `bdgd` to OpenDSS, ensuring higher efficiency and precision.
2. **Independence**: The new repository allows for more agile development and greater control over the direction of the project. As the primary maintainer of `bdgd2opendss`, I can ensure that the project aligns with my vision and goals for the future of this work.
3. **Future-Proofing**: Since `bdgd-tools` is unlikely to be maintained or used going forward, `bdgd2opendss` provides a fresh start, ensuring continued development and improvements without being tied to the legacy of the previous project. This new repository will serve as the active and evolving tool for users and collaborators in the future.

By creating `bdgd2opendss`, I aim to push the boundaries of what was accomplished in `bdgd-tools`, while ensuring the project remains relevant, focused, and adaptable to the specific challenges of converting `bdgd` models to OpenDSS.

## Acknowledgments

The development of `bdgd2opendss` builds upon the efforts of the contributors to the original `bdgd-tools` project. Special thanks to the following individuals who played a significant role in the success of the original project:

- **Ênio Rodrigues** - The mastermind behind the outstanding code structure that has made the evolution of the tool easier.
- **Paulo Radatz, Lucas Almeida, and Andrey Lopes** - Responsible for creating the mapping between the `bdgd` and OpenDSS models.
- **Professor Lucas Melo, Miguel Casemiro, and Mozart Nogueira** (Universidade Federal do Ceará) - Improved the tool to near completion and performed valuable validations.
- **Professor Carlos Frederico, Guilherme Broslavschi, Ananda, and Raphael Toshio Sakai** (Universidade de São Paulo) - Contributed to the development of important features, such as the addition of coordinates and energymeters.
- **Ana Camila Mamede** (Universidade Federal de Uberlândia)
- **Rodolfo Londero**

Without their dedication and expertise, this continuation of the project would not have been possible.

## Installation

### Install from PyPI (Recommended)

The easiest way to install `bdgd2opendss` is using pip:

```bash
pip install bdgd2opendss
```

The package supports Python 3.11, 3.12, 3.13, and 3.14. Dependencies are automatically installed based on your Python version.

### Install from Source

If you prefer to install from source or need to modify the code:

1. Clone the repository:

```bash
git clone https://github.com/pauloradatz/bdgd2opendss.git
```

2. Navigate to the project directory:

```bash
cd bdgd2opendss
```

3. Install the required dependencies:

```bash
pip install -r requirements_py311.txt  # For Python 3.11
pip install -r requirements_py312.txt  # For Python 3.12
pip install -r requirements_py313.txt  # For Python 3.13
pip install -r requirements_py314.txt  # For Python 3.14
```

4. Install the package in editable mode:

```bash
pip install -e .
```

### Installation Support

If you need support on installation and usage, or if you're interested in learning everything about creating virtual environments, setting up Python projects using PyCharm, and managing Python projects necessary for installation and use, I strongly recommend my Python course [Python Sem Mistérios: Instalação, Ambientes Virtuais e Gerenciamento de Projetos](https://paulo-radatz.kpages.online/pagina-de-vendas-39e03b9e-c528-4d0c-b831-f5593ef0baa7). Aula 6.1 summarizes the process of downloading and installing a repository like this one.

## Usage

After installation, you can start using `bdgd2opendss` by importing it into your Python scripts or running the provided command-line tools. Detailed usage examples can be found in the `examples` folder or in the documentation.

```python
import bdgd2opendss
# Example usage
```

## License

This project is licensed under the MIT License. See the `LICENSE` file for more information.

## Contributing

Contributions to `bdgd2opendss` are welcome! Please refer to our contribution guidelines in `CONTRIBUTING.md` for details on how you can help improve the project.

## How to Cite

If you use `bdgd2opendss` in your academic work, please reference it as follows:

**APA Style:**

    Radatz, P., & Contributors. (2024). bdgd2opendss: A BDGD to OpenDSS conversion tool (Version 1.1.0) [Computer software]. GitHub. https://github.com/pauloradatz/bdgd2opendss

**BibTeX Entry:**

```bibtex
@software{radatz2024bdgd2opendss,
  author = {Paulo Radatz and Contributors},
  title = {bdgd2opendss: A BDGD to OpenDSS conversion tool},
  year = {2024},
  version = {1.1.0},
  url = {https://github.com/pauloradatz/bdgd2opendss}
}
```

If you use another release, substitute the version you installed.

## Contact

For questions, support, or consulting inquiries, please contact Paulo Radatz at [paulo.radatz@gmail.com](mailto:paulo.radatz@gmail.com).

