Metadata-Version: 2.4
Name: pydust_utils
Version: 0.1.0
Summary: Python utilities for DUST pre- and postprocessing
Author: Alessandro Cocco
License: MIT
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: AeroSandbox>=4.2.8
Requires-Dist: aiohappyeyeballs>=2.6.1
Requires-Dist: aiohttp>=3.13.0
Requires-Dist: aiosignal>=1.4.0
Requires-Dist: anyio>=4.11.0
Requires-Dist: argon2-cffi>=25.1.0
Requires-Dist: argon2-cffi-bindings>=25.1.0
Requires-Dist: arrow>=1.3.0
Requires-Dist: asttokens>=3.0.0
Requires-Dist: attrs>=25.4.0
Requires-Dist: backcall>=0.2.0
Requires-Dist: beautifulsoup4>=4.14.2
Requires-Dist: bleach>=6.2.0
Requires-Dist: bokeh>=3.8.0
Requires-Dist: Brotli>=1.1.0
Requires-Dist: casadi>=3.7.2
Requires-Dist: certifi>=2025.10.5
Requires-Dist: cffi>=2.0.0
Requires-Dist: charset-normalizer>=3.4.4
Requires-Dist: comm>=0.2.3
Requires-Dist: contourpy>=1.3.3
Requires-Dist: cssselect2>=0.8.0
Requires-Dist: cycler>=0.12.1
Requires-Dist: debugpy>=1.8.17
Requires-Dist: decorator>=5.2.1
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: dill>=0.4.0
Requires-Dist: docopt>=0.6.2
Requires-Dist: et_xmlfile>=2.0.0
Requires-Dist: executing>=2.2.1
Requires-Dist: fastjsonschema>=2.21.2
Requires-Dist: fonttools>=4.60.1
Requires-Dist: fqdn>=1.5.1
Requires-Dist: frozenlist>=1.8.0
Requires-Dist: h11>=0.16.0
Requires-Dist: h5py>=3.15.0
Requires-Dist: idna>=3.11
Requires-Dist: ipykernel>=7.0.1
Requires-Dist: ipympl>=0.9.8
Requires-Dist: ipython>=8.12.3
Requires-Dist: ipython_pygments_lexers>=1.1.1
Requires-Dist: ipywidgets>=8.1.7
Requires-Dist: isoduration>=20.11.0
Requires-Dist: jedi>=0.19.2
Requires-Dist: Jinja2>=3.1.6
Requires-Dist: jsonpointer>=3.0.0
Requires-Dist: jsonschema>=4.25.1
Requires-Dist: jsonschema-specifications>=2025.9.1
Requires-Dist: jupyter-events>=0.12.0
Requires-Dist: jupyter_bokeh>=4.0.5
Requires-Dist: jupyter_client>=8.6.3
Requires-Dist: jupyter_core>=5.8.1
Requires-Dist: jupyter_server>=2.17.0
Requires-Dist: jupyter_server_proxy>=4.4.0
Requires-Dist: jupyter_server_terminals>=0.5.3
Requires-Dist: jupyterlab_pygments>=0.3.0
Requires-Dist: jupyterlab_widgets>=3.0.15
Requires-Dist: kiwisolver>=1.4.9
Requires-Dist: lark>=1.3.0
Requires-Dist: linkify-it-py>=2.0.3
Requires-Dist: lxml>=6.0.2
Requires-Dist: Markdown>=3.9
Requires-Dist: markdown-it-py>=4.0.0
Requires-Dist: MarkupSafe>=3.0.3
Requires-Dist: matplotlib>=3.10.7
Requires-Dist: matplotlib-inline>=0.1.7
Requires-Dist: mdit-py-plugins>=0.5.0
Requires-Dist: mdurl>=0.1.2
Requires-Dist: mistune>=3.1.4
Requires-Dist: more-itertools>=10.8.0
Requires-Dist: msgpack>=1.1.2
Requires-Dist: multidict>=6.7.0
Requires-Dist: narwhals>=2.8.0
Requires-Dist: nbclient>=0.10.2
Requires-Dist: nbconvert>=7.16.6
Requires-Dist: nbformat>=5.10.4
Requires-Dist: nest-asyncio>=1.6.0
Requires-Dist: NeuralFoil>=0.3.2
Requires-Dist: numpy>=2.3.3
Requires-Dist: openpyxl>=3.1.5
Requires-Dist: outcome>=1.3.0.post0
Requires-Dist: packaging>=25.0
Requires-Dist: pandas>=2.3.3
Requires-Dist: pandocfilters>=1.5.1
Requires-Dist: panel>=1.8.2
Requires-Dist: param>=2.2.1
Requires-Dist: parso>=0.8.5
Requires-Dist: pexpect>=4.9.0
Requires-Dist: pickleshare>=0.7.5
Requires-Dist: pillow>=11.3.0
Requires-Dist: pipreqs>=0.5.0
Requires-Dist: platformdirs>=4.5.0
Requires-Dist: pooch>=1.8.2
Requires-Dist: prometheus_client>=0.23.1
Requires-Dist: prompt_toolkit>=3.0.52
Requires-Dist: propcache>=0.4.1
Requires-Dist: psutil>=7.1.0
Requires-Dist: ptyprocess>=0.7.0
Requires-Dist: pure_eval>=0.2.3
Requires-Dist: pycparser>=2.23
Requires-Dist: pydyf>=0.11.0
Requires-Dist: Pygments>=2.19.2
Requires-Dist: pyparsing>=3.2.5
Requires-Dist: pyphen>=0.17.2
Requires-Dist: PySocks>=1.7.1
Requires-Dist: python-dateutil>=2.9.0.post0
Requires-Dist: python-json-logger>=4.0.0
Requires-Dist: pytz>=2025.2
Requires-Dist: pyvista>=0.46.3
Requires-Dist: pyvistaqt>=0.11.3
Requires-Dist: pyviz_comms>=3.0.6
Requires-Dist: PyYAML>=6.0.3
Requires-Dist: pyzmq>=27.1.0
Requires-Dist: QtPy>=2.4.3
Requires-Dist: referencing>=0.37.0
Requires-Dist: requests>=2.32.5
Requires-Dist: rfc3339-validator>=0.1.4
Requires-Dist: rfc3986-validator>=0.1.1
Requires-Dist: rfc3987-syntax>=1.1.0
Requires-Dist: rpds-py>=0.27.1
Requires-Dist: scipy>=1.16.2
Requires-Dist: scooby>=0.10.2
Requires-Dist: seaborn>=0.13.2
Requires-Dist: selenium>=4.36.0
Requires-Dist: Send2Trash>=1.8.3
Requires-Dist: simpervisor>=1.0.0
Requires-Dist: six>=1.17.0
Requires-Dist: sniffio>=1.3.1
Requires-Dist: sortedcontainers>=2.4.0
Requires-Dist: soupsieve>=2.8
Requires-Dist: stack-data>=0.6.3
Requires-Dist: terminado>=0.18.1
Requires-Dist: tinycss2>=1.4.0
Requires-Dist: tinyhtml5>=2.0.0
Requires-Dist: tornado>=6.5.2
Requires-Dist: tqdm>=4.67.1
Requires-Dist: traitlets>=5.14.3
Requires-Dist: trame>=3.12.0
Requires-Dist: trame-client>=3.11.2
Requires-Dist: trame-common>=1.0.1
Requires-Dist: trame-server>=3.6.3
Requires-Dist: trame-vtk>=2.10.0
Requires-Dist: trame-vuetify>=3.1.0
Requires-Dist: trio>=0.31.0
Requires-Dist: trio-websocket>=0.12.2
Requires-Dist: types-python-dateutil>=2.9.0.20251008
Requires-Dist: typing_extensions>=4.15.0
Requires-Dist: tzdata>=2025.2
Requires-Dist: uc-micro-py>=1.0.3
Requires-Dist: uri-template>=1.3.0
Requires-Dist: urllib3>=2.5.0
Requires-Dist: vtk>=9.5.2
Requires-Dist: wcwidth>=0.2.14
Requires-Dist: weasyprint>=66.0
Requires-Dist: webcolors>=24.11.1
Requires-Dist: webencodings>=0.5.1
Requires-Dist: websocket-client>=1.9.0
Requires-Dist: widgetsnbextension>=4.0.14
Requires-Dist: wslink>=2.4.0
Requires-Dist: wsproto>=1.2.0
Requires-Dist: xyzservices>=2025.4.0
Requires-Dist: yarg>=0.1.9
Requires-Dist: yarl>=1.22.0
Requires-Dist: zopfli>=0.2.3.post1
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.0; extra == "docs"
Requires-Dist: sphinx-book-theme; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
Requires-Dist: numpydoc; extra == "docs"

# PyDUST

Python library for parsing and analyzing DUST post-processing output files.

## Installation

**Requirements:** SSH key configured with GitLab

Install directly from the GitLab repository:

```bash
# Install latest from pydust branch
pip install git+ssh://git@gitlab.com/Alecocco.1994/dust-private.git@pydust#subdirectory=pydust

# Or install specific commit
pip install git+ssh://git@gitlab.com/Alecocco.1994/dust-private.git@abc1234#subdirectory=pydust
```

## Development Installation

For development with editable mode:

```bash
git clone git@gitlab.com:Alecocco.1994/dust-private.git
git checkout pydust
cd dust-private/pydust
pip install -e ".[dev,docs]"
```

## Quick Start

```python
from pydust import read_sectional, read_probes, read_integral

# Read sectional loads
sectional_data = read_sectional('sectional_loads.dat')
print(sectional_data.sec.shape)  # (n_time, n_sec)

# Read probe velocities
probe_data = read_probes('probes_velocity.dat')
print(probe_data.velocities.shape)  # (n_time, n_probes, 3)

# Read integral loads
integral_data = read_integral('integral_loads.dat')
lift = integral_data.forces[:, 2]  # Extract lift force
```

## Available Parsers

- `read_sectional` - Sectional aerodynamic loads
- `read_probes` - Velocity probe data
- `read_chordwise` - Chordwise distributions
- `read_integral` - Integral loads
- `read_hinge` - Hinge loads

## Documentation

Build documentation locally:

```bash
cd pydust_utils
source .venv-docs/bin/activate
sphinx-build -b html docs/source docs/build/html
```

## Running Tests

```bash
cd pydust_utils
pip install -e ".[dev]"
pytest tests/
```

## Build 
```bash
pip install build 
python -m build 
pip install twine 
```

## License

MIT License

---

**Note:** This is a private package for DUST team members. Ensure you have SSH access configured with GitLab before installation.
