Code Monkey home page Code Monkey logo

hun_law_py's Introduction

⚠️ WARNING
This project has been deprecated in favor of the Rust version, and is currently unmaintained.

Hun-Law

A small project for parsing Hungarian Law. It does the following thigs:

  • Parse PDF files into lines using pdfminer. It does so much more accurately than other pdf2txt implementations.
  • Parse "Magyar Közlöny" PDFs into individual Acts
  • Separate Acts into structural elements (Articles, subpoints, etc.)
  • Parse internal and external references in legal text
  • Parse special phrases like amendments and repeals into easy-to-use objects
  • Generate simple TXT, JSON and HTML version of the parsed documents

Usage

After cloning the repository, simply run ./generate_output.py:

./generate_output.py txt 2013/31
./generate_output.py json 2018/123 --output-dir /tmp/acts_as_json

Interesting Magyar Közlöny issues can be found in act_to_mk_issue.csv

To be able to actually use html output, you will have to copy or symlink the style.css:

./generate_output.py html 2014/91 2014/92 2014/93 --output-dir /var/www/hun_law
cp style.css /var/www/hun_law

Things planned:

  • Export into Akoma Ntoso format
  • Export into epub or mobi format

Contribution

Feel free to open issues for feature reqests or found bugs. Merge Requests are more than welcome too, as long as all tests and static analysis passes.

hun_law_py's People

Contributors

badicsalex avatar

Stargazers

LZ91X  avatar Himanshu avatar Eretnek Hippi Messiás avatar Paróczai Olivér avatar Arieda Muço avatar György Orosz avatar Bajusz Tamás avatar  avatar Miklós Márton avatar Soma Szelpal avatar Robert Bus avatar György Kiss avatar Boa avatar Péter Ivánszky avatar Timur Kristóf avatar Jose Muniz avatar

Watchers

 avatar Brian Passante avatar  avatar

Forkers

shakahl

hun_law_py's Issues

Amendment when only intro is amended

The following is not parsed correctly as an amendment:
Az adózás rendjéről szóló 2003. évi XCII. törvény (a továbbiakban: Art.) 31. § (2) bekezdés bevezető szövegrésze helyébe a következő rendelkezés lép:

(in 2013. évi XLI. törvény, article 4, paragraph 1)

EUTv. abbreviation

"Az Európai Unió tagállamaival folytatott bűnügyi együttműködésről szóló 2012. évi CLXXX. törvény (a továbbiakban: EUtv.) 3. §-a a következő (6) bekezdéssel egészül ki:",

Parse subtitle references (grammar part)

To actually do something about #2, the BA grammar has to be enhanced to support subtitles, both as a reference and as a replaced part.

Examples:
"A Btk. XX. Fejezete a következő alcímmel és 212/A. §-sal kiegészülve lép hatályba:"
"A Btk. 349. §-a és a megelőző alcím helyébe a következő rendelkezés és alcím lép:"
"A Btk. a 300. §-t megelőzően a következő alcímmel egészül ki:"
"A Btk. XXVII. Fejezete a következő alcímmel és 300/A. §-sal egészül ki:"
"A Btk. Terrorcselekmény alcíme a következő 316/A. §-sal egészül ki:"
"A Btk. Terrorizmus finanszírozása alcíme a következő 318/A. és 318/B. §-sal egészül ki:"
"A Btk. a 404. §-t követően a következő alcímmel és 404/A. §-sal kiegészülve lép hatályba:"
"A Btk. a következő 226/A. §-sal és az azt megelőző alcímmel egészül ki:"
"A Btk. „Új pszichoaktív anyaggal visszaélés” alcíme a következő 184/A–184/D. §-sal egészül ki:"
"A Btk. XXIV. Fejezete a következő alcímmel és 261/A. §-sal egészül ki:"
"A Btk. 388/A. §-a és az azt megelőző alcím helyébe a következő alcím és rendelkezés lép:"
"A Btk. a következő 352/A–C. §-sal és az azokat megelőző alcímekkel egészül ki:"
"A Btk. a következő alcímmel és 410/A. §-sal egészül ki:"
"A Btk. 411. §-át megelőző alcím címe és 411. §-a helyébe a következő rendelkezés lép:"
"A Btk. IX. Fejezete a 92/A. §-t követően a következő alcímmel egészül ki:"
"A Btk. 83. §-t megelőző alcím helyébe a következő alcím lép:"
"A Btk. a 124. §-t követően a következő alcímmel és 124/A. §-sal egészül ki:"

Parse effective dates

Since the effective date of most acts is rather complex, it should be parsed, not just manually entered, if we want to achieve "current" status correctly for all possible dates.

Reference pair to range conversion in BlockAmendment grammar

Sub-issue of #2: The following pairs should be converted to ranges, just like in "normal" references:
"A Btk. 279. § (1) és (2) bekezdése helyébe a következő rendelkezések lépnek:"
"A Btk. 92. § (3) és (4) bekezdése helyébe a következő rendelkezések lépnek:"

To actually support the following, the whole "next id" logic has to be rewritten tho:
"A Btk. 283. § (2) és (2a) bekezdése helyébe a következő rendelkezések lépnek:"

Parse all of Ptk and its amendments

  • 2013/31 -- 2013. évi V. törvény,A Polgári Törvénykönyvről

Block amendments:

  • 2013/120 -- 2013. évi CXXXV. törvény,A szövetkezeti hitelintézetek integrációjáról és egyes gazdasági tárgyú jogszabályok módosításáról
  • 2013/222 -- 2013. évi CCLII. törvény,Egyes törvényeknek az új Polgári Törvénykönyv hatálybalépésével összefüggő módosításáról
  • 2015/97 -- 2015. évi CI. törvény,"A számvitelről szóló 2000. évi C. törvény, valamint egyes pénzügyi tárgyú törvények módosításáról"
  • 2016/90 -- 2016. évi LXXVII. törvény,A Polgári Törvénykönyvről szóló 2013. évi V. törvénymódosításáról
  • 2016/210 -- 2016. évi CLXXIX. törvény,A civil szervezetek és a cégek nyilvántartásával összefüggő eljárások módosításáról és gyorsításáról
  • 2017/85 -- 2017. évi LXI. törvény,Egyes törvényeknek az üzleti környezet jogi versenyképességének növelése érdekében szükséges módosításáról
  • 2017/174 -- 2017. évi CXXX. törvény,A polgári perrendtartásról szóló 2016. évi CXXX. törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2017/214 -- 2017. évi CXCIV. törvény,Egyes törvények szervezett utazási tárgyú jogharmonizációjával kapcsolatos módosításáról
  • 2018/123 -- 2018. évi LIII. törvény,A magánélet védelméről
  • 2018/123 -- 2018. évi LIV. törvény,Az üzleti titok védelméről
  • 2019/120 -- 2019. évi LXVII. törvény,A hosszú távú részvényesi szerepvállalás ösztönzéséről és egyes törvények jogharmonizációs célú módosításáról

Textual amendments:

  • 2013/222 -- 2013. évi CCLII. törvény,Egyes törvényeknek az új Polgári Törvénykönyv hatálybalépésével összefüggő módosításáról
  • 2016/90 -- 2016. évi LXXVII. törvény,A Polgári Törvénykönyvről szóló 2013. évi V. törvénymódosításáról
  • 2017/74 -- 2017. évi L. törvény,Az általános közigazgatási rendtartásról szóló törvényés a közigazgatási perrendtartásról szóló törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2017/182 -- 2017. évi CXXXVI. törvény,Az ügyvédi tevékenységről szóló 2017. évi LXXVIII. törvényhatálybalépésével összefüggő egyes törvények és egyéb igazságügyi tárgyú törvények módosításáról
  • 2019/120 -- 2019. évi LXVII. törvény,A hosszú távú részvényesi szerepvállalás ösztönzéséről és egyes törvények jogharmonizációs célú módosításáról

Repeals:

  • 2013/222 -- 2013. évi CCLII. törvény,Egyes törvényeknek az új Polgári Törvénykönyv hatálybalépésével összefüggő módosításáról
  • 2016/39 -- 2016. évi IX. törvény,A behajtási költségátalányról
  • 2016/90 -- 2016. évi LXXVII. törvény,A Polgári Törvénykönyvről szóló 2013. évi V. törvénymódosításáról
  • 2018/123 -- 2018. évi LIV. törvény,Az üzleti titok védelméről
  • 2019/120 -- 2019. évi LXVII. törvény,A hosszú távú részvényesi szerepvállalás ösztönzéséről és egyes törvények jogharmonizációs célú módosításáról

Note: 11/2014. (IV. 4.) AB határozat does not change anything

test, requirements

.venv/bin/pip install attr

was needed for me. This should be in requirements.txt, I guess.

./generate_output.py json 2013/31

did not work for me.

.venv/bin/python3 generate_output.py json 2013/31

did work instead.
(Maybe because I run create_venv.sh while miniconda was activated and the default python remained miniconda's somehow.)

Parse all of Btk and its amendments

The following should be parsed without remaining raw Indented Lines. Text part amendments should also be all parsed into metadata.

  • 2012/92 -- 2012. évi C. törvény,A Büntető Törvénykönyvről

Block Amendments:

  • 2012/181 -- 2012. évi CCXXIII. törvény,A Büntető Törvénykönyvről szóló 2012. évi C. törvényhatálybalépéséhez kapcsolódó átmeneti rendelkezésekről és egyes törvények módosításáról
  • 2013/66 -- 2013. évi XXXVI. törvény,A választási eljárásról
  • 2013/67 -- 2013. évi XLV. törvény,A közveszély színhelyén elkövetett lopás szigorúbb büntetőjogi szankcionálásáról
  • 2013/69 -- 2013. évi XLVIII. törvény,Az önkényuralmi jelképek használatának büntetőjogi szankcionálásáról
  • 2013/96 -- 2013. évi LXXVIII. törvény,Egyes büntető tárgyú törvények módosításáról
  • 2013/102 -- 2013. évi XCVIII. törvény,Egyes pénzügyi tárgyú törvények módosításáról
  • 2013/120 -- 2013. évi CXXXIII. törvény,A vallási közösségek jogállásával és működésével kapcsolatos törvényeknek az Alaptörvénynegyedik módosításával összefüggő módosításáról
  • 2013/185 -- 2013. évi CLXXVIII. törvény,Az emberi méltóság védelme és a bizonyítékok meghamisításának megakadályozása érdekében a Büntető Törvénykönyvről szóló 2012. évi C. törvénymódosításáról
  • 2013/190 -- 2013. évi CLXXXVI. törvény,Egyes büntetőjogi tárgyú és ehhez kapcsolódó más törvények módosításáról
  • 2013/218 -- 2013. évi CCXLV. törvény,Egyes törvényeknek a gyermekek védelme érdekében történőmódosításáról
  • 2013/218 -- 2013. évi CCXXXVIII. törvény,"A népszavazás kezdeményezéséről, az európai polgári kezdeményezésről, valamint a népszavazási eljárásról"
  • 2013/222 -- 2013. évi CCLII. törvény,Egyes törvényeknek az új Polgári Törvénykönyv hatálybalépésével összefüggő módosításáról
  • 2014/18 -- 2014. évi VII. törvény,A termőföld tulajdonjogának megszerzését vagy használatát korlátozó jogszabályi rendelkezések kijátszására irányuló jogügyletek feltárásáról és megakadályozásáról
  • 2014/159 -- 2014. évi LXV. törvény,A Büntető Törvénykönyvről szóló 2012. évi C. törvénynek a gyermekek fokozottabb védelme érdekében szükséges módosításáról
  • 2014/160 -- 2014. évi LXXII. törvény,"A büntetések, az intézkedések, egyes kényszerintézkedések és a szabálysértési elzárás végrehajtásáról szóló 2013. évi CCXL. törvényés ehhez kapcsolódóan más törvények módosításáról"
  • 2015/84 -- 2015. évi LXXVI. törvény,Egyes büntetőjogi tárgyú törvények módosításáról
  • 2015/124 -- 2015. évi CXL. törvény,Egyes törvényeknek a tömeges bevándorlás kezelésével összefüggő módosításáról
  • 2016/49 -- 2016. évi XIII. törvény,Az uniós vámjog végrehajtásáról
  • 2016/88 -- 2016. évi LXIX. törvény,A terrorizmus elleni fellépéssel összefüggő egyes törvények módosításáról
  • 2016/88 -- 2016. évi LXVIII. törvény,A jövedéki adóról
  • 2016/159 -- 2016. évi CIII. törvény,"Az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények, valamint egyes büntetőjogi tárgyú törvények jogharmonizációs célú módosításáról"
  • 2016/170 -- 2016. évi CX. törvény,"A büntetések, az intézkedések, egyes kényszerintézkedések és a szabálysértési elzárás végrehajtásáról szóló 2013. évi CCXL. törvényés ehhez kapcsolódóan más törvények módosításáról"
  • 2017/69 -- 2017. évi XXXIX. törvény,"Az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények, és ehhez kapcsolódóan más törvények jogharmonizációs célú módosításáról"
  • 2017/156 -- 2017. évi CVI. törvény,A Büntető Törvénykönyvről szóló 2012. évi C. törvénymódosítása a korrupciós bűncselekmények elévülési idejének emelése érdekében
  • 2017/184 -- 2017. évi CXLIV. törvény,"A büntetőeljárásról szóló 1998. évi XIX. törvény, egyes büntető tárgyú törvények, valamint az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények módosításáról"
  • 2017/192 -- 2017. évi CXLIX. törvény,Egyes törvényeknek a gyermekek fokozottabb védelme érdekében szükséges módosításáról
  • 2017/207 -- 2017. évi CLXXVII. törvény,A tizenkettedik életévüket be nem töltött gyermekek sérelmére elkövetett szexuális erőszakkal szembeni fokozottabb büntetőjogi védelemről
  • 2017/216 -- 2017. évi CXCVII. törvény,A büntetőeljárásról szóló 2017. évi XC. törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2018/97 -- 2018. évi VI. törvény,Egyes törvényeknek a jogellenes bevándorlás elleni intézkedésekkel kapcsolatos módosításáról
  • 2018/122 -- 2018. évi XLIII. törvény,A Büntető Törvénykönyvről szóló 2012. évi C. törvény módosításáról
  • 2018/123 -- 2018. évi LV. törvény,A gyülekezési jogról
  • 2018/207 -- 2018. évi CXVIII. törvény,"Egyes egészségügyi és egészségbiztosítási tárgyú, valamint az egészségüggyel összefüggő egyes törvények módosításáról"
  • 2018/207 -- 2018. évi CXXII. törvény,Egyes büntetőjogi tárgyú és más kapcsolódó törvények módosításáról
  • 2019/120 -- 2019. évi LXVI. törvény,Magyarország 2020. évi központi költségvetésének megalapozásáról

Textual amendments:

  • 2012/181 -- 2012. évi CCXXIII. törvény,A Büntető Törvénykönyvről szóló 2012. évi C. törvényhatálybalépéséhez kapcsolódó átmeneti rendelkezésekről és egyes törvények módosításáról
  • 2013/69 -- 2013. évi XLVIII. törvény,Az önkényuralmi jelképek használatának büntetőjogi szankcionálásáról
  • 2013/120 -- 2013. évi CXXXIII. törvény,A vallási közösségek jogállásával és működésével kapcsolatos törvényeknek az Alaptörvénynegyedik módosításával összefüggő módosításáról
  • 2013/218 -- 2013. évi CCXLV. törvény,Egyes törvényeknek a gyermekek védelme érdekében történő módosításáról
  • 2014/160 -- 2014. évi LXXII. törvény,"A büntetések, az intézkedések, egyes kényszerintézkedések és a szabálysértési elzárás végrehajtásáról szóló 2013. évi CCXL. törvényés ehhez kapcsolódóan más törvények módosításáról"
  • 2015/84 -- 2015. évi LXXVI. törvény,Egyes büntetőjogi tárgyú törvények módosításáról
  • 2016/159 -- 2016. évi CIII. törvény,"Az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények, valamint egyes büntetőjogi tárgyú törvények jogharmonizációs célú módosításáról"
  • 2017/69 -- 2017. évi XXXIX. törvény,"Az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények, és ehhez kapcsolódóan más törvények jogharmonizációs célú módosításáról"
  • 2017/74 -- 2017. évi L. törvény,Az általános közigazgatási rendtartásról szóló törvényés a közigazgatási perrendtartásról szóló törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2017/184 -- 2017. évi CXLIV. törvény,"A büntetőeljárásról szóló 1998. évi XIX. törvény, egyes büntető tárgyú törvények, valamint az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények módosításáról"
  • 2017/216 -- 2017. évi CXCVII. törvény,A büntetőeljárásról szóló 2017. évi XC. törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2018/123 -- 2018. évi LV. törvény,A gyülekezési jogról
  • 2018/207 -- 2018. évi CXVIII. törvény,"Egyes egészségügyi és egészségbiztosítási tárgyú, valamint az egészségüggyel összefüggő egyes törvények módosításáról"
  • 2018/208 -- 2018. évi CXXV. törvény,A kormányzati igazgatásról
  • 2019/63 -- 2019. évi XXXVI. törvény,"A lelkiismereti és vallásszabadság jogáról, valamint az egyházak, vallásfelekezetek és vallási közösségek jogállásáról szóló 2011. évi CCVI. törvény módosításához kapcsolódóan egyes törvények módosításáról"

Repeals:
együttműködést szabályozó törvények, és ehhez kapcsolódóan más törvények jogharmonizációs célú módosításáról"

  • 2013/101 -- 2013. évi LXXXIX. törvény,A választási eljárásról szóló 2013. évi XXXVI. törvénymódosításáról
  • 2013/218 -- 2013. évi CCXLV. törvény,Egyes törvényeknek a gyermekek védelme érdekében történőmódosításáról
  • 2015/84 -- 2015. évi LXXVI. törvény,Egyes büntetőjogi tárgyú törvények módosításáról
  • 2016/159 -- 2016. évi CIII. törvény,"Az európai uniós és a nemzetközi bűnügyi együttműködést szabályozó törvények, valamint egyes büntetőjogi tárgyú törvények jogharmonizációs célú módosításáról"
  • 2017/69 -- 2017. évi XXXIX. törvény,"Az európai uniós és a nemzetközi bűnügyi
  • 2017/166 -- 2017. évi CXX. törvény,A használati minták oltalmára vonatkozó szabályozás módosításáról"
  • 2017/216 -- 2017. évi CXCVII. törvény,A büntetőeljárásról szóló 2017. évi XC. törvényhatálybalépésével összefüggő egyes törvények módosításáról
  • 2018/207 -- 2018. évi CXVIII. törvény,"Egyes egészségügyi és egészségbiztosítási tárgyú, valamint az egészségüggyel összefüggő egyes törvények módosításáról"
  • 2018/207 -- 2018. évi CXXII. törvény,Egyes büntetőjogi tárgyú és más kapcsolódó törvények módosításáról

Rewrite next_identifier to support multiple possible "next" values

To actually do the harder part of #5, the next_identifier detection has to be rewritten to either return multiple values, or to be a "check" instead of a "return".

The test data there:
"A Btk. 283. § (2) és (2a) bekezdése helyébe a következő rendelkezések lépnek:"

Debug html output

There should be a new output format, called debug_html in generate_output.py

It should be the same (with the same backend, really) as the "generic" html output, but with added coloring and stuff to show parsing results.

The following code changes are necessary:
A new choice here: https://github.com/badicsalex/hun_law/blob/master/hun_law/cli.py#L51
A new classmethod named output_debug_html() (since it is automagically called by https://github.com/badicsalex/hun_law/blob/master/hun_law/cli.py#L100 ), that also just calls generate_html_for_act, but with a new debug=True parameter

From this point, it gets harder, since propagating this variable through all of the generators sounds like pain. For now maybe it would be easier to conditionally link a new stylesheet ( https://github.com/badicsalex/hun_law/blob/master/hun_law/output/html.py#L231 ) called style_debug.css, and use some special definitions for CSS classes (like .has_metadata) , and then we would unconditionally use these classes during generation. This way the non-debug version would look the same, but with the debug version, things would be colored and styled differently.

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.