Giter Site home page Giter Site logo

housenum-be-r-parser's People

Contributors

bartsaelen avatar goessebr avatar jonasge avatar koenedaele avatar vancamti avatar wim-de-clercq avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

housenum-be-r-parser's Issues

documentatie: aanvullen documentatie

documentatiefolder van het project ontbreekt en moet worden aangevuld

  • Inleiding: wat is het doel van de applicatie
  • Architectuur: Datamodel, gebruikte componenten, Interacties
  • Service documentatie: beschikbare services documenteren met request/response + parameters en voorbeeld
  • API documentatie via autodoc
  • ontwikkelinfo: hoe het project opzetten als ontwikkelaar
  • ontwikkelgeschiedenis: aanvullen van changes.txt per release

Problemen indien bisnummer meer dan 1 karakter bevat

Volgende foutmelding kreeg ik bij het uitvoeren van het script update_locatie_samenvattingen op test.

ERROR:update_locatie_samenvattingen:Fout bij het verwerken van IDs 1000 - 2000 
ERROR:update_locatie_samenvattingen:Script wordt gestopt. Al de vorige updates werden opgeslagen.
    Herstart met '--continue-from 1000' om verder te gaan vanaf dit punt
Traceback (most recent call last):
  File "/var/projects/inventaris/venv/bin/update_locatie_samenvattingen", line 10, in <module>
    sys.exit(main())
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 137, in main
    start=args.continue_from
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 76, in update_locatie_samenvattingen
    verwerk_locatie_samenvattingen(db_object)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 460, in verwerk_locatie_samenvattingen
    elementen)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 539, in get_straat_summary
    sorted(set(format_element(element) for element in elementen))
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 539, in <genexpr>
    sorted(set(format_element(element) for element in elementen))
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 534, in format_element
    nr = merge_numbers(element.huisnummer)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 475, in merge_numbers
    number_string, on_exc=ReadException.Action.KEEP_ORIGINAL
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 46, in merge
    return merger.merge_data(merger.group(numbers))
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/merger.py", line 95, in merge_data
    letters_per_house[element.house_number].append(ord(element.bis_letter))
TypeError: ord() expected a character, but string of length 3 found

Unicode error bij aanmaken adressamenvatting

Volgende foutmelding kreeg ik bij het uitvoeren van het script update_locatie_samenvattingen op test.

ERROR:update_locatie_samenvattingen:Script wordt gestopt. Al de vorige updates werden opgeslagen.
    Herstart met '--continue-from 0' om verder te gaan vanaf dit punt
Traceback (most recent call last):
  File "/var/projects/inventaris/venv/bin/update_locatie_samenvattingen", line 10, in <module>
    sys.exit(main())
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 137, in main
    start=args.continue_from
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/scripts/update_locatie_samenvattingen.py", line 76, in update_locatie_samenvattingen
    verwerk_locatie_samenvattingen(db_object)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 460, in verwerk_locatie_samenvattingen
    elementen)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 516, in get_straat_summary
    result = create_straat_key(elementen)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 511, in create_straat_key
    housenum_string = merge_numbers(housenum_string)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/inventaris/views/rest/utils.py", line 475, in merge_numbers
    number_string, on_exc=ReadException.Action.KEEP_ORIGINAL
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 45, in merge
    numbers = split(data, on_exc=on_exc)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/__init__.py", line 28, in split
    numbers = reader.read_data(data, step=step, on_exc=on_exc)
  File "/var/projects/inventaris/venv/local/lib/python2.7/site-packages/housenumparser/reader.py", line 44, in read_data
    return read_iterable(str(data).split(","), step=step, on_exc=on_exc)
UnicodeEncodeError: 'ascii' codec can't encode character u'\x85' in position 6: ordinal not in range(128)

Add docs

Add sphinx docs.

Use autodoc to generate api docs and check the syntax of the current documentation.

Add business rules (explanation about what gets split into what), needs to be translated from dutch:

Welk formaat kan ik gebruiken om een bereik van huisnummers in te voeren?

Bij het invoeren van adressen van een dibe_relict zijn er verschillende formaten mogelijk.

25
een numeriek huisnummer
25A
een huisnummer met letter als bisnummer
25/1
een huisnummer met een cijfer als bisnummer
25 bus 3
een huisnummer met busnummer
25,27,29,31
huisnummerreeks: opsomming van de verschillende huisnummers gescheiden door een komma en zonder blanco’s
25-31
huisnummerbereik met even verschil: de tussenliggende huisnummers worden bekomen door telkens 2 bij te tellen.

Dus: 25,27,29,31

25-32
huisnummerbereik met een oneven verschil: de tussenliggende huisnummers worden bekomen door telkens 1 bij te tellen.

Dus: 25,26,27,28,29,30,31,32

25,26-31
huisnummerbereik met een even verschil maar waarbij de tussenliggende nummers toch bekomen worden door er telkens 1 bij te tellen: noteer het eerste huisnummer, een komma, het tweede huisnummer, het koppelteken en het laatste huisnummer.

Dus: 25,26,27,28,29,30,31

25-31,18-26
combinatie van huisnummerbereiken gescheiden door een komma. Voor elk bereik afzonderlijk gelden de voorafgaande regels.

Dus: 25,27,29,31,18,20,22,24,26

25 bus 3-7
Busnummerbereik: een koppelteken na het woord bus duidt op een busnummerbereik. Tussenliggende busnummers worden bekomen door telkens met 1 te verhogen.

Dus: 25 bus 3,25 bus 4,25 bus 5,25 bus 6,25 bus 7

25 bus C-F
Busnummerbereik: een koppelteken na het woord bus duidt op een busnummerbereik. Tussenliggende busnummers worden bekomen door telkens de volgende letter uit het alfabet te nemen.

Dus: 25 bus C,25 bus D,25 bus E,25 bus F

25C-F
Huisnummerbereik op basis van letter als bisnummer. Tussenliggende huisnummers worden bekomen door telkens de volgende letter uit het alfabet te nemen.

Dus: 25C,25D,25E,25F

25/3-7
Huisnummerbereik op basis van cijfer als bisnummer. Tussenliggende huisnummers worden bekomen door telkens 1 bij te tellen.

Dus 25/3,25/4,25/5,25/6,25/7

25C-F,28-32,29 bus 2-5
Combinatie van bisnummerbereik, huisnummerbereik en busnummerbeik.

Dus: 25C,25D,25E,25F,28,30,32,29 bus 2,29 bus 3,29 bus 4, 29 bus 5.

Reorganise code

Create a folder housenum-be-r-parser with the following files:

  • elements.py: KVDutil_HnrElement and children
  • reader.py: KVDutil_HnrReader
  • merger.py: KVDutil_HnrSpeedMerger
  • init.py: KVDutil_HuisnummerFacade

An end user should be able to do:

from huisnum-be-r-parser import KVDutil_HuisnummerFacade
facade = new KVDutil_HuisnummerFacade()
numbers = facade.split('15-21')

Also move the tests to a test folder an organise in a similar way.

samenvattende adresnotatie werkt nog niet bij overlappende ranges van huisnummers

Aanvulling op https://github.com/OnroerendErfgoed/inventaris/issues/2430

Bij overlappende ranges van meerdere locatie-elementen wordt adressamenvatting nog niet correct gemaakt.

VB:
lijn 1: range 1-11, lijn2: range 5-9 resulteert in 1-5, 5-7, 7-9, 9-11 omdat de dubbels daar niet uit worden gehaald. Dat is iets binnen https://github.com/OnroerendErfgoed/housenum-be-r-parser/issues/ dat moet gefixt worden.

Originally posted by @Wim-De-Clercq in https://github.com/OnroerendErfgoed/inventaris/issues/2430#issuecomment-522915844

Review merge feature

De merge feature zet een lijst van nummers om in reeksen.
bvb:

from housenumparser import HuisnummerFacade
result = HuisnummerFacade().merge(
    "557, 559, 561, 563, 565, 567, 569, 571, 573, 575, 577, 579, 581, 583, "
    "585, 587, 589, 591, 593, 595, 597, 607, 609, 611, 613, 615, 617, 619, "
    "621, 623, 625, 627, 629, 631, 633, 635, 637, 639, 641, 643, 645, 647, "
    "649, 651, 653, 655, 657, 659, 661, 663, 665, 667, 669, 671, 673, 675, "
    "677, 679, 681, 683, 685, 687, 689")
for res in result:
    print(res)
OUTPUT:
557-597
607-689

Er zit iets fout want als je in bovenstaande string met cijfers 1 van de cijfers vervangt door een even getal kom je in een recursive loop.

python-ify en pep8 compliance

  • Zet code documentatie onder de definities
  • Alle method/class docs met triple quotes.
  • classes extend object (For python 2)
  • vermijd bestaande bulitins als variable namen. "input" wordt vaak gebruikt. Liever niet.
  • camelCase to snake_case
  • cleanup imports
  • splits test file op in test_split.py, test_merge.py

Review the on_exc actions

on_exc=ReadException.Action.KEEP_ORIGINAL werkt niet altijd mooi omdat de group functie deze niet zal bijhouden. Na de group is de data dus weg.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.