Metadata-Version: 2.3
Name: leveecmd
Version: 2.8.2
Summary: Command line tooling for Dutch levee and water safety analyses
License: GPL-3.0-only
Keywords: levee,dike,water-safety
Author: Chris Pitzalis
Author-email: C.Pitzalis@wsrl.nl
Requires-Python: >=3.12,<3.14
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Hydrology
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: fiona (>=1.10.1,<2.0.0)
Requires-Dist: geopandas (>=1.0.1,<2.0.0)
Requires-Dist: gitpython (>=3.1.44,<4.0.0)
Requires-Dist: inquirerpy (>=0.3.4,<0.4.0)
Requires-Dist: numpy (>=2.0.2,<3.0.0)
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
Requires-Dist: platformdirs (>=4.13.5,<5.0.0)
Requires-Dist: plotly (>=6.2.0,<7.0.0)
Requires-Dist: rasterio (>=1.4.3,<2.0.0)
Requires-Dist: requests (>=2.32.4,<3.0.0)
Requires-Dist: scipy (>=1.18.1,<2.0.0)
Requires-Dist: typer (>=0.12.3,<0.13.0)
Description-Content-Type: text/markdown

![Coverage](./coverage/coverage-badge.svg)


**LeveeCMD** is een command-line applicatie ontwikkeld voor de dagelijkse werkzaamheden in het vakgebied 
Waterveiligheid. De toolset biedt eenvoudige invoer/uitvoer-functionaliteiten die het werkproces ondersteunen, zoals:

- Het uitvoeren van technische berekeningen.
- Het valideren van data.
- Het converteren van gegevensformaten.

De applicatie is ontworpen met gebruiksgemak en uitbreidbaarheid in gedachten, zodat het eenvoudig is om nieuwe 
functionaliteiten toe te voegen die aansluiten bij de behoeften van de collega's in ons vakgebied.

# Installatie (voor gebruikers)

Installatie van de applicatie is mogelijk indien je Python hebt, of ArcGIS Pro. De software ArcGIS Pro komt namelijk met 
Python. Omdat ArcGIS Pro veelgebruikt is binnen ons vakgebied kan het gros van de collega's eveneens LeveeCMD 
installeren. Maar in principe is enkel Python benodigd, en ArcGIS Pro niet. Hieronder eerst de installatie uitgelegd 
voor enkel Python, daaronder voor ArcGIS Pro. 

#### In combinatie met een gewone Python virtual environment

Maak een nieuwe Python 3.13 environment aan en installeer LeveeCMD `pip install leveecmd`.

#### In combinatie met ArcGIS Pro

- Controleer of ArcGIS Pro geïnstalleerd is op je computer.

- Start de `Opdrachtprompt`[^voetnoot].

- Maak vervolgens met Conda een nieuwe virtuele omgeving aan. <br>
```conda create -n leveecmd python=3.13```<br>
Bij `Proceed` type `y` en dan enter. 
Na een paar minuutjes geduld is de virtuele omgeving aangemaakt.

- Open de virtuele omgeving.<br>
```conda activate leveecmd```

- Installeer de package manager `pip`.<br>
```conda install pip```

- Installeer vervolgens `leveecmd` zelf. <br> 
```pip install leveecmd```<br>
Dit kan enkele minuten duren.


# Opstarten van de applicatie (voor gebruikers)

- Start de `Opdrachtprompt`.
- Open de virtuele omgeving met het volgende commando.<br>
```conda activate leveecmd```
- Start de applicatie met het volgende commando.<br>
```leveecmd```



# Development commando’s

Zo start je `leveecmd` in de development environment.

```python -m leveecmd```

Zo voeg je een package dependency toe aan `leveecmd`. Deze wordt direct mee geïnstalleerd bij de gebruiker wanneer deze 
een nieuwe versie (lees: wheel) installeert. 

```poetry add PackageName```

Op de volgende manier unit test je en update je de coverage-badge:

```
pip install -r .\coverage\requirements_testing.txt
.\coverage\generate_coverage.bat
```

Op de volgende manier unit test je en update je de coverage-badge:

```
pip install -r .\coverage\requirements_testing.txt
.\coverage\generate_coverage.bat
```


# Pull Request-eisen
- Code voldoet aan PEP 8 (maximale regellengte 120 tekens).
- Geen warnings of errors in PyCharm.
- Voor alle gewijzigde bestanden zijn unit tests toegevoegd of bijgewerkt.
- Nieuwe functionaliteit is voorzien van duidelijke docstrings en type hints waar van toepassing.
- Geen ongebruikte imports, variabelen of dode code.
- Wijzigingen zijn beperkt tot het doel van de PR (geen ongerelateerde aanpassingen).
- PR bevat een duidelijke beschrijving van:
  - doel van de wijziging;
  - belangrijkste wijzigingen;
  - eventuele impact op bestaande functionaliteit.
- Indien van toepassing zijn documentatie en voorbeeldbestanden bijgewerkt.
- De code is door de auteur lokaal getest voordat de PR wordt ingediend.
- Los alle TODO-items op. Grotere TODO-items die overblijven gaan op de wishlist (Excel).
- Geen openstaande TODO-items in gewijzigde code. <br>
Functionele uitbreidingen of verbeterwensen worden geregistreerd op de wishlist (Excel).

# Pull Request-eisen
- Code voldoet aan PEP 8 (maximale regellengte 120 tekens).
- Geen warnings of errors in PyCharm.
- Voor alle gewijzigde bestanden zijn unit tests toegevoegd of bijgewerkt.
- Nieuwe functionaliteit is voorzien van duidelijke docstrings en type hints (waar van toepassing).
- Geen ongebruikte imports, variabelen of dode code.
- Wijzigingen zijn beperkt tot het doel van de PR (geen ongerelateerde aanpassingen).
- PR bevat een duidelijke beschrijving van:
  - doel van de wijziging;
  - belangrijkste wijzigingen;
  - eventuele impact op bestaande functionaliteit.
- Indien van toepassing zijn documentatie en voorbeeldbestanden bijgewerkt.
- De code is door de auteur getest voordat de PR wordt ingediend.

# Tools en Pagina’s Toevoegen

Je kunt eenvoudig nieuwe categorieën, tools of pagina’s toevoegen aan de LeveeCMD-applicatie door gebruik te maken van 
Python-subpackages of -modules binnen de app-folder. Hieronder vind je de richtlijnen:

### 1. Categorieën toevoegen

Maak een subpackage (een map met een __init__.py bestand) aan binnen de app-folder. Gebruik de prefix `cat_` voor de 
naam van de subpackage, bijvoorbeeld `cat_validatie`. Binnen deze categorie kun je vervolgens tools en pagina’s plaatsen 
die logisch bij elkaar horen.

### 2. Tools en Pagina’s toevoegen

Tools en pagina’s kunnen worden toegevoegd als:

- Een submodule (een enkel .py bestand), of
- Een subpackage (voor grotere of complexere onderdelen).

Gebruik de prefix `tool_` voor tools en `page_` voor pagina’s, bijvoorbeeld `tool_converter` of `page_tool_uitleg.py`.

### 3. Menu-integratie

Vergeet niet om je nieuwe categorie, tool of pagina toe te voegen aan het hoofdmenu. Dit doe je in het bestand: 
`leveecmd/app/main_menu_items.py` Raadpleeg bestaande items in dit bestand als voorbeeld voor de juiste structuur en 
conventies.

### 4. Tip

Gebruik de bestaande code als leidraad bij het opzetten van nieuwe onderdelen. Dit zorgt voor consistentie en voorkomt 
fouten.



# Licentie

Dit project is gelicentieerd onder de GNU General Public License v3.0 (GPL-3.0):

De publiek beschikbare versie van dit project valt onder de voorwaarden van de GNU General Public License v3.0. Onder 
deze licentie mag je de code vrij gebruiken, aanpassen en verspreiden, mits:

- Je de originele copyright notice opneemt.
- Je afgeleide werken onder dezelfde GPL-3.0 licentie vrijgeeft.
- Je toegang tot de broncode biedt bij distributie van de software.

Een volledige kopie van de licentie is te vinden in het [LICENSE](LICENSE) bestand of op: 
https://www.gnu.org/licenses/gpl-3.0.en.html




# Contactinformatie

Wil je bijdragen aan het beheer van deze repository of heb je vragen? Neem dan contact op met:

- **Chris**
- **Sander**


[^voetnoot]: Het is beter om niet rechtstreeks de `Python Command Prompt` te starten. Het kan ook via die weg, maar dat geeft iets
meer kans op het maken van een installatiefout. 

