Skip to content

Commit

Permalink
Bump ibims from 0.3.0 to 0.3.4 (#149)
Browse files Browse the repository at this point in the history
* Bump ibims from 0.3.0 to 0.3.4

Bumps [ibims](https://github.com/Hochfrequenz/intermediate-bo4e-migration-models) from 0.3.0 to 0.3.4.
- [Release notes](https://github.com/Hochfrequenz/intermediate-bo4e-migration-models/releases)
- [Commits](Hochfrequenz/intermediate-bo4e-migration-models@v0.3.0...v0.3.4)

---
updated-dependencies:
- dependency-name: ibims
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Adjust pvtool to current BO4E

* Update pyproject.toml (#150)

* Update pyproject.toml

* Update requirements.in

* Small changes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Stefan Heese <[email protected]>
Co-authored-by: konstantin <[email protected]>
  • Loading branch information
3 people authored Aug 12, 2024
1 parent 77f0286 commit 0aa2a2c
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 42 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ classifiers = [
dependencies = [
"bomf",
"pvframework>=0.0.8",
"ibims>=0.3.0",
"ibims>=0.3.4",
"python-dateutil",
"pydantic[email]",
"more_itertools",
Expand Down
2 changes: 1 addition & 1 deletion requirements.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
bomf
pvframework>=0.0.8
ibims>=0.2.0
ibims>=0.3.4
python-dateutil
pydantic[email]
more_itertools
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ frozendict==2.3.8
# via
# bomf
# pvframework
ibims==0.3.0
ibims==0.3.4
# via -r requirements.in
idna==3.4
# via email-validator
Expand Down
21 changes: 5 additions & 16 deletions src/pvtool/customer_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,14 @@ def check_geschaeftspartner_anrede(anrede: Anrede):

def check_str_is_stripped(string: str):
"""
geschaeftspartner.name1 must not start with whitespace. Further validation is difficult because e.g.
geschaeftspartner.nachname must not start with whitespace. Further validation is difficult because e.g.
there exist names with characters like '.
And if the name is a company it could even contain digits or other characters e.g. 'edi@energy'.
"""
if string.strip() != string:
raise ValueError(f"{param('string').param_id} must not start or end with whitespace.")


def check_geschaeftspartner_name3(name3: Optional[str] = None):
"""
geschaeftspartner.name2 must not start with whitespace. Further validation is difficult because e.g.
there exist names with characters like '.
And if the name is a company it could even contain digits or other characters e.g. 'edi@energy'.
"""
allowed_values = {"Dr.", "Prof.", "Prof. Dr."}
if name3 and name3 not in allowed_values:
raise ValueError(f"{param('name3').param_id} must be one of the following: " f"{', '.join(allowed_values)}")


def check_e_mail(e_mail: Optional[str] = None):
"""
geschaeftspartner.e_mail_adresse must match the regex pattern `REGEX_E_MAIL`.
Expand Down Expand Up @@ -300,7 +289,6 @@ def is_datetime(date_to_check: datetime):

validate_geschaeftspartner_anrede: ValidatorType = Validator(check_geschaeftspartner_anrede)
validate_str_is_stripped: ValidatorType = Validator(check_str_is_stripped)
validate_geschaeftspartner_name3: ValidatorType = Validator(check_geschaeftspartner_name3)
validate_e_mail: ValidatorType = Validator(check_e_mail)
validate_extern_customer_id: ValidatorType = Validator(check_extern_customer_id)
validate_date_in_past_required: ValidatorType = Validator(check_date_in_past_required)
Expand Down Expand Up @@ -359,10 +347,11 @@ def customer_validation_manager(self, config: MigrationConfig) -> ValidationMana
PathMappedValidator(validate_geschaeftspartner_anrede, {"anrede": "geschaeftspartner.anrede"}),
mode=ValidationMode.WARNING,
)
customer_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "geschaeftspartner.name1"}))
customer_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "geschaeftspartner.name2"}))
customer_manager.register(
PathMappedValidator(validate_geschaeftspartner_name3, {"name3": "geschaeftspartner.name3"})
PathMappedValidator(validate_str_is_stripped, {"string": "geschaeftspartner.nachname"})
)
customer_manager.register(
PathMappedValidator(validate_str_is_stripped, {"string": "geschaeftspartner.vorname"})
)
customer_manager.register(PathMappedValidator(validate_e_mail, {"e_mail": "geschaeftspartner.e_mail_adresse"}))
customer_manager.register(
Expand Down
18 changes: 7 additions & 11 deletions src/pvtool/network_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
ValidatorType,
validate_address_deutsch,
validate_address_fields,
validate_geschaeftspartner_name3,
validate_postleitzahl,
validate_str_is_stripped,
)
Expand Down Expand Up @@ -126,24 +125,21 @@ def network_validation_manager(self) -> ValidationManager:
This method provides a ValidationManager for network loader
"""
network_manager = ValidationManager[TripicaNetworkLoaderDataSet](manager_id="NetworkLoader")
network_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "kunde.name1"}))
network_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "kunde.name2"}))
network_manager.register(PathMappedValidator(validate_geschaeftspartner_name3, {"name3": "kunde.name3"}))
network_manager.register(PathMappedValidator(validate_address_fields, {"address": "kunde.partneradresse"}))
network_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "kunde.nachname"}))
network_manager.register(PathMappedValidator(validate_str_is_stripped, {"string": "kunde.vorname"}))
network_manager.register(PathMappedValidator(validate_address_fields, {"address": "kunde.adresse"}))
network_manager.register(
PathMappedValidator(validate_postleitzahl, {"postleitzahl": "kunde.partneradresse.postleitzahl"})
)
network_manager.register(PathMappedValidator(validate_address_fields, {"address": "liefer_adresse"}))
network_manager.register(PathMappedValidator(validate_address_deutsch, {"address": "liefer_adresse"}))
network_manager.register(
PathMappedValidator(
validate_address_fields, {"address": "geschaeftspartner_mit_rechnungs_adresse.partneradresse"}
)
PathMappedValidator(validate_address_fields, {"address": "geschaeftspartner_mit_rechnungs_adresse.adresse"})
)
network_manager.register(
PathMappedValidator(
validate_postleitzahl,
{"postleitzahl": "geschaeftspartner_mit_rechnungs_adresse.partneradresse.postleitzahl"},
{"postleitzahl": "geschaeftspartner_mit_rechnungs_adresse.adresse.postleitzahl"},
)
)
network_manager.register(
Expand Down Expand Up @@ -171,13 +167,13 @@ def network_validation_manager(self) -> ValidationManager:
network_manager.register(
PathMappedValidator(
validate_str_is_stripped,
{"string": "netzbetreiber.name1"},
{"string": "netzbetreiber.nachname"},
)
)
network_manager.register(
PathMappedValidator(
validate_str_is_stripped,
{"string": "messstellenbetreiber.name1"},
{"string": "messstellenbetreiber.nachname"},
)
)
network_manager.register(
Expand Down
25 changes: 13 additions & 12 deletions unittests/test_validation_customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
Bankverbindung,
Geschaeftspartner,
Kontaktart,
Kontaktweg,
Landescode,
SepaInfo,
Titel,
Typ,
Vertrag,
VertragskontoCBA,
Expand Down Expand Up @@ -46,11 +48,12 @@ async def test_good_data_set(self, customer_validation_manager):
geschaeftspartner=Geschaeftspartner.model_construct(
zusatz_attribute=[ZusatzAttribut(name="customerID", wert="209876543")],
typ="GESCHAEFTSPARTNER",
name1="Mustermann",
name2="Max",
name3="Prof.",
nachname="Mustermann",
vorname="Max",
titel=Titel.PROF,
anrede=Anrede.HERR,
e_mail_adresse="[email protected]",
kontaktwege=[Kontaktweg.model_construct(kontaktart=Kontaktart.E_MAIL, wert="[email protected]")],
# e_mail_adresse="[email protected]",
telefonnummer_mobil="+49 (0) 1324832749",
telefonnummer_geschaeft="(01575) 01294673",
telefonnummer_privat="0221 937436",
Expand Down Expand Up @@ -125,9 +128,8 @@ async def test_good_data_set(self, customer_validation_manager):
zusatz_attribute=[],
typ=Typ.GESCHAEFTSPARTNER,
version="1",
name1=" Mustermann",
name2=" Max",
name3="No Prof.",
nachname=" Mustermann",
vorname=" Max",
anrede=Anrede.FAMILIE, # Anrede.INDIVIDUELL nicht mehr vorhanden
e_mail_adresse="test@test",
telefonnummer_mobil="0392ujdi",
Expand Down Expand Up @@ -204,9 +206,8 @@ async def test_good_data_set(self, customer_validation_manager):
],
),
[
"geschaeftspartner.name1 must not start or end with whitespace.",
"geschaeftspartner.name2 must not start or end with whitespace.",
"geschaeftspartner.name3 must be one of the following",
"geschaeftspartner.nachname must not start or end with whitespace.",
"geschaeftspartner.vorname must not start or end with whitespace.",
"The part after the @-sign is not valid. It should have a period", # E-Mail
"No Zusatzattribute with name customerID",
"geschaeftspartner.erstellungsdatum must be in the past",
Expand Down Expand Up @@ -245,8 +246,8 @@ async def test_good_data_set(self, customer_validation_manager):
),
[
"geschaeftspartner.anrede: None is not an instance of ibims.bo4e.enum.anrede.Anrede",
"geschaeftspartner.name1: value not provided",
"geschaeftspartner.name2: value not provided",
"geschaeftspartner.nachname: value not provided",
"geschaeftspartner.vorname: None is not an instance of str",
"geschaeftspartner.geburtstag: None is not an instance of datetime.datetime",
"geschaeftspartner.erstellungsdatum: None is not an instance of datetime.datetime",
"geschaeftspartner.zusatz_attribute: None is not a list",
Expand Down

0 comments on commit 0aa2a2c

Please sign in to comment.