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.
Files changed (607) hide show
  1. gbdtransformation/__init__.py +0 -0
  2. gbdtransformation/brands/__init__.py +44 -0
  3. gbdtransformation/brands/aetm/__init__.py +5 -0
  4. gbdtransformation/brands/aetm/filters.py +84 -0
  5. gbdtransformation/brands/aetm/schema +87 -0
  6. gbdtransformation/brands/aetm/template.yml +1 -0
  7. gbdtransformation/brands/aetm/tests/__init__.py +0 -0
  8. gbdtransformation/brands/altm/__init__.py +6 -0
  9. gbdtransformation/brands/altm/filters.py +107 -0
  10. gbdtransformation/brands/altm/schema +83 -0
  11. gbdtransformation/brands/altm/template.yml +1 -0
  12. gbdtransformation/brands/altm/tests/__init__.py +0 -0
  13. gbdtransformation/brands/altm/tests/altm.xml +93 -0
  14. gbdtransformation/brands/aptm/__init__.py +15 -0
  15. gbdtransformation/brands/aptm/filters.py +80 -0
  16. gbdtransformation/brands/aptm/schema +87 -0
  17. gbdtransformation/brands/aptm/template.yml +1 -0
  18. gbdtransformation/brands/aptm/tests/__init__.py +0 -0
  19. gbdtransformation/brands/attm/__init__.py +6 -0
  20. gbdtransformation/brands/attm/filters.py +76 -0
  21. gbdtransformation/brands/attm/schema +52 -0
  22. gbdtransformation/brands/attm/template.yml +85 -0
  23. gbdtransformation/brands/autm/__init__.py +2 -0
  24. gbdtransformation/brands/autm/filters.py +222 -0
  25. gbdtransformation/brands/autm/schema +91 -0
  26. gbdtransformation/brands/autm/template.yml +157 -0
  27. gbdtransformation/brands/bgtm/__init__.py +5 -0
  28. gbdtransformation/brands/bgtm/filters.py +112 -0
  29. gbdtransformation/brands/bgtm/schema +314 -0
  30. gbdtransformation/brands/bgtm/template.yml +154 -0
  31. gbdtransformation/brands/bhtm/__init__.py +12 -0
  32. gbdtransformation/brands/bhtm/filters.py +87 -0
  33. gbdtransformation/brands/bhtm/schema +87 -0
  34. gbdtransformation/brands/bhtm/template.yml +1 -0
  35. gbdtransformation/brands/bhtm/tests/__init__.py +0 -0
  36. gbdtransformation/brands/bntm/__init__.py +2 -0
  37. gbdtransformation/brands/bntm/filters.py +75 -0
  38. gbdtransformation/brands/bntm/schema +87 -0
  39. gbdtransformation/brands/bntm/template.yml +1 -0
  40. gbdtransformation/brands/bntm/tests/__init__.py +0 -0
  41. gbdtransformation/brands/brtm/__init__.py +3 -0
  42. gbdtransformation/brands/brtm/filters.py +169 -0
  43. gbdtransformation/brands/brtm/schema +86 -0
  44. gbdtransformation/brands/brtm/template.yml +22 -0
  45. gbdtransformation/brands/brtm/tests/__init__.py +0 -0
  46. gbdtransformation/brands/brtm/tests/test01.xml +53 -0
  47. gbdtransformation/brands/bttm/__init__.py +10 -0
  48. gbdtransformation/brands/bttm/filters.py +80 -0
  49. gbdtransformation/brands/bttm/schema +87 -0
  50. gbdtransformation/brands/bttm/template.yml +1 -0
  51. gbdtransformation/brands/bttm/tests/__init__.py +0 -0
  52. gbdtransformation/brands/bwtm/__init__.py +13 -0
  53. gbdtransformation/brands/bwtm/filters.py +90 -0
  54. gbdtransformation/brands/bwtm/schema +87 -0
  55. gbdtransformation/brands/bwtm/template.yml +1 -0
  56. gbdtransformation/brands/bwtm/tests/__init__.py +0 -0
  57. gbdtransformation/brands/bztm/__init__.py +16 -0
  58. gbdtransformation/brands/bztm/filters.py +77 -0
  59. gbdtransformation/brands/bztm/schema +87 -0
  60. gbdtransformation/brands/bztm/template.yml +1 -0
  61. gbdtransformation/brands/bztm/tests/__init__.py +0 -0
  62. gbdtransformation/brands/catm/__init__.py +10 -0
  63. gbdtransformation/brands/catm/filters.py +272 -0
  64. gbdtransformation/brands/catm/schema +804 -0
  65. gbdtransformation/brands/catm/template.yml +230 -0
  66. gbdtransformation/brands/chtm/__init__.py +6 -0
  67. gbdtransformation/brands/chtm/filters.py +161 -0
  68. gbdtransformation/brands/chtm/schema +79 -0
  69. gbdtransformation/brands/chtm/template.yml +121 -0
  70. gbdtransformation/brands/cltm/__init__.py +2 -0
  71. gbdtransformation/brands/cltm/filters.py +80 -0
  72. gbdtransformation/brands/cltm/schema +86 -0
  73. gbdtransformation/brands/cltm/template.yml +1 -0
  74. gbdtransformation/brands/cltm/tests/__init__.py +0 -0
  75. gbdtransformation/brands/crtm/__init__.py +5 -0
  76. gbdtransformation/brands/crtm/filters.py +196 -0
  77. gbdtransformation/brands/crtm/schema +86 -0
  78. gbdtransformation/brands/crtm/template.yml +1 -0
  79. gbdtransformation/brands/crtm/tests/__init__.py +0 -0
  80. gbdtransformation/brands/cutm/__init__.py +10 -0
  81. gbdtransformation/brands/cutm/filters.py +94 -0
  82. gbdtransformation/brands/cutm/schema +86 -0
  83. gbdtransformation/brands/cutm/template.yml +4 -0
  84. gbdtransformation/brands/cutm/tests/__init__.py +0 -0
  85. gbdtransformation/brands/detm/__init__.py +19 -0
  86. gbdtransformation/brands/detm/filters.py +75 -0
  87. gbdtransformation/brands/detm/schema +511 -0
  88. gbdtransformation/brands/detm/template.yml +151 -0
  89. gbdtransformation/brands/dktm/__init__.py +7 -0
  90. gbdtransformation/brands/dktm/filters.py +90 -0
  91. gbdtransformation/brands/dktm/schema +95 -0
  92. gbdtransformation/brands/dktm/template.yml +114 -0
  93. gbdtransformation/brands/dztm/__init__.py +10 -0
  94. gbdtransformation/brands/dztm/filters.py +81 -0
  95. gbdtransformation/brands/dztm/schema +87 -0
  96. gbdtransformation/brands/dztm/template.yml +1 -0
  97. gbdtransformation/brands/dztm/tests/__init__.py +0 -0
  98. gbdtransformation/brands/eetm/__init__.py +8 -0
  99. gbdtransformation/brands/eetm/filters.py +115 -0
  100. gbdtransformation/brands/eetm/schema +48 -0
  101. gbdtransformation/brands/eetm/template.yml +98 -0
  102. gbdtransformation/brands/egtm/__init__.py +5 -0
  103. gbdtransformation/brands/egtm/filters.py +73 -0
  104. gbdtransformation/brands/egtm/schema +87 -0
  105. gbdtransformation/brands/egtm/template.yml +1 -0
  106. gbdtransformation/brands/egtm/tests/__init__.py +0 -0
  107. gbdtransformation/brands/emtm/__init__.py +3 -0
  108. gbdtransformation/brands/emtm/filters.py +96 -0
  109. gbdtransformation/brands/emtm/schema +314 -0
  110. gbdtransformation/brands/emtm/template.yml +125 -0
  111. gbdtransformation/brands/estm/__init__.py +3 -0
  112. gbdtransformation/brands/estm/filters.py +110 -0
  113. gbdtransformation/brands/estm/schema +99 -0
  114. gbdtransformation/brands/estm/template.yml +144 -0
  115. gbdtransformation/brands/filters.py +125 -0
  116. gbdtransformation/brands/frtm/__init__.py +2 -0
  117. gbdtransformation/brands/frtm/filters.py +172 -0
  118. gbdtransformation/brands/frtm/schema +300 -0
  119. gbdtransformation/brands/frtm/template.yml +203 -0
  120. gbdtransformation/brands/gbtm/__init__.py +3 -0
  121. gbdtransformation/brands/gbtm/filters.py +122 -0
  122. gbdtransformation/brands/gbtm/schema +362 -0
  123. gbdtransformation/brands/gbtm/template.yml +147 -0
  124. gbdtransformation/brands/gdtm/__init__.py +5 -0
  125. gbdtransformation/brands/gdtm/filters.py +68 -0
  126. gbdtransformation/brands/gdtm/schema +87 -0
  127. gbdtransformation/brands/gdtm/template.yml +1 -0
  128. gbdtransformation/brands/gdtm/tests/__init__.py +0 -0
  129. gbdtransformation/brands/getm/__init__.py +3 -0
  130. gbdtransformation/brands/getm/filters.py +68 -0
  131. gbdtransformation/brands/getm/schema +209 -0
  132. gbdtransformation/brands/getm/template.yml +142 -0
  133. gbdtransformation/brands/ghtm/__init__.py +12 -0
  134. gbdtransformation/brands/ghtm/filters.py +74 -0
  135. gbdtransformation/brands/ghtm/schema +86 -0
  136. gbdtransformation/brands/ghtm/template.yml +1 -0
  137. gbdtransformation/brands/ghtm/tests/__init__.py +0 -0
  138. gbdtransformation/brands/gmtm/__init__.py +7 -0
  139. gbdtransformation/brands/gmtm/filters.py +70 -0
  140. gbdtransformation/brands/gmtm/schema +86 -0
  141. gbdtransformation/brands/gmtm/template.yml +1 -0
  142. gbdtransformation/brands/gmtm/tests/__init__.py +0 -0
  143. gbdtransformation/brands/gstm/__init__.py +2 -0
  144. gbdtransformation/brands/gstm/filters.py +75 -0
  145. gbdtransformation/brands/gstm/template.gs.yml +56 -0
  146. gbdtransformation/brands/gstm/template.yml +32 -0
  147. gbdtransformation/brands/hrtm/__init__.py +3 -0
  148. gbdtransformation/brands/hrtm/filters.py +158 -0
  149. gbdtransformation/brands/hrtm/schema +43 -0
  150. gbdtransformation/brands/hrtm/template.yml +205 -0
  151. gbdtransformation/brands/idtm/__init__.py +12 -0
  152. gbdtransformation/brands/idtm/filters.py +95 -0
  153. gbdtransformation/brands/idtm/schema +86 -0
  154. gbdtransformation/brands/idtm/template.yml +1 -0
  155. gbdtransformation/brands/idtm/tests/__init__.py +0 -0
  156. gbdtransformation/brands/idtm/tests/translation.xml +106 -0
  157. gbdtransformation/brands/idtm/tests/unicode.xml +120 -0
  158. gbdtransformation/brands/iltm/__init__.py +2 -0
  159. gbdtransformation/brands/iltm/filters.py +91 -0
  160. gbdtransformation/brands/iltm/schema +87 -0
  161. gbdtransformation/brands/iltm/template.yml +213 -0
  162. gbdtransformation/brands/iltm/tests/__init__.py +0 -0
  163. gbdtransformation/brands/iltm/tests/cancellations.xml +156 -0
  164. gbdtransformation/brands/iltm/tests/collcert.xml +51 -0
  165. gbdtransformation/brands/iltm/tests/eventdata.xml +83 -0
  166. gbdtransformation/brands/iltm/tests/international.xml +80 -0
  167. gbdtransformation/brands/iltm/tests/markfeature.xml +117 -0
  168. gbdtransformation/brands/iltm/tests/noevents.xml +44 -0
  169. gbdtransformation/brands/iltm/tests/opposition.xml +147 -0
  170. gbdtransformation/brands/iltm/tests/tlit.xml +77 -0
  171. gbdtransformation/brands/intm/__init__.py +6 -0
  172. gbdtransformation/brands/intm/filters.py +75 -0
  173. gbdtransformation/brands/intm/schema +127 -0
  174. gbdtransformation/brands/intm/template.yml +112 -0
  175. gbdtransformation/brands/ipas/__init__.py +0 -0
  176. gbdtransformation/brands/ipas/filters.py +203 -0
  177. gbdtransformation/brands/ipas/template.yml +185 -0
  178. gbdtransformation/brands/istm/__init__.py +10 -0
  179. gbdtransformation/brands/istm/filters.py +60 -0
  180. gbdtransformation/brands/istm/schema +53 -0
  181. gbdtransformation/brands/istm/template.yml +119 -0
  182. gbdtransformation/brands/ittm/__init__.py +6 -0
  183. gbdtransformation/brands/ittm/filters.py +114 -0
  184. gbdtransformation/brands/ittm/schema +104 -0
  185. gbdtransformation/brands/ittm/template.yml +107 -0
  186. gbdtransformation/brands/jotm/__init__.py +8 -0
  187. gbdtransformation/brands/jotm/filters.py +61 -0
  188. gbdtransformation/brands/jotm/schema +86 -0
  189. gbdtransformation/brands/jotm/template.yml +1 -0
  190. gbdtransformation/brands/jotm/tests/__init__.py +0 -0
  191. gbdtransformation/brands/jotm/tests/test.xml +84 -0
  192. gbdtransformation/brands/jptm/__init__.py +6 -0
  193. gbdtransformation/brands/jptm/filters.py +79 -0
  194. gbdtransformation/brands/jptm/schema +39 -0
  195. gbdtransformation/brands/jptm/template.yml +113 -0
  196. gbdtransformation/brands/ketm/__init__.py +9 -0
  197. gbdtransformation/brands/ketm/filters.py +77 -0
  198. gbdtransformation/brands/ketm/schema +86 -0
  199. gbdtransformation/brands/ketm/template.yml +1 -0
  200. gbdtransformation/brands/ketm/tests/__init__.py +0 -0
  201. gbdtransformation/brands/kgtm/__init__.py +6 -0
  202. gbdtransformation/brands/kgtm/filters.py +67 -0
  203. gbdtransformation/brands/kgtm/schema +27 -0
  204. gbdtransformation/brands/kgtm/template.yml +58 -0
  205. gbdtransformation/brands/khtm/__init__.py +14 -0
  206. gbdtransformation/brands/khtm/filters.py +134 -0
  207. gbdtransformation/brands/khtm/schema +86 -0
  208. gbdtransformation/brands/khtm/template.yml +1 -0
  209. gbdtransformation/brands/khtm/tests/__init__.py +0 -0
  210. gbdtransformation/brands/khtm/tests/khtm.xml +122 -0
  211. gbdtransformation/brands/krtm/__init__.py +6 -0
  212. gbdtransformation/brands/krtm/filters.py +136 -0
  213. gbdtransformation/brands/krtm/schema +179 -0
  214. gbdtransformation/brands/krtm/template.yml +186 -0
  215. gbdtransformation/brands/kwtm/__init__.py +2 -0
  216. gbdtransformation/brands/kwtm/filters.py +69 -0
  217. gbdtransformation/brands/kwtm/schema +86 -0
  218. gbdtransformation/brands/kwtm/template.yml +1 -0
  219. gbdtransformation/brands/kwtm/tests/__init__.py +0 -0
  220. gbdtransformation/brands/kwtm/tests/test.xml +84 -0
  221. gbdtransformation/brands/kztm/__init__.py +242 -0
  222. gbdtransformation/brands/kztm/filters.py +140 -0
  223. gbdtransformation/brands/kztm/schema +36 -0
  224. gbdtransformation/brands/kztm/template.yml +117 -0
  225. gbdtransformation/brands/latm/__init__.py +7 -0
  226. gbdtransformation/brands/latm/filters.py +93 -0
  227. gbdtransformation/brands/latm/schema +86 -0
  228. gbdtransformation/brands/latm/template.yml +1 -0
  229. gbdtransformation/brands/latm/tests/__init__.py +0 -0
  230. gbdtransformation/brands/latm/tests/test.xml +112 -0
  231. gbdtransformation/brands/lktm/__init__.py +5 -0
  232. gbdtransformation/brands/lktm/filters.py +83 -0
  233. gbdtransformation/brands/lktm/schema +87 -0
  234. gbdtransformation/brands/lktm/template.yml +1 -0
  235. gbdtransformation/brands/lktm/tests/__init__.py +0 -0
  236. gbdtransformation/brands/matm/__init__.py +3 -0
  237. gbdtransformation/brands/matm/filters.py +36 -0
  238. gbdtransformation/brands/matm/schema +33 -0
  239. gbdtransformation/brands/matm/template.yml +72 -0
  240. gbdtransformation/brands/mctm/__init__.py +3 -0
  241. gbdtransformation/brands/mctm/filters.py +65 -0
  242. gbdtransformation/brands/mctm/schema +128 -0
  243. gbdtransformation/brands/mctm/template.yml +122 -0
  244. gbdtransformation/brands/mdtm/__init__.py +3 -0
  245. gbdtransformation/brands/mdtm/filters.py +64 -0
  246. gbdtransformation/brands/mdtm/schema +128 -0
  247. gbdtransformation/brands/mdtm/template.yml +122 -0
  248. gbdtransformation/brands/metm/__init__.py +5 -0
  249. gbdtransformation/brands/metm/filters.py +87 -0
  250. gbdtransformation/brands/metm/schema +87 -0
  251. gbdtransformation/brands/metm/template.yml +1 -0
  252. gbdtransformation/brands/metm/tests/__init__.py +0 -0
  253. gbdtransformation/brands/mgtm/__init__.py +7 -0
  254. gbdtransformation/brands/mgtm/filters.py +73 -0
  255. gbdtransformation/brands/mgtm/schema +86 -0
  256. gbdtransformation/brands/mgtm/template.yml +1 -0
  257. gbdtransformation/brands/mgtm/tests/__init__.py +0 -0
  258. gbdtransformation/brands/mgtm/tests/test.xml +107 -0
  259. gbdtransformation/brands/mktm/__init__.py +6 -0
  260. gbdtransformation/brands/mktm/filters.py +63 -0
  261. gbdtransformation/brands/mktm/schema +80 -0
  262. gbdtransformation/brands/mktm/template.yml +112 -0
  263. gbdtransformation/brands/mntm/__init__.py +11 -0
  264. gbdtransformation/brands/mntm/filters.py +99 -0
  265. gbdtransformation/brands/mntm/schema +86 -0
  266. gbdtransformation/brands/mntm/template.yml +1 -0
  267. gbdtransformation/brands/mntm/tests/__init__.py +0 -0
  268. gbdtransformation/brands/mwtm/__init__.py +11 -0
  269. gbdtransformation/brands/mwtm/filters.py +80 -0
  270. gbdtransformation/brands/mwtm/schema +86 -0
  271. gbdtransformation/brands/mwtm/template.yml +1 -0
  272. gbdtransformation/brands/mwtm/tests/__init__.py +0 -0
  273. gbdtransformation/brands/mxtm/__init__.py +6 -0
  274. gbdtransformation/brands/mxtm/filters.py +77 -0
  275. gbdtransformation/brands/mxtm/schema +81 -0
  276. gbdtransformation/brands/mxtm/template.yml +127 -0
  277. gbdtransformation/brands/mytm/__init__.py +17 -0
  278. gbdtransformation/brands/mytm/filters.py +125 -0
  279. gbdtransformation/brands/mytm/schema +86 -0
  280. gbdtransformation/brands/mytm/template.yml +1 -0
  281. gbdtransformation/brands/mytm/tests/__init__.py +0 -0
  282. gbdtransformation/brands/mytm/tests/example.xml +132 -0
  283. gbdtransformation/brands/mytm/tests/mytm.xml +132 -0
  284. gbdtransformation/brands/mztm/__init__.py +14 -0
  285. gbdtransformation/brands/mztm/filters.py +89 -0
  286. gbdtransformation/brands/mztm/schema +86 -0
  287. gbdtransformation/brands/mztm/template.yml +1 -0
  288. gbdtransformation/brands/mztm/tests/__init__.py +0 -0
  289. gbdtransformation/brands/natm/__init__.py +11 -0
  290. gbdtransformation/brands/natm/filters.py +88 -0
  291. gbdtransformation/brands/natm/schema +86 -0
  292. gbdtransformation/brands/natm/template.yml +1 -0
  293. gbdtransformation/brands/natm/tests/__init__.py +0 -0
  294. gbdtransformation/brands/notm/__init__.py +5 -0
  295. gbdtransformation/brands/notm/filters.py +170 -0
  296. gbdtransformation/brands/notm/template.yml +289 -0
  297. gbdtransformation/brands/nztm/__init__.py +3 -0
  298. gbdtransformation/brands/nztm/filters.py +126 -0
  299. gbdtransformation/brands/nztm/schema +197 -0
  300. gbdtransformation/brands/nztm/template.yml +161 -0
  301. gbdtransformation/brands/oatm/__init__.py +18 -0
  302. gbdtransformation/brands/oatm/filters.py +82 -0
  303. gbdtransformation/brands/oatm/schema +87 -0
  304. gbdtransformation/brands/oatm/template.yml +1 -0
  305. gbdtransformation/brands/oatm/tests/__init__.py +0 -0
  306. gbdtransformation/brands/omtm/__init__.py +5 -0
  307. gbdtransformation/brands/omtm/filters.py +60 -0
  308. gbdtransformation/brands/omtm/schema +86 -0
  309. gbdtransformation/brands/omtm/template.yml +1 -0
  310. gbdtransformation/brands/omtm/tests/__init__.py +0 -0
  311. gbdtransformation/brands/omtm/tests/test.xml +84 -0
  312. gbdtransformation/brands/patm/__init__.py +8 -0
  313. gbdtransformation/brands/patm/filters.py +149 -0
  314. gbdtransformation/brands/patm/template.yml +40 -0
  315. gbdtransformation/brands/petm/__init__.py +6 -0
  316. gbdtransformation/brands/petm/filters.py +90 -0
  317. gbdtransformation/brands/petm/schema +114 -0
  318. gbdtransformation/brands/petm/template.yml +143 -0
  319. gbdtransformation/brands/pgtm/__init__.py +5 -0
  320. gbdtransformation/brands/pgtm/filters.py +76 -0
  321. gbdtransformation/brands/pgtm/schema +86 -0
  322. gbdtransformation/brands/pgtm/template.yml +1 -0
  323. gbdtransformation/brands/pgtm/tests/__init__.py +0 -0
  324. gbdtransformation/brands/pgtm/tests/pgtm.xml +128 -0
  325. gbdtransformation/brands/phtm/__init__.py +14 -0
  326. gbdtransformation/brands/phtm/filters.py +169 -0
  327. gbdtransformation/brands/phtm/schema +79 -0
  328. gbdtransformation/brands/phtm/schema.classic +50 -0
  329. gbdtransformation/brands/phtm/template.classic.yml +102 -0
  330. gbdtransformation/brands/phtm/template.yml +189 -0
  331. gbdtransformation/brands/pttm/__init__.py +0 -0
  332. gbdtransformation/brands/pttm/filters.py +0 -0
  333. gbdtransformation/brands/pttm/schema +0 -0
  334. gbdtransformation/brands/pttm/template.yml +0 -0
  335. gbdtransformation/brands/pytm/__init__.py +6 -0
  336. gbdtransformation/brands/pytm/filters.py +136 -0
  337. gbdtransformation/brands/pytm/template.yml +40 -0
  338. gbdtransformation/brands/qatm/__init__.py +5 -0
  339. gbdtransformation/brands/qatm/filters.py +81 -0
  340. gbdtransformation/brands/qatm/schema +87 -0
  341. gbdtransformation/brands/qatm/template.yml +1 -0
  342. gbdtransformation/brands/qatm/tests/__init__.py +0 -0
  343. gbdtransformation/brands/rotm/__init__.py +3 -0
  344. gbdtransformation/brands/rotm/filters.py +82 -0
  345. gbdtransformation/brands/rotm/schema +128 -0
  346. gbdtransformation/brands/rotm/template.yml +121 -0
  347. gbdtransformation/brands/rstm/__init__.py +5 -0
  348. gbdtransformation/brands/rstm/filters.py +88 -0
  349. gbdtransformation/brands/rstm/schema +86 -0
  350. gbdtransformation/brands/rstm/template.yml +1 -0
  351. gbdtransformation/brands/rstm/tests/__init__.py +0 -0
  352. gbdtransformation/brands/rutm/__init__.py +14 -0
  353. gbdtransformation/brands/rutm/filters.py +82 -0
  354. gbdtransformation/brands/rutm/schema +94 -0
  355. gbdtransformation/brands/rutm/template.yml +105 -0
  356. gbdtransformation/brands/sdtm/__init__.py +5 -0
  357. gbdtransformation/brands/sdtm/filters.py +59 -0
  358. gbdtransformation/brands/sdtm/schema +86 -0
  359. gbdtransformation/brands/sdtm/template.yml +1 -0
  360. gbdtransformation/brands/sdtm/tests/__init__.py +0 -0
  361. gbdtransformation/brands/sdtm/tests/test.xml +84 -0
  362. gbdtransformation/brands/sgtm/__init__.py +16 -0
  363. gbdtransformation/brands/sgtm/filters.py +177 -0
  364. gbdtransformation/brands/sgtm/schema +213 -0
  365. gbdtransformation/brands/sgtm/template.article6ter.yml +48 -0
  366. gbdtransformation/brands/sgtm/template.r13.yml +45 -0
  367. gbdtransformation/brands/sgtm/template.trademark.yml +148 -0
  368. gbdtransformation/brands/sgtm/template.yml +9 -0
  369. gbdtransformation/brands/smtm/__init__.py +6 -0
  370. gbdtransformation/brands/smtm/filters.py +77 -0
  371. gbdtransformation/brands/smtm/schema +86 -0
  372. gbdtransformation/brands/smtm/template.yml +1 -0
  373. gbdtransformation/brands/smtm/tests/__init__.py +0 -0
  374. gbdtransformation/brands/smtm/tests/test.xml +133 -0
  375. gbdtransformation/brands/solrjtm/__init__.py +1 -0
  376. gbdtransformation/brands/solrjtm/filters.py +85 -0
  377. gbdtransformation/brands/solrjtm/template.yml +195 -0
  378. gbdtransformation/brands/st66tm/__init__.py +1 -0
  379. gbdtransformation/brands/st66tm/filters.py +33 -0
  380. gbdtransformation/brands/st66tm/st66tm.tmpl +219 -0
  381. gbdtransformation/brands/sttm/__init__.py +18 -0
  382. gbdtransformation/brands/sttm/filters.py +72 -0
  383. gbdtransformation/brands/sttm/schema +83 -0
  384. gbdtransformation/brands/sttm/template.yml +1 -0
  385. gbdtransformation/brands/sttm/tests/__init__.py +0 -0
  386. gbdtransformation/brands/sztm/__init__.py +14 -0
  387. gbdtransformation/brands/sztm/filters.py +72 -0
  388. gbdtransformation/brands/sztm/schema +86 -0
  389. gbdtransformation/brands/sztm/template.yml +1 -0
  390. gbdtransformation/brands/sztm/tests/__init__.py +0 -0
  391. gbdtransformation/brands/thtm/__init__.py +2 -0
  392. gbdtransformation/brands/thtm/filters.py +86 -0
  393. gbdtransformation/brands/thtm/schema +86 -0
  394. gbdtransformation/brands/thtm/template.yml +175 -0
  395. gbdtransformation/brands/thtm/tests/__init__.py +0 -0
  396. gbdtransformation/brands/thtm/tests/test.xml +84 -0
  397. gbdtransformation/brands/tntm/__init__.py +16 -0
  398. gbdtransformation/brands/tntm/filters.py +89 -0
  399. gbdtransformation/brands/tntm/schema +87 -0
  400. gbdtransformation/brands/tntm/template.yml +1 -0
  401. gbdtransformation/brands/tntm/tests/__init__.py +0 -0
  402. gbdtransformation/brands/totm/__init__.py +5 -0
  403. gbdtransformation/brands/totm/filters.py +72 -0
  404. gbdtransformation/brands/totm/schema +86 -0
  405. gbdtransformation/brands/totm/template.yml +1 -0
  406. gbdtransformation/brands/totm/tests/__init__.py +0 -0
  407. gbdtransformation/brands/totm/tests/nofeature.xml +106 -0
  408. gbdtransformation/brands/totm/tests/syntax.xml +162 -0
  409. gbdtransformation/brands/totm/tests/test.xml +84 -0
  410. gbdtransformation/brands/tttm/__init__.py +17 -0
  411. gbdtransformation/brands/tttm/filters.py +79 -0
  412. gbdtransformation/brands/tttm/schema +87 -0
  413. gbdtransformation/brands/tttm/template.yml +1 -0
  414. gbdtransformation/brands/tttm/tests/__init__.py +0 -0
  415. gbdtransformation/brands/uatm/__init__.py +18 -0
  416. gbdtransformation/brands/uatm/filters.py +70 -0
  417. gbdtransformation/brands/uatm/schema +158 -0
  418. gbdtransformation/brands/uatm/template.yml +148 -0
  419. gbdtransformation/brands/ustm/__init__.py +187 -0
  420. gbdtransformation/brands/ustm/filters.py +227 -0
  421. gbdtransformation/brands/ustm/schema +2183 -0
  422. gbdtransformation/brands/ustm/template.yml +219 -0
  423. gbdtransformation/brands/uytm/__init__.py +3 -0
  424. gbdtransformation/brands/uytm/filters.py +64 -0
  425. gbdtransformation/brands/uytm/schema +106 -0
  426. gbdtransformation/brands/uytm/template.yml +137 -0
  427. gbdtransformation/brands/vctm/__init__.py +5 -0
  428. gbdtransformation/brands/vctm/filters.py +75 -0
  429. gbdtransformation/brands/vctm/schema +87 -0
  430. gbdtransformation/brands/vctm/template.yml +1 -0
  431. gbdtransformation/brands/vctm/tests/__init__.py +0 -0
  432. gbdtransformation/brands/vntm/__init__.py +9 -0
  433. gbdtransformation/brands/vntm/filters.py +84 -0
  434. gbdtransformation/brands/vntm/schema +86 -0
  435. gbdtransformation/brands/vntm/template.yml +1 -0
  436. gbdtransformation/brands/vntm/tests/__init__.py +0 -0
  437. gbdtransformation/brands/vutm/__init__.py +5 -0
  438. gbdtransformation/brands/vutm/filters.py +67 -0
  439. gbdtransformation/brands/vutm/schema +83 -0
  440. gbdtransformation/brands/vutm/template.yml +1 -0
  441. gbdtransformation/brands/vutm/tests/__init__.py +0 -0
  442. gbdtransformation/brands/whoinn/__init__.py +6 -0
  443. gbdtransformation/brands/whoinn/filters.py +46 -0
  444. gbdtransformation/brands/whoinn/schema +4 -0
  445. gbdtransformation/brands/whoinn/template.yml +45 -0
  446. gbdtransformation/brands/wo6ter/__init__.py +1 -0
  447. gbdtransformation/brands/wo6ter/filters.py +88 -0
  448. gbdtransformation/brands/wo6ter/template.yml +88 -0
  449. gbdtransformation/brands/woao/__init__.py +1 -0
  450. gbdtransformation/brands/woao/filters.py +107 -0
  451. gbdtransformation/brands/woao/schema +116 -0
  452. gbdtransformation/brands/woao/template.yml +90 -0
  453. gbdtransformation/brands/woptm/__init__.py +3 -0
  454. gbdtransformation/brands/woptm/filters.py +42 -0
  455. gbdtransformation/brands/woptm/template.yml +2 -0
  456. gbdtransformation/brands/wotm/__init__.py +3 -0
  457. gbdtransformation/brands/wotm/filters.py +127 -0
  458. gbdtransformation/brands/wotm/schema +218 -0
  459. gbdtransformation/brands/wotm/template.yml +220 -0
  460. gbdtransformation/brands/wstm/__init__.py +6 -0
  461. gbdtransformation/brands/wstm/filters.py +67 -0
  462. gbdtransformation/brands/wstm/schema +86 -0
  463. gbdtransformation/brands/wstm/template.yml +1 -0
  464. gbdtransformation/brands/wstm/tests/__init__.py +0 -0
  465. gbdtransformation/brands/wstm/tests/test.xml +132 -0
  466. gbdtransformation/brands/xxxx/__init__.py +6 -0
  467. gbdtransformation/brands/xxxx/filters.py +60 -0
  468. gbdtransformation/brands/xxxx/schema +4 -0
  469. gbdtransformation/brands/xxxx/template.yml +363 -0
  470. gbdtransformation/brands/zmtm/__init__.py +12 -0
  471. gbdtransformation/brands/zmtm/filters.py +79 -0
  472. gbdtransformation/brands/zmtm/schema +86 -0
  473. gbdtransformation/brands/zmtm/template.yml +1 -0
  474. gbdtransformation/brands/zmtm/tests/__init__.py +0 -0
  475. gbdtransformation/brands/zwtm/__init__.py +3 -0
  476. gbdtransformation/brands/zwtm/filters.py +86 -0
  477. gbdtransformation/brands/zwtm/schema +86 -0
  478. gbdtransformation/brands/zwtm/template.yml +1 -0
  479. gbdtransformation/brands/zwtm/tests/__init__.py +0 -0
  480. gbdtransformation/common/__init__.py +383 -0
  481. gbdtransformation/common/filters.py +418 -0
  482. gbdtransformation/common/jpap/__init__.py +1 -0
  483. gbdtransformation/common/jpap/filters.py +83 -0
  484. gbdtransformation/common/jpap/template.yml +37 -0
  485. gbdtransformation/common/jpbase/__init__.py +1 -0
  486. gbdtransformation/common/jpbase/filters.py +93 -0
  487. gbdtransformation/common/jpbase/template.yml +51 -0
  488. gbdtransformation/common/jprp/__init__.py +1 -0
  489. gbdtransformation/common/jprp/filters.py +86 -0
  490. gbdtransformation/common/jprp/template.yml +51 -0
  491. gbdtransformation/common/navigation.tmpl +12 -0
  492. gbdtransformation/commons/__init__.py +0 -0
  493. gbdtransformation/commons/emap/__init__.py +1 -0
  494. gbdtransformation/commons/emap/filters.py +16 -0
  495. gbdtransformation/commons/emap/template.yml +55 -0
  496. gbdtransformation/commons/emrp/__init__.py +1 -0
  497. gbdtransformation/commons/emrp/filters.py +14 -0
  498. gbdtransformation/commons/emrp/template.yml +53 -0
  499. gbdtransformation/commons/filters.py +3 -0
  500. gbdtransformation/designs/__init__.py +8 -0
  501. gbdtransformation/designs/alid/__init__.py +5 -0
  502. gbdtransformation/designs/alid/filters.py +69 -0
  503. gbdtransformation/designs/alid/schema +89 -0
  504. gbdtransformation/designs/alid/template.yml +1 -0
  505. gbdtransformation/designs/bnid/__init__.py +5 -0
  506. gbdtransformation/designs/bnid/filters.py +61 -0
  507. gbdtransformation/designs/bnid/schema +80 -0
  508. gbdtransformation/designs/bnid/template.yml +1 -0
  509. gbdtransformation/designs/bwid/__init__.py +6 -0
  510. gbdtransformation/designs/bwid/filters.py +64 -0
  511. gbdtransformation/designs/bwid/schema +101 -0
  512. gbdtransformation/designs/bwid/template.yml +1 -0
  513. gbdtransformation/designs/crid/__init__.py +5 -0
  514. gbdtransformation/designs/crid/filters.py +63 -0
  515. gbdtransformation/designs/crid/schema +94 -0
  516. gbdtransformation/designs/crid/template.yml +1 -0
  517. gbdtransformation/designs/cuid/__init__.py +5 -0
  518. gbdtransformation/designs/cuid/filters.py +60 -0
  519. gbdtransformation/designs/cuid/schema +98 -0
  520. gbdtransformation/designs/cuid/template.yml +1 -0
  521. gbdtransformation/designs/egid/__init__.py +5 -0
  522. gbdtransformation/designs/egid/filters.py +62 -0
  523. gbdtransformation/designs/egid/schema +82 -0
  524. gbdtransformation/designs/egid/template.yml +1 -0
  525. gbdtransformation/designs/filters.py +73 -0
  526. gbdtransformation/designs/idid/__init__.py +5 -0
  527. gbdtransformation/designs/idid/filters.py +67 -0
  528. gbdtransformation/designs/idid/schema +102 -0
  529. gbdtransformation/designs/idid/template.yml +1 -0
  530. gbdtransformation/designs/ipas/__init__.py +0 -0
  531. gbdtransformation/designs/ipas/filters.py +181 -0
  532. gbdtransformation/designs/ipas/template.yml +174 -0
  533. gbdtransformation/designs/joid/__init__.py +6 -0
  534. gbdtransformation/designs/joid/filters.py +62 -0
  535. gbdtransformation/designs/joid/schema +97 -0
  536. gbdtransformation/designs/joid/template.yml +1 -0
  537. gbdtransformation/designs/keid/__init__.py +5 -0
  538. gbdtransformation/designs/keid/filters.py +62 -0
  539. gbdtransformation/designs/keid/schema +99 -0
  540. gbdtransformation/designs/keid/template.yml +1 -0
  541. gbdtransformation/designs/khid/__init__.py +5 -0
  542. gbdtransformation/designs/khid/filters.py +63 -0
  543. gbdtransformation/designs/khid/schema +100 -0
  544. gbdtransformation/designs/khid/template.yml +1 -0
  545. gbdtransformation/designs/laid/__init__.py +5 -0
  546. gbdtransformation/designs/laid/filters.py +61 -0
  547. gbdtransformation/designs/laid/schema +94 -0
  548. gbdtransformation/designs/laid/template.yml +1 -0
  549. gbdtransformation/designs/mnid/__init__.py +6 -0
  550. gbdtransformation/designs/mnid/filters.py +62 -0
  551. gbdtransformation/designs/mnid/schema +98 -0
  552. gbdtransformation/designs/mnid/template.yml +1 -0
  553. gbdtransformation/designs/myid/__init__.py +5 -0
  554. gbdtransformation/designs/myid/filters.py +60 -0
  555. gbdtransformation/designs/myid/schema +95 -0
  556. gbdtransformation/designs/myid/template.yml +1 -0
  557. gbdtransformation/designs/phid/__init__.py +5 -0
  558. gbdtransformation/designs/phid/filters.py +70 -0
  559. gbdtransformation/designs/phid/schema +95 -0
  560. gbdtransformation/designs/phid/template.yml +1 -0
  561. gbdtransformation/designs/sgid/__init__.py +6 -0
  562. gbdtransformation/designs/sgid/filters.py +66 -0
  563. gbdtransformation/designs/sgid/schema +115 -0
  564. gbdtransformation/designs/sgid/template.yml +1 -0
  565. gbdtransformation/designs/thid/__init__.py +4 -0
  566. gbdtransformation/designs/thid/filters.py +64 -0
  567. gbdtransformation/designs/thid/schema +98 -0
  568. gbdtransformation/designs/thid/template.yml +1 -0
  569. gbdtransformation/designs/tnid/__init__.py +5 -0
  570. gbdtransformation/designs/tnid/filters.py +66 -0
  571. gbdtransformation/designs/tnid/schema +96 -0
  572. gbdtransformation/designs/tnid/template.yml +1 -0
  573. gbdtransformation/designs/vnid/__init__.py +5 -0
  574. gbdtransformation/designs/vnid/filters.py +62 -0
  575. gbdtransformation/designs/vnid/schema +97 -0
  576. gbdtransformation/designs/vnid/template.yml +1 -0
  577. gbdtransformation/designs/woid/__init__.py +2 -0
  578. gbdtransformation/designs/woid/filters.py +372 -0
  579. gbdtransformation/designs/woid/schema +592 -0
  580. gbdtransformation/designs/woid/template.yml +516 -0
  581. gbdtransformation/designs/xxid/__init__.py +2 -0
  582. gbdtransformation/designs/xxid/filters.py +60 -0
  583. gbdtransformation/designs/xxid/schema +4 -0
  584. gbdtransformation/designs/xxid/template.yml +358 -0
  585. gbdtransformation/execs-nico.py +709 -0
  586. gbdtransformation/execs.py +734 -0
  587. gbdtransformation/gbd-transform.exec.tgz +0 -0
  588. gbdtransformation/parser.py +190 -0
  589. gbdtransformation/renders.py +149 -0
  590. gbdtransformation/utilities/ISOCountryCodeType-V2006.xsd +1245 -0
  591. gbdtransformation/utilities/ISOCurrencyCodeType-V2001.xsd +855 -0
  592. gbdtransformation/utilities/ISOLanguageCodeType-V2002.xsd +715 -0
  593. gbdtransformation/utilities/WIPOST3CodeType-V2007.xsd +1151 -0
  594. gbdtransformation/utilities/__init__.py +0 -0
  595. gbdtransformation/utilities/st66.dot +2828 -0
  596. gbdtransformation/utilities/st66.pdf +0 -0
  597. gbdtransformation/utilities/st66.py +38700 -0
  598. gbdtransformation/utilities/st66.xsd +4174 -0
  599. schemas/ShazamConfig.py +35 -0
  600. schemas/__init__.py +0 -0
  601. schemas/schema_extractor.py +300 -0
  602. wipo_gbd_transformation-1.1.105.dist-info/LICENSE.md +687 -0
  603. wipo_gbd_transformation-1.1.105.dist-info/METADATA +25 -0
  604. wipo_gbd_transformation-1.1.105.dist-info/RECORD +607 -0
  605. wipo_gbd_transformation-1.1.105.dist-info/WHEEL +5 -0
  606. wipo_gbd_transformation-1.1.105.dist-info/entry_points.txt +6 -0
  607. wipo_gbd_transformation-1.1.105.dist-info/top_level.txt +2 -0
@@ -0,0 +1,140 @@
1
+ import datetime
2
+ import re
3
+
4
+ from . import countries
5
+
6
+ # -------------------------------------------------------------
7
+ # data translation helpers:
8
+ # translate values from office interpretation to gbd equivalent
9
+ # -------------------------------------------------------------
10
+
11
+ def translate_kind(patent_type):
12
+ if patent_type == 'Коллективный товарный знак': return 'Collective'
13
+ else: return 'Individual'
14
+
15
+
16
+ def translate_feature(doc):
17
+ patent_type = (doc.patent_type or '').strip()
18
+ if patent_type == 'Движущийся товарный знак': return 'Motion'
19
+ if patent_type == 'Звуковой товарный знак': return 'Sound'
20
+ if patent_type == 'Позиционный товарный знак': return 'Position'
21
+ if patent_type == 'Товарный знак голографический': return 'Hologram'
22
+ else:
23
+ has_word = doc.trademark_name_ru or doc.trademark_name_en or doc.trademark_name_kz
24
+ has_image = doc.image == 'yes'
25
+ if has_word and has_image: return 'Combined'
26
+ if has_word: return 'Word'
27
+ if has_image: return 'Figurative'
28
+
29
+ return 'Undefined'
30
+
31
+ # -------------------------------------------------------------
32
+ def deduce_status(edate):
33
+ if not edate: return 'Ended'
34
+
35
+ today = datetime.datetime.today().strftime('%Y-%m-%d')
36
+
37
+ if today > edate: return 'Expired'
38
+ else: return 'Registered'
39
+
40
+ def get_color_names(colors_claimed):
41
+ if not colors_claimed: return []
42
+
43
+ if not isinstance(colors_claimed, list):
44
+ colors_claimed = [colors_claimed]
45
+
46
+ color_names = []
47
+ for cc in colors_claimed:
48
+ color_names.append(cc.color)
49
+
50
+ return color_names
51
+
52
+ def get_vienna_codes(vclasses):
53
+ if not vclasses: return []
54
+
55
+ if not isinstance(vclasses, list):
56
+ vclasses = [vclasses]
57
+
58
+ codes = []
59
+ for vclass in vclasses:
60
+ code = vclass.class_number
61
+ if len(code.split('.')) == 3:
62
+ codes.append(code)
63
+
64
+ return codes
65
+
66
+ def get_goods_services(list_goods_services):
67
+ if not list_goods_services: return
68
+
69
+ nc = list_goods_services['class'] or []
70
+ gs = list_goods_services['list'] or []
71
+
72
+ if not isinstance(nc, list): nc = [nc]
73
+ if not isinstance(gs, list): gs = [gs]
74
+
75
+ # if not len(nc) == len(gs) and len(gs) > 0:
76
+ # raise Exception('attention to goods n services')
77
+
78
+ nc_gs = {}
79
+ nc_gs['00'] = [] # holder for nonclassified
80
+
81
+ nbmatch = len(nc) == len(gs)
82
+ for i,code in enumerate(nc):
83
+ nc_gs[code] = []
84
+
85
+ for i,line in enumerate(gs):
86
+ if not line: continue
87
+ terms = [l.strip() for l in line.split(';')]
88
+ #32 класса - безалкогольные напитки;
89
+ matches = re.findall(r'^0?(\d+) класса - (.*)', line)
90
+ if len(matches):
91
+ # split the class number and the rest of the line
92
+ (cls, line) = matches[0]
93
+ nc_gs.setdefault(cls, [])
94
+ nc_gs[cls] += terms
95
+ else:
96
+ #02
97
+ matches = re.findall(r'^0?(\d+)$', line)
98
+ if len(matches):
99
+ cls = matches[0]
100
+ nc_gs.setdefault(cls, [])
101
+ elif nbmatch:
102
+ nc_gs[nc[i]] += terms
103
+ else:
104
+ nc_gs['00'] += terms
105
+ return nc_gs
106
+
107
+ def parse_persons(inid_7_0):
108
+ if not inid_7_0: return []
109
+
110
+ if not isinstance(inid_7_0, list): inid_7_0 = [inid_7_0]
111
+
112
+ persons = []
113
+ for record in inid_7_0:
114
+ if not record: continue
115
+ person = {'address': record['address']}
116
+ name = record.name or ''
117
+ matches = re.findall(r'^(.*)\(([A-Z]{2})\)$', name)
118
+ if len(matches):
119
+ (person['name'], person['country']) = matches[0]
120
+ else:
121
+ person['name'] = name
122
+ person['country'] = country_name2code(record.country)
123
+ persons.append(person)
124
+
125
+ return persons
126
+
127
+ def country_name2code(name):
128
+ if not name:
129
+ return None
130
+
131
+ name = name.strip().lower()
132
+ for code, country in countries.items():
133
+ if isinstance(country, list):
134
+ for syn in country:
135
+ if syn.lower() == name:
136
+ return code
137
+ else:
138
+ if country.lower() == name:
139
+ return code
140
+ raise Exception('[%s] country name is not mapped' % name)
@@ -0,0 +1,36 @@
1
+ /U_ID
2
+ __/application_parties
3
+ ____/inid_730
4
+ ______/address
5
+ ______/country
6
+ ______/name
7
+ ____/inid_740
8
+ ______/name
9
+ __/colors_claimed
10
+ ____/color
11
+ ____/color_code
12
+ __/id
13
+ __/image
14
+ __/inid_111
15
+ __/inid_151
16
+ __/inid_170
17
+ __/inid_210
18
+ __/inid_220
19
+ __/inid_270
20
+ __/inid_450
21
+ __/list_of_goods_and_services
22
+ ____/class
23
+ ____/list
24
+ __/patent_type
25
+ __/priority_info
26
+ ____/customer
27
+ ______/country
28
+ ______/registration_date
29
+ ______/registration_number
30
+ __/trademark_name_en
31
+ __/trademark_name_kz
32
+ __/trademark_name_ru
33
+ __/vienne_classification
34
+ ____/class
35
+ ______/class_description
36
+ ______/class_number
@@ -0,0 +1,117 @@
1
+ {% from 'navigation.tmpl' import match %}
2
+
3
+ type: TRADEMARK
4
+ kind:
5
+ - {{ U_ID.patent_type | translate_kind }}
6
+ markFeature: {{ U_ID | translate_feature }}
7
+
8
+ registrationOfficeCode: KZ
9
+ designatedCountries:
10
+ - KZ
11
+
12
+ st13: {{ U_ID.inid_210 | st13('KZ', appdate=U_ID.inid_220) }}
13
+
14
+ applicationNumber: {{ U_ID.inid_210 }}
15
+ applicationDate: {{ U_ID.inid_220 }}
16
+ registrationNumber: {{ U_ID.inid_111 }}
17
+ registrationDate: {{ U_ID.inid_151 }}
18
+
19
+ applicationLanguageCode: ru
20
+
21
+ expiryDate: {{ U_ID.inid_170 }}
22
+
23
+ # rarely passed
24
+ terminationDate:
25
+
26
+ {% set status = U_ID.inid_170 | deduce_status %}
27
+ officeStatus: {{ status }}
28
+ gbdStatus: {{ status }}
29
+
30
+ wordMarkSpecification:
31
+ markVerbalElement:
32
+ {% if U_ID.trademark_name_ru %}
33
+ - languageCode: ru
34
+ text: {{ U_ID.trademark_name_ru }}
35
+ {% endif %}
36
+ {% if U_ID.trademark_name_kz %}
37
+ - languageCode: kz
38
+ text: {{ U_ID.trademark_name_kz }}
39
+ {% endif %}
40
+ {% if U_ID.trademark_name_en and not U_ID.trademark_name_en == U_ID.trademark_name_ru %}
41
+ - languageCode: en
42
+ text: {{ U_ID.trademark_name_en }}
43
+ {% endif %}
44
+
45
+ {% if U_ID.image == 'yes' %}
46
+ {% set color_names = U_ID.colors_claimed | get_color_names %}
47
+ {% set vienna_codes = U_ID.vienne_classification.class | get_vienna_codes %}
48
+ markImageDetails:
49
+ - name: {{ U_ID.inid_210 }}
50
+ colourIndicator: {{ U_ID.colors_claimed | get_true_or_false }}
51
+ colourClaimed:
52
+ {% for cname in color_names %}
53
+ - languageCode: {{ cname | guess_language('ru') }}
54
+ text: {{ cname }}
55
+ {% endfor %}
56
+
57
+ {% if (vienna_codes | length) > 0 %}
58
+ classification:
59
+ kind: Vienna
60
+ version: {{ ASK_THE_OFFICE }}
61
+ code:
62
+ {% for code in vienna_codes %}
63
+ - {{ code }}
64
+ {% endfor %}
65
+ {% endif %}
66
+ {% endif %}
67
+
68
+ {% set gs = U_ID.list_of_goods_and_services | get_goods_services %}
69
+ {% if (gs.keys() | length) > 0%}
70
+ goodsServicesClassification:
71
+ kind: Nice
72
+ version: {{ ASK_THE_OFFICE }}
73
+ class:
74
+ {% for nc in gs.keys() %}
75
+ {% if not nc == '00' %}
76
+ - code: {{ nc | int }}
77
+ terms:
78
+ ru:
79
+ {% for term in gs[nc] %}
80
+ - {{ term }}
81
+ {% endfor %}
82
+ {% endif %}
83
+ {% endfor %}
84
+ {% endif %}
85
+
86
+ goodsServicesUnclassified:
87
+ ru:
88
+ {% for term in gs['00'] or [] %}
89
+ - {{ term }}
90
+ {% endfor %}
91
+
92
+ {% set applicants = U_ID.application_parties.inid_730 | parse_persons %}
93
+ applicants:
94
+ {% for applicant in applicants %}
95
+ - fullName:
96
+ - languageCode: ru
97
+ text: {{ applicant.name }}
98
+ fullAddress:
99
+ - languageCode: {{ applicant.address | guess_language('ru') }}
100
+ text: {{ applicant.address }}
101
+ countryCode: {{ applicant.country }}
102
+ {% endfor %}
103
+
104
+ {% set representatives = U_ID.application_parties.inid_740 | parse_persons %}
105
+ representatives:
106
+ {% for representative in representatives %}
107
+ - fullName:
108
+ - languageCode: ru
109
+ text: {{ representative.name }}
110
+ fullAddress:
111
+ - languageCode: {{ representative.address | guess_language('ru') }}
112
+ text: {{ representative.address }}
113
+ countryCode: {{ representative.country }}
114
+ {% endfor %}
115
+
116
+ extra:
117
+ id: {{ U_ID.id }}
@@ -0,0 +1,7 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # M/1421805
5
+ # 11858
6
+ appnum_mask = [ '(M)/(\\d*)',
7
+ '(\\d*)' ]
@@ -0,0 +1,93 @@
1
+ import gbdtransformation.brands.ipas.filters as ipas
2
+
3
+ ignore_namespace = [
4
+ 'http://www.wipo.int/standards/XMLSchema/trademarks',
5
+ 'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
6
+
7
+ def get_appdate(appdate, appnum):
8
+ return ipas.get_appdate(appdate, appnum)
9
+
10
+ def translate_type(header):
11
+ code = header.TransactionCode
12
+
13
+ # extraction missing info.
14
+ if not code:
15
+ raise Exception('Incomplete Document Info')
16
+
17
+ if code == 'Trademark': return 'TRADEMARK'
18
+ if code == 'Trademark - Individual': return 'TRADEMARK'
19
+ if code == 'Trademark - Madrid': return 'TRADEMARK'
20
+ if code == 'Trademark - Collective': return 'TRADEMARK'
21
+
22
+ raise Exception('Type "%s" is not mapped.' % code)
23
+
24
+ def translate_kind(trademark, header):
25
+ code = header.TransactionCode
26
+ subcode = header.TransactionSubCode
27
+
28
+ if subcode == 'Trademark': return ['Individual']
29
+ if subcode == 'TM Individual': return ['Individual']
30
+ if subcode == 'TM Individual - Renewal': return ['Individual']
31
+ if subcode == 'Trademark - Madrid': return ['Individual']
32
+
33
+ if subcode == 'Collective Mark': return ['Collective']
34
+ if subcode == 'TM Collective - Renewal': return ['Collective']
35
+ if subcode == 'Certification Mark': return ['Certificate']
36
+
37
+ raise Exception('Kind "%s" not mapped.' % subcode)
38
+
39
+ def translate_status(trademark):
40
+ status = trademark.MarkCurrentStatusCode
41
+
42
+ if status == 'Inactive':
43
+ if trademark.ExpiryDate: return 'Expired'
44
+ else: return 'Ended'
45
+
46
+ return ipas.translate_status(status)
47
+
48
+ def translate_feature(trademark):
49
+ feature = trademark.MarkFeature
50
+
51
+ if not feature: return 'Undefined'
52
+
53
+ return ipas.translate_feature(feature)
54
+
55
+ def translate_event(event):
56
+ return ipas.translate_event(event)
57
+
58
+ # ---------------------------------------
59
+
60
+ # TODO: language code in data is la (wrong X)
61
+ # language code for Lao is lo (la is Latin)
62
+ # {'la': ['FAB POWER PLUS IN THAI']} <- en
63
+ # {'la': ['ທະວີໂຊກ ພ້ອມດ້ວຍຮູບ']} <- lo
64
+ def verbal_lang_map(markVerbalElements, applang=None):
65
+ # print( ipas.verbal_lang_map(markVerbalElements, applang=applang))
66
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
67
+
68
+ def get_registration_nb(trademark, tmstatus):
69
+ if trademark.RegistrationNumber:
70
+ return trademark.RegistrationNumber
71
+
72
+ if not tmstatus in ['Expired', 'Registered']:
73
+ return None
74
+
75
+ # no way to deduce registration number
76
+ return None
77
+
78
+ def get_expiry_date(trademark, tmstatus):
79
+ return ipas.get_expiry_date(trademark, tmstatus)
80
+
81
+ def get_registration_date(trademark, tmstatus):
82
+ return ipas.get_registration_date(trademark, tmstatus)
83
+
84
+ def is_international(header):
85
+ code = header.TransactionCode
86
+ return code == 'Trademark - Madrid'
87
+
88
+ # M/1350065
89
+ def get_ir_refnum(appnum):
90
+ return appnum.split('/')[-1]
91
+
92
+ def get_goods_services(goods_services):
93
+ return ipas.get_goods_services(goods_services)
@@ -0,0 +1,86 @@
1
+ /Transaction
2
+ __/TradeMarkTransactionBody
3
+ ____/TransactionContentDetails
4
+ ______/TransactionCode
5
+ ______/TransactionData
6
+ ________/TradeMarkApplication
7
+ __________/TradeMarkDetails
8
+ ____________/TradeMark
9
+ ______________/ApplicantDetails
10
+ ________________/Applicant
11
+ __________________/ApplicantAddressBook
12
+ ____________________/FormattedNameAddress
13
+ ______________________/Address
14
+ ________________________/AddressCountryCode
15
+ ________________________/FreeFormatAddress
16
+ __________________________/FreeFormatAddressLine
17
+ ______________________/Name
18
+ ________________________/FreeFormatName
19
+ __________________________/FreeFormatNameDetails
20
+ ____________________________/FreeFormatNameLine
21
+ ____________________________/FreeFormatNameLine[@languageCode=en]
22
+ ______________/ApplicationDate
23
+ ______________/ApplicationLanguageCode
24
+ ______________/ApplicationNumber
25
+ ______________/ExpiryDate
26
+ ______________/GoodsServicesDetails
27
+ ________________/GoodsServices
28
+ __________________/ClassDescriptionDetails
29
+ ____________________/ClassDescription
30
+ ______________________/ClassNumber
31
+ ______________________/GoodsServicesDescription
32
+ ______________________/GoodsServicesDescription[@languageCode=en]
33
+ ______________/KindMark
34
+ ______________/MarkCurrentStatusCode
35
+ ______________/MarkCurrentStatusDate
36
+ ______________/MarkDisclaimerDetails
37
+ ________________/MarkDisclaimer
38
+ ________________/MarkDisclaimer[@languageCode=en]
39
+ ______________/MarkEventDetails
40
+ ________________/MarkEvent
41
+ __________________/MarkEventCode
42
+ __________________/MarkEventDate
43
+ __________________/OfficeSpecificMarkEventCode
44
+ __________________/OfficeSpecificMarkEventDescription
45
+ __________________/OfficeSpecificMarkEventDescription[@languageCode=en]
46
+ ______________/MarkFeature
47
+ ______________/MarkImageDetails
48
+ ________________/MarkImage
49
+ __________________/MarkImageCategory
50
+ ____________________/CategoryCodeDetails
51
+ ______________________/CategoryCode
52
+ ____________________/CategoryKind
53
+ ____________________/CategoryVersion
54
+ __________________/MarkImageColourClaimedText
55
+ __________________/MarkImageColourClaimedText[@languageCode=en]
56
+ __________________/MarkImageFileFormat
57
+ __________________/MarkImageFilename
58
+ ______________/PriorityDetails
59
+ ________________/Priority
60
+ __________________/PriorityCountryCode
61
+ __________________/PriorityDate
62
+ __________________/PriorityNumber
63
+ ______________/PublicationDetails
64
+ ________________/Publication
65
+ __________________/PublicationDate
66
+ ______________/RegistrationDate
67
+ ______________/RegistrationNumber
68
+ ______________/RegistrationOfficeCode
69
+ ______________/RepresentativeDetails
70
+ ________________/Representative
71
+ __________________/RepresentativeAddressBook
72
+ ____________________/FormattedNameAddress
73
+ ______________________/Address
74
+ ________________________/AddressCountryCode
75
+ ________________________/FreeFormatAddress
76
+ __________________________/FreeFormatAddressLine
77
+ ______________________/Name
78
+ ________________________/FreeFormatName
79
+ __________________________/FreeFormatNameDetails
80
+ ____________________________/FreeFormatNameLine
81
+ ____________________________/FreeFormatNameLine[@languageCode=en]
82
+ ______________/WordMarkSpecification
83
+ ________________/MarkVerbalElementText
84
+ ________________/MarkVerbalElementText[@languageCode=en]
85
+ ______/TransactionIdentifier
86
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
File without changes
@@ -0,0 +1,112 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <Transaction xmlns="http://www.wipo.int/standards/XMLSchema/trademarks" xmlns:wo="http://www.wipo.int/standards/XMLSchema/wo-trademarks">
4
+ <TradeMarkTransactionBody>
5
+ <TransactionContentDetails>
6
+ <TransactionIdentifier>T</TransactionIdentifier>
7
+ <TransactionCode>Trademark</TransactionCode>
8
+ <TransactionSubCode>Trademark</TransactionSubCode>
9
+ <TransactionData>
10
+ <TradeMarkApplication>
11
+ <TradeMarkDetails>
12
+ <TradeMark>
13
+ <RegistrationOfficeCode>LA</RegistrationOfficeCode>
14
+ <ApplicationNumber>37978</ApplicationNumber>
15
+ <ApplicationDate>2016-08-17</ApplicationDate>
16
+ <RegistrationNumber>38524</RegistrationNumber>
17
+ <RegistrationDate>2017-08-15</RegistrationDate>
18
+ <ApplicationLanguageCode>la</ApplicationLanguageCode>
19
+ <ExpiryDate>2027-08-15</ExpiryDate>
20
+ <MarkCurrentStatusDate>2017-08-15</MarkCurrentStatusDate>
21
+ <MarkFeature>Word</MarkFeature>
22
+ <MarkImageDetails>
23
+ <MarkImage/>
24
+ </MarkImageDetails>
25
+ <GoodsServicesDetails>
26
+ <GoodsServices>
27
+ <ClassDescriptionDetails>
28
+ <ClassDescription>
29
+ <ClassNumber>9</ClassNumber>
30
+ <GoodsServicesDescription languageCode="la">Electric wires; electric cables; telephone wires; fiber cables; cnamclcd wircs.</GoodsServicesDescription>
31
+ </ClassDescription>
32
+ </ClassDescriptionDetails>
33
+ </GoodsServices>
34
+ </GoodsServicesDetails>
35
+ <PublicationDetails>
36
+ <Publication>
37
+ <PublicationIdentifier>37978</PublicationIdentifier>
38
+ <PublicationDate>2017-09-30</PublicationDate>
39
+ </Publication>
40
+ </PublicationDetails>
41
+ <ApplicantDetails>
42
+ <Applicant>
43
+ <ApplicantAddressBook>
44
+ <FormattedNameAddress>
45
+ <Name>
46
+ <FreeFormatName>
47
+ <FreeFormatNameDetails>
48
+ <FreeFormatNameLine languageCode="la">TA YA ELECTRIC WIRE &amp; CABLE CO., LTD.</FreeFormatNameLine>
49
+ </FreeFormatNameDetails>
50
+ </FreeFormatName>
51
+ </Name>
52
+ <Address>
53
+ <AddressCountryCode>TW</AddressCountryCode>
54
+ <FreeFormatAddress>
55
+ <FreeFormatAddressLine>249, Section 2, Chung Shan Road, Guanmiao District, Tainan City, Taiwan, R.O.C.</FreeFormatAddressLine>
56
+ </FreeFormatAddress>
57
+ </Address>
58
+ </FormattedNameAddress>
59
+ </ApplicantAddressBook>
60
+ </Applicant>
61
+ </ApplicantDetails>
62
+ <RepresentativeDetails>
63
+ <Representative>
64
+ <RepresentativeAddressBook>
65
+ <FormattedNameAddress>
66
+ <Name>
67
+ <FreeFormatName>
68
+ <FreeFormatNameDetails>
69
+ <FreeFormatNameLine languageCode="la">LAO TRADEMARK AGENCY (LAO IP AGENCY)</FreeFormatNameLine>
70
+ </FreeFormatNameDetails>
71
+ </FreeFormatName>
72
+ </Name>
73
+ <Address>
74
+ <AddressCountryCode>LA</AddressCountryCode>
75
+ <FreeFormatAddress>
76
+ <FreeFormatAddressLine>LLC Bldg, Nongbone Road, Ban Nongbone, Saysettha District, P.O.BOX 925, Vientiane, LAO P.D.R.</FreeFormatAddressLine>
77
+ </FreeFormatAddress>
78
+ </Address>
79
+ </FormattedNameAddress>
80
+ </RepresentativeAddressBook>
81
+ </Representative>
82
+ </RepresentativeDetails>
83
+ <wo:WordMarkSpecification>
84
+ <wo:MarkVerbalElementText languageCode="la">TA YA</wo:MarkVerbalElementText>
85
+ </wo:WordMarkSpecification>
86
+ <wo:MarkEventDetails>
87
+ <wo:MarkEvent>
88
+ <wo:MarkEventDate>2016-08-17</wo:MarkEventDate>
89
+ <wo:MarkEventCode>Filed</wo:MarkEventCode>
90
+ <wo:OfficeSpecificMarkEventName>Filing</wo:OfficeSpecificMarkEventName>
91
+ </wo:MarkEvent>
92
+ <wo:MarkEvent>
93
+ <wo:MarkEventDate>2017-08-15</wo:MarkEventDate>
94
+ <wo:MarkEventCode>Registered</wo:MarkEventCode>
95
+ <wo:OfficeSpecificMarkEventName>Registration</wo:OfficeSpecificMarkEventName>
96
+ <wo:OfficeSpecificMarkEventCode>016</wo:OfficeSpecificMarkEventCode>
97
+ <wo:OfficeSpecificMarkEventDescription languageCode="la">(TM) Registered</wo:OfficeSpecificMarkEventDescription>
98
+ </wo:MarkEvent>
99
+ <wo:MarkEvent>
100
+ <wo:MarkEventDate>2017-09-30</wo:MarkEventDate>
101
+ <wo:MarkEventCode>Published</wo:MarkEventCode>
102
+ <wo:OfficeSpecificMarkEventName>Publication</wo:OfficeSpecificMarkEventName>
103
+ </wo:MarkEvent>
104
+ </wo:MarkEventDetails>
105
+ <wo:MarkCurrentStatusCode>Registered</wo:MarkCurrentStatusCode>
106
+ </TradeMark>
107
+ </TradeMarkDetails>
108
+ </TradeMarkApplication>
109
+ </TransactionData>
110
+ </TransactionContentDetails>
111
+ </TradeMarkTransactionBody>
112
+ </Transaction>
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # AE/321890
5
+ appnum_mask = 'LK/T/1/(\\d*)'
@@ -0,0 +1,83 @@
1
+ import gbdtransformation.brands.ipas.filters as ipas
2
+ import gbdtransformation.common.filters as commons
3
+
4
+ ignore_namespace = [
5
+ 'http://www.wipo.int/standards/XMLSchema/trademarks',
6
+ 'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
7
+
8
+ def get_appdate(appdate, appnum):
9
+ return ipas.get_appdate(appdate, appnum)
10
+
11
+ def translate_type(header):
12
+ code = header.TransactionCode
13
+ if code == 'Trademark': return 'TRADEMARK'
14
+ if code == 'Certification Trademark': return 'TRADEMARK'
15
+ return 'TRADEMARK'
16
+
17
+ def translate_kind(trademark, header):
18
+ subcode = header.TransactionSubCode
19
+ if subcode == 'Individual Trademark': return ['Individual']
20
+ if subcode == 'Company/Partnership Trademark': return ['Individual']
21
+ if subcode == 'Collective Trademark': return ['Collective']
22
+ if subcode == 'Certification Trademark': return ['Individual']
23
+
24
+
25
+ # it is None for all
26
+ # kind = trademark.KindMark
27
+
28
+ raise Exception('Kind "%s" not mapped.' % subcode)
29
+ return ['Individual']
30
+
31
+ def translate_status(trademark):
32
+ status = trademark.MarkCurrentStatusCode
33
+
34
+ if status == 'Converted': return 'Registered'
35
+
36
+ return ipas.translate_status(status)
37
+
38
+ def translate_feature(trademark):
39
+ feature = trademark.MarkFeature
40
+
41
+ if not feature: return 'Undefined'
42
+
43
+ return ipas.translate_feature(feature)
44
+
45
+ def translate_event(event):
46
+ if not event: return 'Unknown'
47
+
48
+ return ipas.translate_event(event)
49
+
50
+ # ---------------------------------------
51
+ # # language code is not accurate for markVerbalElement
52
+ # def guess_language(text, lang, default):
53
+ # if commons.is_latin(text):
54
+ # return 'en'
55
+ # else:
56
+ # return commons.guess_language(text, lang, default)
57
+
58
+ # TODO: separate values like
59
+ # {'ar': ['BITUTAPE - بيتوتيب']}
60
+ # {'ar': ['ديمه كابيتال Dimah Capital']}
61
+ def verbal_lang_map(markVerbalElements, applang=None):
62
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
63
+
64
+ def get_registration_nb(trademark, tmstatus):
65
+ if trademark.RegistrationNumber:
66
+ return trademark.RegistrationNumber
67
+
68
+ return None
69
+
70
+ def get_expiry_date(trademark, tmstatus):
71
+ return ipas.get_expiry_date(trademark, tmstatus)
72
+
73
+ def get_registration_date(trademark, tmstatus):
74
+ return ipas.get_registration_date(trademark, tmstatus)
75
+
76
+ def is_international(header):
77
+ return False
78
+
79
+ def get_ir_refnum(appnum):
80
+ return
81
+
82
+ def get_goods_services(goods_services):
83
+ return ipas.get_goods_services(goods_services)