wipo-gbd-transformation 1.1.105__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gbdtransformation/__init__.py +0 -0
- gbdtransformation/brands/__init__.py +44 -0
- gbdtransformation/brands/aetm/__init__.py +5 -0
- gbdtransformation/brands/aetm/filters.py +84 -0
- gbdtransformation/brands/aetm/schema +87 -0
- gbdtransformation/brands/aetm/template.yml +1 -0
- gbdtransformation/brands/aetm/tests/__init__.py +0 -0
- gbdtransformation/brands/altm/__init__.py +6 -0
- gbdtransformation/brands/altm/filters.py +107 -0
- gbdtransformation/brands/altm/schema +83 -0
- gbdtransformation/brands/altm/template.yml +1 -0
- gbdtransformation/brands/altm/tests/__init__.py +0 -0
- gbdtransformation/brands/altm/tests/altm.xml +93 -0
- gbdtransformation/brands/aptm/__init__.py +15 -0
- gbdtransformation/brands/aptm/filters.py +80 -0
- gbdtransformation/brands/aptm/schema +87 -0
- gbdtransformation/brands/aptm/template.yml +1 -0
- gbdtransformation/brands/aptm/tests/__init__.py +0 -0
- gbdtransformation/brands/attm/__init__.py +6 -0
- gbdtransformation/brands/attm/filters.py +76 -0
- gbdtransformation/brands/attm/schema +52 -0
- gbdtransformation/brands/attm/template.yml +85 -0
- gbdtransformation/brands/autm/__init__.py +2 -0
- gbdtransformation/brands/autm/filters.py +222 -0
- gbdtransformation/brands/autm/schema +91 -0
- gbdtransformation/brands/autm/template.yml +157 -0
- gbdtransformation/brands/bgtm/__init__.py +5 -0
- gbdtransformation/brands/bgtm/filters.py +112 -0
- gbdtransformation/brands/bgtm/schema +314 -0
- gbdtransformation/brands/bgtm/template.yml +154 -0
- gbdtransformation/brands/bhtm/__init__.py +12 -0
- gbdtransformation/brands/bhtm/filters.py +87 -0
- gbdtransformation/brands/bhtm/schema +87 -0
- gbdtransformation/brands/bhtm/template.yml +1 -0
- gbdtransformation/brands/bhtm/tests/__init__.py +0 -0
- gbdtransformation/brands/bntm/__init__.py +2 -0
- gbdtransformation/brands/bntm/filters.py +75 -0
- gbdtransformation/brands/bntm/schema +87 -0
- gbdtransformation/brands/bntm/template.yml +1 -0
- gbdtransformation/brands/bntm/tests/__init__.py +0 -0
- gbdtransformation/brands/brtm/__init__.py +3 -0
- gbdtransformation/brands/brtm/filters.py +169 -0
- gbdtransformation/brands/brtm/schema +86 -0
- gbdtransformation/brands/brtm/template.yml +22 -0
- gbdtransformation/brands/brtm/tests/__init__.py +0 -0
- gbdtransformation/brands/brtm/tests/test01.xml +53 -0
- gbdtransformation/brands/bttm/__init__.py +10 -0
- gbdtransformation/brands/bttm/filters.py +80 -0
- gbdtransformation/brands/bttm/schema +87 -0
- gbdtransformation/brands/bttm/template.yml +1 -0
- gbdtransformation/brands/bttm/tests/__init__.py +0 -0
- gbdtransformation/brands/bwtm/__init__.py +13 -0
- gbdtransformation/brands/bwtm/filters.py +90 -0
- gbdtransformation/brands/bwtm/schema +87 -0
- gbdtransformation/brands/bwtm/template.yml +1 -0
- gbdtransformation/brands/bwtm/tests/__init__.py +0 -0
- gbdtransformation/brands/bztm/__init__.py +16 -0
- gbdtransformation/brands/bztm/filters.py +77 -0
- gbdtransformation/brands/bztm/schema +87 -0
- gbdtransformation/brands/bztm/template.yml +1 -0
- gbdtransformation/brands/bztm/tests/__init__.py +0 -0
- gbdtransformation/brands/catm/__init__.py +10 -0
- gbdtransformation/brands/catm/filters.py +272 -0
- gbdtransformation/brands/catm/schema +804 -0
- gbdtransformation/brands/catm/template.yml +230 -0
- gbdtransformation/brands/chtm/__init__.py +6 -0
- gbdtransformation/brands/chtm/filters.py +161 -0
- gbdtransformation/brands/chtm/schema +79 -0
- gbdtransformation/brands/chtm/template.yml +121 -0
- gbdtransformation/brands/cltm/__init__.py +2 -0
- gbdtransformation/brands/cltm/filters.py +80 -0
- gbdtransformation/brands/cltm/schema +86 -0
- gbdtransformation/brands/cltm/template.yml +1 -0
- gbdtransformation/brands/cltm/tests/__init__.py +0 -0
- gbdtransformation/brands/crtm/__init__.py +5 -0
- gbdtransformation/brands/crtm/filters.py +196 -0
- gbdtransformation/brands/crtm/schema +86 -0
- gbdtransformation/brands/crtm/template.yml +1 -0
- gbdtransformation/brands/crtm/tests/__init__.py +0 -0
- gbdtransformation/brands/cutm/__init__.py +10 -0
- gbdtransformation/brands/cutm/filters.py +94 -0
- gbdtransformation/brands/cutm/schema +86 -0
- gbdtransformation/brands/cutm/template.yml +4 -0
- gbdtransformation/brands/cutm/tests/__init__.py +0 -0
- gbdtransformation/brands/detm/__init__.py +19 -0
- gbdtransformation/brands/detm/filters.py +75 -0
- gbdtransformation/brands/detm/schema +511 -0
- gbdtransformation/brands/detm/template.yml +151 -0
- gbdtransformation/brands/dktm/__init__.py +7 -0
- gbdtransformation/brands/dktm/filters.py +90 -0
- gbdtransformation/brands/dktm/schema +95 -0
- gbdtransformation/brands/dktm/template.yml +114 -0
- gbdtransformation/brands/dztm/__init__.py +10 -0
- gbdtransformation/brands/dztm/filters.py +81 -0
- gbdtransformation/brands/dztm/schema +87 -0
- gbdtransformation/brands/dztm/template.yml +1 -0
- gbdtransformation/brands/dztm/tests/__init__.py +0 -0
- gbdtransformation/brands/eetm/__init__.py +8 -0
- gbdtransformation/brands/eetm/filters.py +115 -0
- gbdtransformation/brands/eetm/schema +48 -0
- gbdtransformation/brands/eetm/template.yml +98 -0
- gbdtransformation/brands/egtm/__init__.py +5 -0
- gbdtransformation/brands/egtm/filters.py +73 -0
- gbdtransformation/brands/egtm/schema +87 -0
- gbdtransformation/brands/egtm/template.yml +1 -0
- gbdtransformation/brands/egtm/tests/__init__.py +0 -0
- gbdtransformation/brands/emtm/__init__.py +3 -0
- gbdtransformation/brands/emtm/filters.py +96 -0
- gbdtransformation/brands/emtm/schema +314 -0
- gbdtransformation/brands/emtm/template.yml +125 -0
- gbdtransformation/brands/estm/__init__.py +3 -0
- gbdtransformation/brands/estm/filters.py +110 -0
- gbdtransformation/brands/estm/schema +99 -0
- gbdtransformation/brands/estm/template.yml +144 -0
- gbdtransformation/brands/filters.py +125 -0
- gbdtransformation/brands/frtm/__init__.py +2 -0
- gbdtransformation/brands/frtm/filters.py +172 -0
- gbdtransformation/brands/frtm/schema +300 -0
- gbdtransformation/brands/frtm/template.yml +203 -0
- gbdtransformation/brands/gbtm/__init__.py +3 -0
- gbdtransformation/brands/gbtm/filters.py +122 -0
- gbdtransformation/brands/gbtm/schema +362 -0
- gbdtransformation/brands/gbtm/template.yml +147 -0
- gbdtransformation/brands/gdtm/__init__.py +5 -0
- gbdtransformation/brands/gdtm/filters.py +68 -0
- gbdtransformation/brands/gdtm/schema +87 -0
- gbdtransformation/brands/gdtm/template.yml +1 -0
- gbdtransformation/brands/gdtm/tests/__init__.py +0 -0
- gbdtransformation/brands/getm/__init__.py +3 -0
- gbdtransformation/brands/getm/filters.py +68 -0
- gbdtransformation/brands/getm/schema +209 -0
- gbdtransformation/brands/getm/template.yml +142 -0
- gbdtransformation/brands/ghtm/__init__.py +12 -0
- gbdtransformation/brands/ghtm/filters.py +74 -0
- gbdtransformation/brands/ghtm/schema +86 -0
- gbdtransformation/brands/ghtm/template.yml +1 -0
- gbdtransformation/brands/ghtm/tests/__init__.py +0 -0
- gbdtransformation/brands/gmtm/__init__.py +7 -0
- gbdtransformation/brands/gmtm/filters.py +70 -0
- gbdtransformation/brands/gmtm/schema +86 -0
- gbdtransformation/brands/gmtm/template.yml +1 -0
- gbdtransformation/brands/gmtm/tests/__init__.py +0 -0
- gbdtransformation/brands/gstm/__init__.py +2 -0
- gbdtransformation/brands/gstm/filters.py +75 -0
- gbdtransformation/brands/gstm/template.gs.yml +56 -0
- gbdtransformation/brands/gstm/template.yml +32 -0
- gbdtransformation/brands/hrtm/__init__.py +3 -0
- gbdtransformation/brands/hrtm/filters.py +158 -0
- gbdtransformation/brands/hrtm/schema +43 -0
- gbdtransformation/brands/hrtm/template.yml +205 -0
- gbdtransformation/brands/idtm/__init__.py +12 -0
- gbdtransformation/brands/idtm/filters.py +95 -0
- gbdtransformation/brands/idtm/schema +86 -0
- gbdtransformation/brands/idtm/template.yml +1 -0
- gbdtransformation/brands/idtm/tests/__init__.py +0 -0
- gbdtransformation/brands/idtm/tests/translation.xml +106 -0
- gbdtransformation/brands/idtm/tests/unicode.xml +120 -0
- gbdtransformation/brands/iltm/__init__.py +2 -0
- gbdtransformation/brands/iltm/filters.py +91 -0
- gbdtransformation/brands/iltm/schema +87 -0
- gbdtransformation/brands/iltm/template.yml +213 -0
- gbdtransformation/brands/iltm/tests/__init__.py +0 -0
- gbdtransformation/brands/iltm/tests/cancellations.xml +156 -0
- gbdtransformation/brands/iltm/tests/collcert.xml +51 -0
- gbdtransformation/brands/iltm/tests/eventdata.xml +83 -0
- gbdtransformation/brands/iltm/tests/international.xml +80 -0
- gbdtransformation/brands/iltm/tests/markfeature.xml +117 -0
- gbdtransformation/brands/iltm/tests/noevents.xml +44 -0
- gbdtransformation/brands/iltm/tests/opposition.xml +147 -0
- gbdtransformation/brands/iltm/tests/tlit.xml +77 -0
- gbdtransformation/brands/intm/__init__.py +6 -0
- gbdtransformation/brands/intm/filters.py +75 -0
- gbdtransformation/brands/intm/schema +127 -0
- gbdtransformation/brands/intm/template.yml +112 -0
- gbdtransformation/brands/ipas/__init__.py +0 -0
- gbdtransformation/brands/ipas/filters.py +203 -0
- gbdtransformation/brands/ipas/template.yml +185 -0
- gbdtransformation/brands/istm/__init__.py +10 -0
- gbdtransformation/brands/istm/filters.py +60 -0
- gbdtransformation/brands/istm/schema +53 -0
- gbdtransformation/brands/istm/template.yml +119 -0
- gbdtransformation/brands/ittm/__init__.py +6 -0
- gbdtransformation/brands/ittm/filters.py +114 -0
- gbdtransformation/brands/ittm/schema +104 -0
- gbdtransformation/brands/ittm/template.yml +107 -0
- gbdtransformation/brands/jotm/__init__.py +8 -0
- gbdtransformation/brands/jotm/filters.py +61 -0
- gbdtransformation/brands/jotm/schema +86 -0
- gbdtransformation/brands/jotm/template.yml +1 -0
- gbdtransformation/brands/jotm/tests/__init__.py +0 -0
- gbdtransformation/brands/jotm/tests/test.xml +84 -0
- gbdtransformation/brands/jptm/__init__.py +6 -0
- gbdtransformation/brands/jptm/filters.py +79 -0
- gbdtransformation/brands/jptm/schema +39 -0
- gbdtransformation/brands/jptm/template.yml +113 -0
- gbdtransformation/brands/ketm/__init__.py +9 -0
- gbdtransformation/brands/ketm/filters.py +77 -0
- gbdtransformation/brands/ketm/schema +86 -0
- gbdtransformation/brands/ketm/template.yml +1 -0
- gbdtransformation/brands/ketm/tests/__init__.py +0 -0
- gbdtransformation/brands/kgtm/__init__.py +6 -0
- gbdtransformation/brands/kgtm/filters.py +67 -0
- gbdtransformation/brands/kgtm/schema +27 -0
- gbdtransformation/brands/kgtm/template.yml +58 -0
- gbdtransformation/brands/khtm/__init__.py +14 -0
- gbdtransformation/brands/khtm/filters.py +134 -0
- gbdtransformation/brands/khtm/schema +86 -0
- gbdtransformation/brands/khtm/template.yml +1 -0
- gbdtransformation/brands/khtm/tests/__init__.py +0 -0
- gbdtransformation/brands/khtm/tests/khtm.xml +122 -0
- gbdtransformation/brands/krtm/__init__.py +6 -0
- gbdtransformation/brands/krtm/filters.py +136 -0
- gbdtransformation/brands/krtm/schema +179 -0
- gbdtransformation/brands/krtm/template.yml +186 -0
- gbdtransformation/brands/kwtm/__init__.py +2 -0
- gbdtransformation/brands/kwtm/filters.py +69 -0
- gbdtransformation/brands/kwtm/schema +86 -0
- gbdtransformation/brands/kwtm/template.yml +1 -0
- gbdtransformation/brands/kwtm/tests/__init__.py +0 -0
- gbdtransformation/brands/kwtm/tests/test.xml +84 -0
- gbdtransformation/brands/kztm/__init__.py +242 -0
- gbdtransformation/brands/kztm/filters.py +140 -0
- gbdtransformation/brands/kztm/schema +36 -0
- gbdtransformation/brands/kztm/template.yml +117 -0
- gbdtransformation/brands/latm/__init__.py +7 -0
- gbdtransformation/brands/latm/filters.py +93 -0
- gbdtransformation/brands/latm/schema +86 -0
- gbdtransformation/brands/latm/template.yml +1 -0
- gbdtransformation/brands/latm/tests/__init__.py +0 -0
- gbdtransformation/brands/latm/tests/test.xml +112 -0
- gbdtransformation/brands/lktm/__init__.py +5 -0
- gbdtransformation/brands/lktm/filters.py +83 -0
- gbdtransformation/brands/lktm/schema +87 -0
- gbdtransformation/brands/lktm/template.yml +1 -0
- gbdtransformation/brands/lktm/tests/__init__.py +0 -0
- gbdtransformation/brands/matm/__init__.py +3 -0
- gbdtransformation/brands/matm/filters.py +36 -0
- gbdtransformation/brands/matm/schema +33 -0
- gbdtransformation/brands/matm/template.yml +72 -0
- gbdtransformation/brands/mctm/__init__.py +3 -0
- gbdtransformation/brands/mctm/filters.py +65 -0
- gbdtransformation/brands/mctm/schema +128 -0
- gbdtransformation/brands/mctm/template.yml +122 -0
- gbdtransformation/brands/mdtm/__init__.py +3 -0
- gbdtransformation/brands/mdtm/filters.py +64 -0
- gbdtransformation/brands/mdtm/schema +128 -0
- gbdtransformation/brands/mdtm/template.yml +122 -0
- gbdtransformation/brands/metm/__init__.py +5 -0
- gbdtransformation/brands/metm/filters.py +87 -0
- gbdtransformation/brands/metm/schema +87 -0
- gbdtransformation/brands/metm/template.yml +1 -0
- gbdtransformation/brands/metm/tests/__init__.py +0 -0
- gbdtransformation/brands/mgtm/__init__.py +7 -0
- gbdtransformation/brands/mgtm/filters.py +73 -0
- gbdtransformation/brands/mgtm/schema +86 -0
- gbdtransformation/brands/mgtm/template.yml +1 -0
- gbdtransformation/brands/mgtm/tests/__init__.py +0 -0
- gbdtransformation/brands/mgtm/tests/test.xml +107 -0
- gbdtransformation/brands/mktm/__init__.py +6 -0
- gbdtransformation/brands/mktm/filters.py +63 -0
- gbdtransformation/brands/mktm/schema +80 -0
- gbdtransformation/brands/mktm/template.yml +112 -0
- gbdtransformation/brands/mntm/__init__.py +11 -0
- gbdtransformation/brands/mntm/filters.py +99 -0
- gbdtransformation/brands/mntm/schema +86 -0
- gbdtransformation/brands/mntm/template.yml +1 -0
- gbdtransformation/brands/mntm/tests/__init__.py +0 -0
- gbdtransformation/brands/mwtm/__init__.py +11 -0
- gbdtransformation/brands/mwtm/filters.py +80 -0
- gbdtransformation/brands/mwtm/schema +86 -0
- gbdtransformation/brands/mwtm/template.yml +1 -0
- gbdtransformation/brands/mwtm/tests/__init__.py +0 -0
- gbdtransformation/brands/mxtm/__init__.py +6 -0
- gbdtransformation/brands/mxtm/filters.py +77 -0
- gbdtransformation/brands/mxtm/schema +81 -0
- gbdtransformation/brands/mxtm/template.yml +127 -0
- gbdtransformation/brands/mytm/__init__.py +17 -0
- gbdtransformation/brands/mytm/filters.py +125 -0
- gbdtransformation/brands/mytm/schema +86 -0
- gbdtransformation/brands/mytm/template.yml +1 -0
- gbdtransformation/brands/mytm/tests/__init__.py +0 -0
- gbdtransformation/brands/mytm/tests/example.xml +132 -0
- gbdtransformation/brands/mytm/tests/mytm.xml +132 -0
- gbdtransformation/brands/mztm/__init__.py +14 -0
- gbdtransformation/brands/mztm/filters.py +89 -0
- gbdtransformation/brands/mztm/schema +86 -0
- gbdtransformation/brands/mztm/template.yml +1 -0
- gbdtransformation/brands/mztm/tests/__init__.py +0 -0
- gbdtransformation/brands/natm/__init__.py +11 -0
- gbdtransformation/brands/natm/filters.py +88 -0
- gbdtransformation/brands/natm/schema +86 -0
- gbdtransformation/brands/natm/template.yml +1 -0
- gbdtransformation/brands/natm/tests/__init__.py +0 -0
- gbdtransformation/brands/notm/__init__.py +5 -0
- gbdtransformation/brands/notm/filters.py +170 -0
- gbdtransformation/brands/notm/template.yml +289 -0
- gbdtransformation/brands/nztm/__init__.py +3 -0
- gbdtransformation/brands/nztm/filters.py +126 -0
- gbdtransformation/brands/nztm/schema +197 -0
- gbdtransformation/brands/nztm/template.yml +161 -0
- gbdtransformation/brands/oatm/__init__.py +18 -0
- gbdtransformation/brands/oatm/filters.py +82 -0
- gbdtransformation/brands/oatm/schema +87 -0
- gbdtransformation/brands/oatm/template.yml +1 -0
- gbdtransformation/brands/oatm/tests/__init__.py +0 -0
- gbdtransformation/brands/omtm/__init__.py +5 -0
- gbdtransformation/brands/omtm/filters.py +60 -0
- gbdtransformation/brands/omtm/schema +86 -0
- gbdtransformation/brands/omtm/template.yml +1 -0
- gbdtransformation/brands/omtm/tests/__init__.py +0 -0
- gbdtransformation/brands/omtm/tests/test.xml +84 -0
- gbdtransformation/brands/patm/__init__.py +8 -0
- gbdtransformation/brands/patm/filters.py +149 -0
- gbdtransformation/brands/patm/template.yml +40 -0
- gbdtransformation/brands/petm/__init__.py +6 -0
- gbdtransformation/brands/petm/filters.py +90 -0
- gbdtransformation/brands/petm/schema +114 -0
- gbdtransformation/brands/petm/template.yml +143 -0
- gbdtransformation/brands/pgtm/__init__.py +5 -0
- gbdtransformation/brands/pgtm/filters.py +76 -0
- gbdtransformation/brands/pgtm/schema +86 -0
- gbdtransformation/brands/pgtm/template.yml +1 -0
- gbdtransformation/brands/pgtm/tests/__init__.py +0 -0
- gbdtransformation/brands/pgtm/tests/pgtm.xml +128 -0
- gbdtransformation/brands/phtm/__init__.py +14 -0
- gbdtransformation/brands/phtm/filters.py +169 -0
- gbdtransformation/brands/phtm/schema +79 -0
- gbdtransformation/brands/phtm/schema.classic +50 -0
- gbdtransformation/brands/phtm/template.classic.yml +102 -0
- gbdtransformation/brands/phtm/template.yml +189 -0
- gbdtransformation/brands/pttm/__init__.py +0 -0
- gbdtransformation/brands/pttm/filters.py +0 -0
- gbdtransformation/brands/pttm/schema +0 -0
- gbdtransformation/brands/pttm/template.yml +0 -0
- gbdtransformation/brands/pytm/__init__.py +6 -0
- gbdtransformation/brands/pytm/filters.py +136 -0
- gbdtransformation/brands/pytm/template.yml +40 -0
- gbdtransformation/brands/qatm/__init__.py +5 -0
- gbdtransformation/brands/qatm/filters.py +81 -0
- gbdtransformation/brands/qatm/schema +87 -0
- gbdtransformation/brands/qatm/template.yml +1 -0
- gbdtransformation/brands/qatm/tests/__init__.py +0 -0
- gbdtransformation/brands/rotm/__init__.py +3 -0
- gbdtransformation/brands/rotm/filters.py +82 -0
- gbdtransformation/brands/rotm/schema +128 -0
- gbdtransformation/brands/rotm/template.yml +121 -0
- gbdtransformation/brands/rstm/__init__.py +5 -0
- gbdtransformation/brands/rstm/filters.py +88 -0
- gbdtransformation/brands/rstm/schema +86 -0
- gbdtransformation/brands/rstm/template.yml +1 -0
- gbdtransformation/brands/rstm/tests/__init__.py +0 -0
- gbdtransformation/brands/rutm/__init__.py +14 -0
- gbdtransformation/brands/rutm/filters.py +82 -0
- gbdtransformation/brands/rutm/schema +94 -0
- gbdtransformation/brands/rutm/template.yml +105 -0
- gbdtransformation/brands/sdtm/__init__.py +5 -0
- gbdtransformation/brands/sdtm/filters.py +59 -0
- gbdtransformation/brands/sdtm/schema +86 -0
- gbdtransformation/brands/sdtm/template.yml +1 -0
- gbdtransformation/brands/sdtm/tests/__init__.py +0 -0
- gbdtransformation/brands/sdtm/tests/test.xml +84 -0
- gbdtransformation/brands/sgtm/__init__.py +16 -0
- gbdtransformation/brands/sgtm/filters.py +177 -0
- gbdtransformation/brands/sgtm/schema +213 -0
- gbdtransformation/brands/sgtm/template.article6ter.yml +48 -0
- gbdtransformation/brands/sgtm/template.r13.yml +45 -0
- gbdtransformation/brands/sgtm/template.trademark.yml +148 -0
- gbdtransformation/brands/sgtm/template.yml +9 -0
- gbdtransformation/brands/smtm/__init__.py +6 -0
- gbdtransformation/brands/smtm/filters.py +77 -0
- gbdtransformation/brands/smtm/schema +86 -0
- gbdtransformation/brands/smtm/template.yml +1 -0
- gbdtransformation/brands/smtm/tests/__init__.py +0 -0
- gbdtransformation/brands/smtm/tests/test.xml +133 -0
- gbdtransformation/brands/solrjtm/__init__.py +1 -0
- gbdtransformation/brands/solrjtm/filters.py +85 -0
- gbdtransformation/brands/solrjtm/template.yml +195 -0
- gbdtransformation/brands/st66tm/__init__.py +1 -0
- gbdtransformation/brands/st66tm/filters.py +33 -0
- gbdtransformation/brands/st66tm/st66tm.tmpl +219 -0
- gbdtransformation/brands/sttm/__init__.py +18 -0
- gbdtransformation/brands/sttm/filters.py +72 -0
- gbdtransformation/brands/sttm/schema +83 -0
- gbdtransformation/brands/sttm/template.yml +1 -0
- gbdtransformation/brands/sttm/tests/__init__.py +0 -0
- gbdtransformation/brands/sztm/__init__.py +14 -0
- gbdtransformation/brands/sztm/filters.py +72 -0
- gbdtransformation/brands/sztm/schema +86 -0
- gbdtransformation/brands/sztm/template.yml +1 -0
- gbdtransformation/brands/sztm/tests/__init__.py +0 -0
- gbdtransformation/brands/thtm/__init__.py +2 -0
- gbdtransformation/brands/thtm/filters.py +86 -0
- gbdtransformation/brands/thtm/schema +86 -0
- gbdtransformation/brands/thtm/template.yml +175 -0
- gbdtransformation/brands/thtm/tests/__init__.py +0 -0
- gbdtransformation/brands/thtm/tests/test.xml +84 -0
- gbdtransformation/brands/tntm/__init__.py +16 -0
- gbdtransformation/brands/tntm/filters.py +89 -0
- gbdtransformation/brands/tntm/schema +87 -0
- gbdtransformation/brands/tntm/template.yml +1 -0
- gbdtransformation/brands/tntm/tests/__init__.py +0 -0
- gbdtransformation/brands/totm/__init__.py +5 -0
- gbdtransformation/brands/totm/filters.py +72 -0
- gbdtransformation/brands/totm/schema +86 -0
- gbdtransformation/brands/totm/template.yml +1 -0
- gbdtransformation/brands/totm/tests/__init__.py +0 -0
- gbdtransformation/brands/totm/tests/nofeature.xml +106 -0
- gbdtransformation/brands/totm/tests/syntax.xml +162 -0
- gbdtransformation/brands/totm/tests/test.xml +84 -0
- gbdtransformation/brands/tttm/__init__.py +17 -0
- gbdtransformation/brands/tttm/filters.py +79 -0
- gbdtransformation/brands/tttm/schema +87 -0
- gbdtransformation/brands/tttm/template.yml +1 -0
- gbdtransformation/brands/tttm/tests/__init__.py +0 -0
- gbdtransformation/brands/uatm/__init__.py +18 -0
- gbdtransformation/brands/uatm/filters.py +70 -0
- gbdtransformation/brands/uatm/schema +158 -0
- gbdtransformation/brands/uatm/template.yml +148 -0
- gbdtransformation/brands/ustm/__init__.py +187 -0
- gbdtransformation/brands/ustm/filters.py +227 -0
- gbdtransformation/brands/ustm/schema +2183 -0
- gbdtransformation/brands/ustm/template.yml +219 -0
- gbdtransformation/brands/uytm/__init__.py +3 -0
- gbdtransformation/brands/uytm/filters.py +64 -0
- gbdtransformation/brands/uytm/schema +106 -0
- gbdtransformation/brands/uytm/template.yml +137 -0
- gbdtransformation/brands/vctm/__init__.py +5 -0
- gbdtransformation/brands/vctm/filters.py +75 -0
- gbdtransformation/brands/vctm/schema +87 -0
- gbdtransformation/brands/vctm/template.yml +1 -0
- gbdtransformation/brands/vctm/tests/__init__.py +0 -0
- gbdtransformation/brands/vntm/__init__.py +9 -0
- gbdtransformation/brands/vntm/filters.py +84 -0
- gbdtransformation/brands/vntm/schema +86 -0
- gbdtransformation/brands/vntm/template.yml +1 -0
- gbdtransformation/brands/vntm/tests/__init__.py +0 -0
- gbdtransformation/brands/vutm/__init__.py +5 -0
- gbdtransformation/brands/vutm/filters.py +67 -0
- gbdtransformation/brands/vutm/schema +83 -0
- gbdtransformation/brands/vutm/template.yml +1 -0
- gbdtransformation/brands/vutm/tests/__init__.py +0 -0
- gbdtransformation/brands/whoinn/__init__.py +6 -0
- gbdtransformation/brands/whoinn/filters.py +46 -0
- gbdtransformation/brands/whoinn/schema +4 -0
- gbdtransformation/brands/whoinn/template.yml +45 -0
- gbdtransformation/brands/wo6ter/__init__.py +1 -0
- gbdtransformation/brands/wo6ter/filters.py +88 -0
- gbdtransformation/brands/wo6ter/template.yml +88 -0
- gbdtransformation/brands/woao/__init__.py +1 -0
- gbdtransformation/brands/woao/filters.py +107 -0
- gbdtransformation/brands/woao/schema +116 -0
- gbdtransformation/brands/woao/template.yml +90 -0
- gbdtransformation/brands/woptm/__init__.py +3 -0
- gbdtransformation/brands/woptm/filters.py +42 -0
- gbdtransformation/brands/woptm/template.yml +2 -0
- gbdtransformation/brands/wotm/__init__.py +3 -0
- gbdtransformation/brands/wotm/filters.py +127 -0
- gbdtransformation/brands/wotm/schema +218 -0
- gbdtransformation/brands/wotm/template.yml +220 -0
- gbdtransformation/brands/wstm/__init__.py +6 -0
- gbdtransformation/brands/wstm/filters.py +67 -0
- gbdtransformation/brands/wstm/schema +86 -0
- gbdtransformation/brands/wstm/template.yml +1 -0
- gbdtransformation/brands/wstm/tests/__init__.py +0 -0
- gbdtransformation/brands/wstm/tests/test.xml +132 -0
- gbdtransformation/brands/xxxx/__init__.py +6 -0
- gbdtransformation/brands/xxxx/filters.py +60 -0
- gbdtransformation/brands/xxxx/schema +4 -0
- gbdtransformation/brands/xxxx/template.yml +363 -0
- gbdtransformation/brands/zmtm/__init__.py +12 -0
- gbdtransformation/brands/zmtm/filters.py +79 -0
- gbdtransformation/brands/zmtm/schema +86 -0
- gbdtransformation/brands/zmtm/template.yml +1 -0
- gbdtransformation/brands/zmtm/tests/__init__.py +0 -0
- gbdtransformation/brands/zwtm/__init__.py +3 -0
- gbdtransformation/brands/zwtm/filters.py +86 -0
- gbdtransformation/brands/zwtm/schema +86 -0
- gbdtransformation/brands/zwtm/template.yml +1 -0
- gbdtransformation/brands/zwtm/tests/__init__.py +0 -0
- gbdtransformation/common/__init__.py +383 -0
- gbdtransformation/common/filters.py +418 -0
- gbdtransformation/common/jpap/__init__.py +1 -0
- gbdtransformation/common/jpap/filters.py +83 -0
- gbdtransformation/common/jpap/template.yml +37 -0
- gbdtransformation/common/jpbase/__init__.py +1 -0
- gbdtransformation/common/jpbase/filters.py +93 -0
- gbdtransformation/common/jpbase/template.yml +51 -0
- gbdtransformation/common/jprp/__init__.py +1 -0
- gbdtransformation/common/jprp/filters.py +86 -0
- gbdtransformation/common/jprp/template.yml +51 -0
- gbdtransformation/common/navigation.tmpl +12 -0
- gbdtransformation/commons/__init__.py +0 -0
- gbdtransformation/commons/emap/__init__.py +1 -0
- gbdtransformation/commons/emap/filters.py +16 -0
- gbdtransformation/commons/emap/template.yml +55 -0
- gbdtransformation/commons/emrp/__init__.py +1 -0
- gbdtransformation/commons/emrp/filters.py +14 -0
- gbdtransformation/commons/emrp/template.yml +53 -0
- gbdtransformation/commons/filters.py +3 -0
- gbdtransformation/designs/__init__.py +8 -0
- gbdtransformation/designs/alid/__init__.py +5 -0
- gbdtransformation/designs/alid/filters.py +69 -0
- gbdtransformation/designs/alid/schema +89 -0
- gbdtransformation/designs/alid/template.yml +1 -0
- gbdtransformation/designs/bnid/__init__.py +5 -0
- gbdtransformation/designs/bnid/filters.py +61 -0
- gbdtransformation/designs/bnid/schema +80 -0
- gbdtransformation/designs/bnid/template.yml +1 -0
- gbdtransformation/designs/bwid/__init__.py +6 -0
- gbdtransformation/designs/bwid/filters.py +64 -0
- gbdtransformation/designs/bwid/schema +101 -0
- gbdtransformation/designs/bwid/template.yml +1 -0
- gbdtransformation/designs/crid/__init__.py +5 -0
- gbdtransformation/designs/crid/filters.py +63 -0
- gbdtransformation/designs/crid/schema +94 -0
- gbdtransformation/designs/crid/template.yml +1 -0
- gbdtransformation/designs/cuid/__init__.py +5 -0
- gbdtransformation/designs/cuid/filters.py +60 -0
- gbdtransformation/designs/cuid/schema +98 -0
- gbdtransformation/designs/cuid/template.yml +1 -0
- gbdtransformation/designs/egid/__init__.py +5 -0
- gbdtransformation/designs/egid/filters.py +62 -0
- gbdtransformation/designs/egid/schema +82 -0
- gbdtransformation/designs/egid/template.yml +1 -0
- gbdtransformation/designs/filters.py +73 -0
- gbdtransformation/designs/idid/__init__.py +5 -0
- gbdtransformation/designs/idid/filters.py +67 -0
- gbdtransformation/designs/idid/schema +102 -0
- gbdtransformation/designs/idid/template.yml +1 -0
- gbdtransformation/designs/ipas/__init__.py +0 -0
- gbdtransformation/designs/ipas/filters.py +181 -0
- gbdtransformation/designs/ipas/template.yml +174 -0
- gbdtransformation/designs/joid/__init__.py +6 -0
- gbdtransformation/designs/joid/filters.py +62 -0
- gbdtransformation/designs/joid/schema +97 -0
- gbdtransformation/designs/joid/template.yml +1 -0
- gbdtransformation/designs/keid/__init__.py +5 -0
- gbdtransformation/designs/keid/filters.py +62 -0
- gbdtransformation/designs/keid/schema +99 -0
- gbdtransformation/designs/keid/template.yml +1 -0
- gbdtransformation/designs/khid/__init__.py +5 -0
- gbdtransformation/designs/khid/filters.py +63 -0
- gbdtransformation/designs/khid/schema +100 -0
- gbdtransformation/designs/khid/template.yml +1 -0
- gbdtransformation/designs/laid/__init__.py +5 -0
- gbdtransformation/designs/laid/filters.py +61 -0
- gbdtransformation/designs/laid/schema +94 -0
- gbdtransformation/designs/laid/template.yml +1 -0
- gbdtransformation/designs/mnid/__init__.py +6 -0
- gbdtransformation/designs/mnid/filters.py +62 -0
- gbdtransformation/designs/mnid/schema +98 -0
- gbdtransformation/designs/mnid/template.yml +1 -0
- gbdtransformation/designs/myid/__init__.py +5 -0
- gbdtransformation/designs/myid/filters.py +60 -0
- gbdtransformation/designs/myid/schema +95 -0
- gbdtransformation/designs/myid/template.yml +1 -0
- gbdtransformation/designs/phid/__init__.py +5 -0
- gbdtransformation/designs/phid/filters.py +70 -0
- gbdtransformation/designs/phid/schema +95 -0
- gbdtransformation/designs/phid/template.yml +1 -0
- gbdtransformation/designs/sgid/__init__.py +6 -0
- gbdtransformation/designs/sgid/filters.py +66 -0
- gbdtransformation/designs/sgid/schema +115 -0
- gbdtransformation/designs/sgid/template.yml +1 -0
- gbdtransformation/designs/thid/__init__.py +4 -0
- gbdtransformation/designs/thid/filters.py +64 -0
- gbdtransformation/designs/thid/schema +98 -0
- gbdtransformation/designs/thid/template.yml +1 -0
- gbdtransformation/designs/tnid/__init__.py +5 -0
- gbdtransformation/designs/tnid/filters.py +66 -0
- gbdtransformation/designs/tnid/schema +96 -0
- gbdtransformation/designs/tnid/template.yml +1 -0
- gbdtransformation/designs/vnid/__init__.py +5 -0
- gbdtransformation/designs/vnid/filters.py +62 -0
- gbdtransformation/designs/vnid/schema +97 -0
- gbdtransformation/designs/vnid/template.yml +1 -0
- gbdtransformation/designs/woid/__init__.py +2 -0
- gbdtransformation/designs/woid/filters.py +372 -0
- gbdtransformation/designs/woid/schema +592 -0
- gbdtransformation/designs/woid/template.yml +516 -0
- gbdtransformation/designs/xxid/__init__.py +2 -0
- gbdtransformation/designs/xxid/filters.py +60 -0
- gbdtransformation/designs/xxid/schema +4 -0
- gbdtransformation/designs/xxid/template.yml +358 -0
- gbdtransformation/execs-nico.py +709 -0
- gbdtransformation/execs.py +734 -0
- gbdtransformation/gbd-transform.exec.tgz +0 -0
- gbdtransformation/parser.py +190 -0
- gbdtransformation/renders.py +149 -0
- gbdtransformation/utilities/ISOCountryCodeType-V2006.xsd +1245 -0
- gbdtransformation/utilities/ISOCurrencyCodeType-V2001.xsd +855 -0
- gbdtransformation/utilities/ISOLanguageCodeType-V2002.xsd +715 -0
- gbdtransformation/utilities/WIPOST3CodeType-V2007.xsd +1151 -0
- gbdtransformation/utilities/__init__.py +0 -0
- gbdtransformation/utilities/st66.dot +2828 -0
- gbdtransformation/utilities/st66.pdf +0 -0
- gbdtransformation/utilities/st66.py +38700 -0
- gbdtransformation/utilities/st66.xsd +4174 -0
- schemas/ShazamConfig.py +35 -0
- schemas/__init__.py +0 -0
- schemas/schema_extractor.py +300 -0
- wipo_gbd_transformation-1.1.105.dist-info/LICENSE.md +687 -0
- wipo_gbd_transformation-1.1.105.dist-info/METADATA +25 -0
- wipo_gbd_transformation-1.1.105.dist-info/RECORD +607 -0
- wipo_gbd_transformation-1.1.105.dist-info/WHEEL +5 -0
- wipo_gbd_transformation-1.1.105.dist-info/entry_points.txt +6 -0
- wipo_gbd_transformation-1.1.105.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# standard gdd definitions
|
|
2
|
+
from gbdtransformation.designs import kinds as std_kinds
|
|
3
|
+
from gbdtransformation.designs import status as std_status
|
|
4
|
+
from gbdtransformation.designs.filters import st13
|
|
5
|
+
from datetime import datetime, date
|
|
6
|
+
import json
|
|
7
|
+
|
|
8
|
+
# namespaces defined in XML and to be ignored in procecssing
|
|
9
|
+
ignore_namespace = [ "http://www.wipo.int/standards/XMLSchema/ST96/Design",
|
|
10
|
+
"http://www.wipo.int/standards/XMLSchema/ST96/Common" ]
|
|
11
|
+
|
|
12
|
+
# -------------------------------------------------------------
|
|
13
|
+
# data translation helpers:
|
|
14
|
+
# translate values from office interpretation to gbd equivalent
|
|
15
|
+
# -------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
def detectSealedDepositIndicator(HagueExpressTransaction):
|
|
18
|
+
return 'Open'
|
|
19
|
+
|
|
20
|
+
def cleanHagueAgreementActCategory(category):
|
|
21
|
+
return category.replace("Act", "") if category else None
|
|
22
|
+
|
|
23
|
+
def getExpiryDate(expiryDate, histories, designIdentifier=None, countryCode=None):
|
|
24
|
+
'''
|
|
25
|
+
Return last seen expiry date in the history events, if any
|
|
26
|
+
restricted to the identified design if specified
|
|
27
|
+
'''
|
|
28
|
+
#print("getExpiryDate")
|
|
29
|
+
#print(expiryDate)
|
|
30
|
+
#print(histories)
|
|
31
|
+
|
|
32
|
+
if histories == None or len(histories) == 0:
|
|
33
|
+
return expiryDate
|
|
34
|
+
|
|
35
|
+
if not isinstance(histories, list):
|
|
36
|
+
histories = [histories]
|
|
37
|
+
|
|
38
|
+
for history in histories:
|
|
39
|
+
if "HagueRenewal" in history:
|
|
40
|
+
if "ExpiryDate" in history.HagueRenewal:
|
|
41
|
+
if designIdentifier == None:
|
|
42
|
+
# no design restriction
|
|
43
|
+
expiryDate = history.HagueRenewal.ExpiryDate
|
|
44
|
+
else:
|
|
45
|
+
# is the design identifier in the list of affected designs?
|
|
46
|
+
if isAffectedDesignIdentifier(designIdentifier, history.HagueRenewal.AffectedDesign):
|
|
47
|
+
if countryCode == None:
|
|
48
|
+
expiryDate = history.HagueRenewal.ExpiryDate
|
|
49
|
+
else:
|
|
50
|
+
if isApplicableToCountry(countryCode, history.HagueRenewal):
|
|
51
|
+
expiryDate = history.HagueRenewal.ExpiryDate
|
|
52
|
+
return expiryDate
|
|
53
|
+
|
|
54
|
+
def getLastRenewalDate(histories, designIdentifier=None, countryCode=None):
|
|
55
|
+
'''
|
|
56
|
+
Return the renewal date if the last seen expiry date is in the history events
|
|
57
|
+
Renewal date can be restricted optionally by design identifier and country
|
|
58
|
+
'''
|
|
59
|
+
#print("getLastRenewalDate")
|
|
60
|
+
|
|
61
|
+
if histories == None or len(histories) == 0:
|
|
62
|
+
return None
|
|
63
|
+
|
|
64
|
+
if not isinstance(histories, list):
|
|
65
|
+
histories = [histories]
|
|
66
|
+
|
|
67
|
+
renewalDate = None
|
|
68
|
+
for history in histories:
|
|
69
|
+
if "HagueRenewal" in history and isinstance(history, dict):
|
|
70
|
+
if "ExpiryDate" in history.HagueRenewal:
|
|
71
|
+
if designIdentifier == None:
|
|
72
|
+
# no design restriction
|
|
73
|
+
renewalDate = history.HagueRenewal.RenewalDate
|
|
74
|
+
else:
|
|
75
|
+
# is the design identifier in the list of affected designs?
|
|
76
|
+
if isAffectedDesignIdentifier(designIdentifier, history.HagueRenewal.AffectedDesign):
|
|
77
|
+
if countryCode == None:
|
|
78
|
+
renewalDate = history.HagueRenewal.RenewalDate
|
|
79
|
+
else:
|
|
80
|
+
if isApplicableToCountry(countryCode, history.HagueRenewal):
|
|
81
|
+
renewalDate = history.HagueRenewal.RenewalDate
|
|
82
|
+
return renewalDate
|
|
83
|
+
|
|
84
|
+
def getRefusalDate(histories, designIdentifier=None, countryCode=None):
|
|
85
|
+
'''
|
|
86
|
+
Return refusal date, if any
|
|
87
|
+
Refusal datecan be restricted optionally by design identifier and country
|
|
88
|
+
'''
|
|
89
|
+
# check refusal
|
|
90
|
+
refusalDate = None
|
|
91
|
+
if histories != None:
|
|
92
|
+
for history in histories:
|
|
93
|
+
if "HagueRefusal" in history and isinstance(history, dict):
|
|
94
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueRefusal.AffectedDesign):
|
|
95
|
+
if countryCode == None or isApplicableToCountry(countryCode, history.HagueRefusal):
|
|
96
|
+
if "DecisionEffectiveDate" in history.HagueRefusal:
|
|
97
|
+
refusalDate = history.HagueRefusal.DecisionEffectiveDate
|
|
98
|
+
elif "DecisionDate" in history.HagueRefusal:
|
|
99
|
+
refusalDate = history.HagueRefusal.DecisionDate
|
|
100
|
+
return refusalDate
|
|
101
|
+
|
|
102
|
+
def build_person_name(name_struct):
|
|
103
|
+
first_name = None
|
|
104
|
+
if "FirstName" in name_struct:
|
|
105
|
+
first_name = name_struct.FirstName
|
|
106
|
+
last_name = None
|
|
107
|
+
if "LastName" in name_struct:
|
|
108
|
+
last_name = name_struct.LastName
|
|
109
|
+
if first_name is None and last_name is None:
|
|
110
|
+
return None
|
|
111
|
+
name = ""
|
|
112
|
+
if first_name is not None:
|
|
113
|
+
name += first_name
|
|
114
|
+
if last_name is not None:
|
|
115
|
+
name += " " + last_name.upper()
|
|
116
|
+
return name
|
|
117
|
+
|
|
118
|
+
def render_and_sort_views(viewBag):
|
|
119
|
+
views = []
|
|
120
|
+
for localViewKey in viewBag:
|
|
121
|
+
localView = viewBag[localViewKey]
|
|
122
|
+
#print(localView)
|
|
123
|
+
view = {}
|
|
124
|
+
if "ViewIdentifier" in localView:
|
|
125
|
+
rank = int(localView.ViewIdentifier)
|
|
126
|
+
localView["rank"] = rank
|
|
127
|
+
if "FileName" in localView:
|
|
128
|
+
name = localView.FileName
|
|
129
|
+
localView["name"] = name
|
|
130
|
+
if "ViewTypeCategory" in localView:
|
|
131
|
+
localType = localView.ViewTypeCategory
|
|
132
|
+
localView["type"] = localType
|
|
133
|
+
legends = []
|
|
134
|
+
if "ViewTypeTextBag" in localView:
|
|
135
|
+
for local_legend in localView.ViewTypeTextBag:
|
|
136
|
+
legend = {}
|
|
137
|
+
legend["languageCode"] = local_legend._languageCode
|
|
138
|
+
legend["legend"] = local_legend.__value
|
|
139
|
+
legends.append(legend)
|
|
140
|
+
if len(legends) > 0:
|
|
141
|
+
localView["legends"] = legends
|
|
142
|
+
return views
|
|
143
|
+
|
|
144
|
+
def format_address(address_lines):
|
|
145
|
+
address = ""
|
|
146
|
+
if not isinstance(address_lines, list):
|
|
147
|
+
address_lines = [address_lines]
|
|
148
|
+
for address_line in address_lines:
|
|
149
|
+
if address_line is not None and "__value" in address_line:
|
|
150
|
+
address += address_line.__value + ' \n'
|
|
151
|
+
if len(address) > 0:
|
|
152
|
+
return address.strip()
|
|
153
|
+
else:
|
|
154
|
+
return None
|
|
155
|
+
|
|
156
|
+
def format_complete_address(PostalStructuredAddress):
|
|
157
|
+
if PostalStructuredAddress == None:
|
|
158
|
+
return None
|
|
159
|
+
adr_lines = format_address(PostalStructuredAddress.AddressLineText)
|
|
160
|
+
address = []
|
|
161
|
+
if adr_lines:
|
|
162
|
+
address.append(adr_lines)
|
|
163
|
+
if PostalStructuredAddress.CityName:
|
|
164
|
+
address.append(PostalStructuredAddress.CityName.strip())
|
|
165
|
+
if PostalStructuredAddress.GeographicRegionName:
|
|
166
|
+
address.append(PostalStructuredAddress.GeographicRegionName.strip())
|
|
167
|
+
if PostalStructuredAddress.PostalCode:
|
|
168
|
+
address.append(PostalStructuredAddress.PostalCode.strip())
|
|
169
|
+
if PostalStructuredAddress.CountryCode:
|
|
170
|
+
address.append(PostalStructuredAddress.CountryCode.strip())
|
|
171
|
+
return ' '.join(address)
|
|
172
|
+
|
|
173
|
+
def getOfficeStatusDate(registrationDate, expiryDate, histories, designIdentifier, countryCode=None):
|
|
174
|
+
expiryDate = getExpiryDate(expiryDate, histories, designIdentifier)
|
|
175
|
+
grantedDate = None
|
|
176
|
+
if countryCode != None and histories != None:
|
|
177
|
+
# check possible renunciation including the particular country if specified
|
|
178
|
+
for history in histories:
|
|
179
|
+
if "HagueRenunciation" in history and isinstance(history, dict):
|
|
180
|
+
# is the design identifier in the list of affected designs?
|
|
181
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueRenunciation):
|
|
182
|
+
if "DesignatedCountryBag" in history.HagueRenunciation:
|
|
183
|
+
for designatedCountry in history.HagueRenunciation.DesignatedCountryBag.DesignatedCountry:
|
|
184
|
+
if isinstance(designatedCountry, str):
|
|
185
|
+
if history.HagueRenunciation.DesignatedCountryBag.DesignatedCountry.DesignatedCountryCode == countryCode:
|
|
186
|
+
history.HagueRenunciation.InternationalRecordingDate
|
|
187
|
+
elif designatedCountry.DesignatedCountryCode == countryCode:
|
|
188
|
+
return history.HagueRenunciation.InternationalRecordingDate
|
|
189
|
+
|
|
190
|
+
# to be tested: same for HagueLimitation, which is very similar to HagueRenunciation
|
|
191
|
+
if "HagueLimitation" in history and isinstance(history, dict):
|
|
192
|
+
# is the design identifier in the list of affected designs?
|
|
193
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueLimitation):
|
|
194
|
+
if "DesignatedCountryBag" in history.HagueLimitation:
|
|
195
|
+
for designatedCountry in history.HagueLimitation.DesignatedCountryBag.DesignatedCountry:
|
|
196
|
+
if isinstance(designatedCountry, str):
|
|
197
|
+
if history.HagueLimitation.DesignatedCountryBag.DesignatedCountry.DesignatedCountryCode == countryCode:
|
|
198
|
+
return history.HagueLimitation.InternationalRecordingDate
|
|
199
|
+
elif designatedCountry.DesignatedCountryCode == countryCode:
|
|
200
|
+
return history.HagueLimitation.InternationalRecordingDate
|
|
201
|
+
|
|
202
|
+
if "HagueGrantProtection" in history and isinstance(history, dict):
|
|
203
|
+
# is the design identifier in the list of affected designs?
|
|
204
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueGrantProtection.AffectedDesign):
|
|
205
|
+
if "RecordNotifyingOfficeCode" in history.HagueGrantProtection:
|
|
206
|
+
if history.HagueGrantProtection.RecordNotifyingOfficeCode == countryCode:
|
|
207
|
+
grantedDate = history.HagueGrantProtection.InternationalRecordingDate
|
|
208
|
+
|
|
209
|
+
# other events potentially impacting status:
|
|
210
|
+
# to check: HagueInvalidation, HagueMerger, however no occurance since 2018 data
|
|
211
|
+
|
|
212
|
+
refusalDate = getRefusalDate(histories, designIdentifier, countryCode)
|
|
213
|
+
# refusal is per designated countries, not just by design
|
|
214
|
+
if refusalDate != None and len(refusalDate) >= 0 and grantedDate is None:
|
|
215
|
+
return refusalDate
|
|
216
|
+
|
|
217
|
+
if grantedDate is not None:
|
|
218
|
+
registrationDate = grantedDate
|
|
219
|
+
|
|
220
|
+
if expiryDate == None or len(expiryDate) == 0:
|
|
221
|
+
return registrationDate
|
|
222
|
+
|
|
223
|
+
registrationDateObject = datetime.strptime(registrationDate, '%Y-%m-%d').date()
|
|
224
|
+
expiryDateObject = datetime.strptime(expiryDate, '%Y-%m-%d').date()
|
|
225
|
+
|
|
226
|
+
# the following gives the date of the last extension, if any
|
|
227
|
+
lastRenewalDate = getLastRenewalDate(histories, designIdentifier)
|
|
228
|
+
lastRenewalDateObject = datetime.strptime(expiryDate, '%Y-%m-%d').date()
|
|
229
|
+
|
|
230
|
+
if lastRenewalDateObject > registrationDateObject:
|
|
231
|
+
return lastRenewalDate
|
|
232
|
+
else:
|
|
233
|
+
return registrationDate
|
|
234
|
+
|
|
235
|
+
def getGbdStatus(registrationDate, expiryDate, histories, designIdentifier, countryCode=None):
|
|
236
|
+
# (Ended|Expired|Pending|Registered|Unknown)
|
|
237
|
+
# note: Ended is for every non-active cases except expired ones, so withdrawal, refusal,
|
|
238
|
+
# renunciation
|
|
239
|
+
|
|
240
|
+
# if we have specified a country, check if the country is not part of a renunciation,
|
|
241
|
+
# then the status would be Ended for all design following Hague XML schema explanations
|
|
242
|
+
grantedDate = None
|
|
243
|
+
if countryCode != None and histories != None:
|
|
244
|
+
for history in histories:
|
|
245
|
+
if "HagueRenunciation" in history and isinstance(history, dict):
|
|
246
|
+
# is the design identifier in the list of affected designs?
|
|
247
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueRenunciation):
|
|
248
|
+
if "DesignatedCountryBag" in history.HagueRenunciation:
|
|
249
|
+
for designatedCountry in history.HagueRenunciation.DesignatedCountryBag.DesignatedCountry:
|
|
250
|
+
if isinstance(designatedCountry, str):
|
|
251
|
+
if history.HagueRenunciation.DesignatedCountryBag.DesignatedCountry.DesignatedCountryCode == countryCode:
|
|
252
|
+
return "Ended"
|
|
253
|
+
elif designatedCountry.DesignatedCountryCode == countryCode:
|
|
254
|
+
return "Ended"
|
|
255
|
+
|
|
256
|
+
# to be tested: same for HagueLimitation, which is very similar to HagueRenunciation
|
|
257
|
+
if "HagueLimitation" in history and isinstance(history, dict):
|
|
258
|
+
# is the design identifier in the list of affected designs?
|
|
259
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueLimitation):
|
|
260
|
+
if "DesignatedCountryBag" in history.HagueLimitation:
|
|
261
|
+
for designatedCountry in history.HagueLimitation.DesignatedCountryBag.DesignatedCountry:
|
|
262
|
+
if isinstance(designatedCountry, str):
|
|
263
|
+
if history.HagueLimitation.DesignatedCountryBag.DesignatedCountry.DesignatedCountryCode == countryCode:
|
|
264
|
+
return "Ended"
|
|
265
|
+
elif designatedCountry.DesignatedCountryCode == countryCode:
|
|
266
|
+
return "Ended"
|
|
267
|
+
|
|
268
|
+
if "HagueGrantProtection" in history and isinstance(history, dict):
|
|
269
|
+
# is the design identifier in the list of affected designs?
|
|
270
|
+
if designIdentifier == None or isAffectedDesignIdentifier(designIdentifier, history.HagueGrantProtection.AffectedDesign):
|
|
271
|
+
if "RecordNotifyingOfficeCode" in history.HagueGrantProtection:
|
|
272
|
+
if history.HagueGrantProtection.RecordNotifyingOfficeCode == countryCode:
|
|
273
|
+
grantedDate = history.HagueGrantProtection.InternationalRecordingDate
|
|
274
|
+
|
|
275
|
+
# other events potentially impacting status:
|
|
276
|
+
# to check: HagueInvalidation, HagueMerger, however no occurance since 2018 data
|
|
277
|
+
|
|
278
|
+
# check refusal, refusal is per designated countries, not just by design
|
|
279
|
+
# unfortunately it seems that conditional refusal are encoded as refusal, so
|
|
280
|
+
# so we have to look for a follow-up grant to recover this problem
|
|
281
|
+
if countryCode != None:
|
|
282
|
+
refusalDate = getRefusalDate(histories, designIdentifier, countryCode)
|
|
283
|
+
if refusalDate != None and len(refusalDate)>0 and grantedDate is None:
|
|
284
|
+
return "Ended"
|
|
285
|
+
|
|
286
|
+
if grantedDate is not None:
|
|
287
|
+
registrationDate = grantedDate
|
|
288
|
+
|
|
289
|
+
if registrationDate == None or len(registrationDate) == 0:
|
|
290
|
+
return "Pending"
|
|
291
|
+
|
|
292
|
+
expiryDate = getExpiryDate(expiryDate, histories, designIdentifier, countryCode)
|
|
293
|
+
if expiryDate == None or len(expiryDate) == 0:
|
|
294
|
+
return "Registered"
|
|
295
|
+
|
|
296
|
+
try:
|
|
297
|
+
registrationDateObject = datetime.strptime(registrationDate, '%Y-%m-%d').date()
|
|
298
|
+
expiryDateObject = datetime.strptime(expiryDate, '%Y-%m-%d').date()
|
|
299
|
+
currentDate = date.today()
|
|
300
|
+
|
|
301
|
+
if expiryDateObject < currentDate:
|
|
302
|
+
return "Expired"
|
|
303
|
+
else:
|
|
304
|
+
return "Registered"
|
|
305
|
+
except Exception as e:
|
|
306
|
+
print("invalid date")
|
|
307
|
+
print(e)
|
|
308
|
+
|
|
309
|
+
return "Unknown"
|
|
310
|
+
|
|
311
|
+
def isAffectedDesignIdentifier(designIdentifier, affectedDesignBlock):
|
|
312
|
+
'''
|
|
313
|
+
Return True if the identified design is included in the affected design information
|
|
314
|
+
'''
|
|
315
|
+
if "AllDesignsIndicator" in affectedDesignBlock:
|
|
316
|
+
return True
|
|
317
|
+
elif "DesignIdentifierBag" in affectedDesignBlock:
|
|
318
|
+
affectedDesignIdentifiers = []
|
|
319
|
+
for identifier in affectedDesignBlock.DesignIdentifierBag.DesignIdentifier:
|
|
320
|
+
affectedDesignIdentifiers.append(identifier)
|
|
321
|
+
if designIdentifier in affectedDesignIdentifiers:
|
|
322
|
+
return True
|
|
323
|
+
else:
|
|
324
|
+
return False
|
|
325
|
+
return False
|
|
326
|
+
|
|
327
|
+
possibleEventsFromOffice = [ "HagueGrantProtection", "HagueRefusal" ]
|
|
328
|
+
|
|
329
|
+
def isApplicableToCountry(countryCode, hagueHistoryEvent):
|
|
330
|
+
'''
|
|
331
|
+
Return True if the history event is applicable to the provided country
|
|
332
|
+
'''
|
|
333
|
+
if hagueHistoryEvent is None:
|
|
334
|
+
return False
|
|
335
|
+
|
|
336
|
+
if "RecordNotifyingOfficeCode" in hagueHistoryEvent:
|
|
337
|
+
if hagueHistoryEvent.RecordNotifyingOfficeCode == countryCode:
|
|
338
|
+
return True
|
|
339
|
+
elif "DesignatedCountryBag" in hagueHistoryEvent:
|
|
340
|
+
if hagueHistoryEvent.DesignatedCountryBag is not None:
|
|
341
|
+
if "DesignatedCountry" in hagueHistoryEvent.DesignatedCountryBag:
|
|
342
|
+
for designatedCountry in hagueHistoryEvent.DesignatedCountryBag.DesignatedCountry:
|
|
343
|
+
if isinstance(designatedCountry, str):
|
|
344
|
+
if hagueHistoryEvent.DesignatedCountryBag.DesignatedCountry.DesignatedCountryCode == countryCode:
|
|
345
|
+
return True
|
|
346
|
+
elif designatedCountry.DesignatedCountryCode == countryCode:
|
|
347
|
+
return True
|
|
348
|
+
return False
|
|
349
|
+
|
|
350
|
+
"""
|
|
351
|
+
Functions dedicated to Hague transaction history
|
|
352
|
+
"""
|
|
353
|
+
|
|
354
|
+
transaction_header_elements = [ "HagueBulletinNumber", "PublicationDate" ]
|
|
355
|
+
|
|
356
|
+
def get_event_type(history):
|
|
357
|
+
for child in history:
|
|
358
|
+
if child.startswith("_"):
|
|
359
|
+
continue
|
|
360
|
+
if child not in transaction_header_elements:
|
|
361
|
+
return child
|
|
362
|
+
return None
|
|
363
|
+
|
|
364
|
+
def serialize(history):
|
|
365
|
+
#print(history)
|
|
366
|
+
jsonString = history.toJSON()
|
|
367
|
+
# keeping single quote in the JSON (even escaped) will fail when going back to yaml (yaml parsing error)
|
|
368
|
+
# so we need to use an alternative unicode for single quote.
|
|
369
|
+
jsonString = jsonString.replace("\'", "\u201A")
|
|
370
|
+
return json.loads(jsonString)
|
|
371
|
+
|
|
372
|
+
|