wipo-gbd-transformation 1.1.82__py3-none-any.whl → 1.1.84__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.

Potentially problematic release.


This version of wipo-gbd-transformation might be problematic. Click here for more details.

@@ -14,7 +14,8 @@ def translate_status(trademark):
14
14
 
15
15
  if trademark.STATUSAPPLICATION == 'true': return ('Pending', 'Application filed')
16
16
 
17
- raise Exception('Could not deduce status')
17
+ return 'Unknown'
18
+ #raise Exception('Could not deduce status')
18
19
 
19
20
  def translate_kind(kind):
20
21
  if not kind: return ['Individual']
@@ -23,7 +24,8 @@ def translate_kind(kind):
23
24
  if kind == 'kollektiv': return ['Collective']
24
25
  if kind == 'gewaehrleistung': return ['Certificate']
25
26
 
26
- raise Exception('kind "%s" is not mapped' % kind)
27
+ return 'Other'
28
+ #raise Exception('kind "%s" is not mapped' % kind)
27
29
 
28
30
  def translate_feature(feature):
29
31
  if not feature: return 'Undefined'
@@ -42,15 +44,30 @@ def translate_feature(feature):
42
44
  if feature.WORD: return 'Word'
43
45
  if feature.WORDIMAGE: return 'Figurative'
44
46
 
45
-
46
- raise Exception('Feature could not be deduced')
47
-
47
+ return 'Unknown'
48
+ #raise Exception('Feature could not be deduced')
48
49
 
49
50
  # if Registered or Expired =>
50
51
  # if RENEWALDATE: 10y after RENEWALDATE and endofmonth of FILDATE
51
52
  # else: 10y and endofmonth of FILDATE
53
+
54
+ # PL: Missing cancelation
55
+
52
56
  def get_expiry_date(trademark, gbd_status):
53
57
  if gbd_status in ['Registered', 'Expired']:
58
+
59
+ if trademark.STATUSCANCELLED == "true":
60
+ # expiry date is cancelation date, which in this case is the same as the PROCDATE
61
+ pdate = trademark.PROCDATE
62
+ if pdate:
63
+ try:
64
+ pdate = datetime.strptime(pdate.strip(), '%Y-%m-%dT%H:%M:%S')
65
+ pdate = pdate.date()
66
+ except:
67
+ pdate = None
68
+ if pdate:
69
+ return pdate
70
+
54
71
  rdate = trademark.RENEWALDATE
55
72
  fdate = trademark.FILDATE
56
73
  edate = datetime.strptime(rdate if rdate else fdate, '%Y-%m-%d')
@@ -6,28 +6,23 @@ status_map = {
6
6
  '000': {'gbd': 'Delete', 'office': 'Indifferent'},
7
7
  '626': {'gbd': 'Delete', 'office': 'Dead/Cancelled'},
8
8
 
9
- '416': {'gbd': 'Unknown', 'office': 'Other'},
10
- '901': {'gbd': 'Unknown', 'office': 'Other'},
11
- '968': {'gbd': 'Unknown', 'office': 'Other'},
12
- '969': {'gbd': 'Unknown', 'office': 'Other'},
9
+ '622': {'gbd': 'Other', 'office': 'Indifferent'},
13
10
 
14
- '900': {'gbd': 'Expired', 'office': 'Dead/Expired'},
15
-
16
- '622': {'gbd': 'Ended', 'office': 'Dead/Refused'},
17
- '632': {'gbd': 'Ended', 'office': 'Dead/Refused'},
18
- '401': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
19
- '400': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
11
+
12
+ '401': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
13
+ '400': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
20
14
  '402': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
21
15
  '403': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
22
16
  '404': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
23
- '405': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
17
+ '405': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
24
18
  '406': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
25
19
  '411': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
26
20
  '412': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
27
21
  '414': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
28
22
  '415': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
23
+ '416': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
29
24
  '417': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
30
- '618': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
25
+
31
26
  '600': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
32
27
  '601': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
33
28
  '602': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
@@ -38,17 +33,20 @@ status_map = {
38
33
  '607': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
39
34
  '608': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
40
35
  '609': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
41
- '610': {'gbd': 'Ended', 'office': 'Dead/Refused/Dismissed'},
36
+ '610': {'gbd': 'Ended', 'office': 'Dead'},
42
37
  '612': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
43
38
  '614': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
39
+ '618': {'gbd': 'Ended', 'office': 'Dead/Abandoned'},
40
+ '632': {'gbd': 'Ended', 'office': 'Dead'},
41
+
44
42
  '709': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
45
43
  '710': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
46
44
  '711': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
47
45
  '712': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
48
46
  '713': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
49
47
  '714': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
50
- '781': {'gbd': 'Ended', 'office': 'Cancelled/Invalidated'},
51
- '782': {'gbd': 'Ended', 'office': 'Cancelled/Invalidated'},
48
+ '781': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
49
+ '782': {'gbd': 'Ended', 'office': 'Dead/Cancelled'},
52
50
 
53
51
  '700': {'gbd': 'Registered', 'office': 'Live/Registered'},
54
52
  '701': {'gbd': 'Registered', 'office': 'Live/Registered'},
@@ -59,9 +57,10 @@ status_map = {
59
57
  '706': {'gbd': 'Registered', 'office': 'Live/Registered'},
60
58
  '707': {'gbd': 'Registered', 'office': 'Live/Registered'},
61
59
  '708': {'gbd': 'Registered', 'office': 'Live/Registered'},
60
+ '717': {'gbd': 'Registered', 'office': 'Live'},
62
61
  '624': {'gbd': 'Registered', 'office': 'Live/Registered'},
63
62
  '625': {'gbd': 'Registered', 'office': 'Live/Registered'},
64
- '413': {'gbd': 'Registered', 'office': 'Live/Registered'},
63
+
65
64
  '778': {'gbd': 'Registered', 'office': 'Live/Registered'},
66
65
  '780': {'gbd': 'Registered', 'office': 'Live/Registered'},
67
66
  '790': {'gbd': 'Registered', 'office': 'Live/Registered'},
@@ -69,6 +68,8 @@ status_map = {
69
68
  '800': {'gbd': 'Registered', 'office': 'Live/Registered'},
70
69
 
71
70
  '410': {'gbd': 'Pending', 'office': 'Live/Pending'},
71
+ '413': {'gbd': 'Pending', 'office': 'Live/Pending'},
72
+
72
73
  '616': {'gbd': 'Pending', 'office': 'Live/Pending'},
73
74
  '620': {'gbd': 'Pending', 'office': 'Live/Pending'},
74
75
  '630': {'gbd': 'Pending', 'office': 'Live/Pending'},
@@ -113,6 +114,7 @@ status_map = {
113
114
  '692': {'gbd': 'Pending', 'office': 'Live/Pending'},
114
115
  '693': {'gbd': 'Pending', 'office': 'Live/Pending'},
115
116
  '694': {'gbd': 'Pending', 'office': 'Live/Pending'},
117
+
116
118
  '718': {'gbd': 'Pending', 'office': 'Live/Pending'},
117
119
  '719': {'gbd': 'Pending', 'office': 'Live/Pending'},
118
120
  '720': {'gbd': 'Pending', 'office': 'Live/Pending'},
@@ -125,7 +127,8 @@ status_map = {
125
127
  '732': {'gbd': 'Pending', 'office': 'Live/Pending'},
126
128
  '733': {'gbd': 'Pending', 'office': 'Live/Pending'},
127
129
  '734': {'gbd': 'Pending', 'office': 'Live/Pending'},
128
- # '740': {'gbd': 'Pending', 'office': ''},
130
+
131
+ '740': {'gbd': 'Pending', 'office': 'Live/Pending'},
129
132
  '744': {'gbd': 'Pending', 'office': 'Live/Pending'},
130
133
  '745': {'gbd': 'Pending', 'office': 'Live/Pending'},
131
134
  '746': {'gbd': 'Pending', 'office': 'Live/Pending'},
@@ -172,6 +175,13 @@ status_map = {
172
175
  '823': {'gbd': 'Pending', 'office': 'Live/Pending'},
173
176
  '824': {'gbd': 'Pending', 'office': 'Live/Pending'},
174
177
  '825': {'gbd': 'Pending', 'office': 'Live/Pending'},
175
- '715': {'gbd': 'Pending', 'office': 'Live/Pending'},
176
- '973': {'gbd': 'Unknown', 'office': 'Suspended Pending Administrative Review'},
178
+
179
+ '715': {'gbd': 'Pending', 'office': 'Indifferent/Cancelled'},
180
+
181
+ '900': {'gbd': 'Expired', 'office': 'Dead/Expired'},
182
+ '901': {'gbd': 'Ended', 'office': 'Dead'},
183
+ '968': {'gbd': 'Ended', 'office': 'Dead'},
184
+ '969': {'gbd': 'Pending', 'office': 'Live/Pending'},
185
+ '973': {'gbd': 'Unknown', 'office': 'Suspended Pending Administrative Review'}
186
+
177
187
  }
@@ -4,14 +4,16 @@ from . import status_map
4
4
  # namespaces defined in XML and to be ignored in procecssing
5
5
  ignore_namespace = []
6
6
 
7
-
8
- # -------------------------------------------------------------
9
- # data translation helpers:
10
- # translate values from office interpretation to gbd equivalent
11
- # -------------------------------------------------------------
7
+ # WARNING: pypers is making a transformation of the original USPTO XML
8
+ # into a "compressed" format that changes in particula the names of tags
9
+ # for example <mark-drawing-code> becomes <drawCode>, so
10
+ # the USPTO documentation has to be "translated" to this weirdo intermediary
11
+ # format (why doing simple and readable? :)
12
+ # to see this "pypers" mapping:
13
+ # https://git.wipo.int/projects/BDDS/repos/gbd_etl_pypers/browse/pypers/steps/fetch/extract/us/ustm-tags.xml
12
14
 
13
15
  def translate_kind(flags):
14
- is_tradmark = flags[2] == '1'
16
+ is_trademark = flags[2] == '1'
15
17
  is_collective = flags[3] == '1'
16
18
  is_service = flags[4] == '1'
17
19
  is_service_collective = flags[5] == '1'
@@ -19,21 +21,24 @@ def translate_kind(flags):
19
21
  is_certificate = flags[7] == '1'
20
22
 
21
23
  kind = []
22
- if is_tradmark : kind = [ 'Individual' ]
24
+ if is_trademark : kind = [ 'Individual' ]
23
25
  if is_collective : kind = [ 'Collective' ]
24
26
  if is_service : kind = [ 'Individual' ]
25
27
  if is_service_collective: kind = [ 'Collective' ]
26
28
  if is_membership_collective : kind = [ 'Membership', 'Collective' ]
27
29
  if is_certificate : kind = [ 'Certificate' ]
28
30
 
29
- if len(kind): return kind
30
- else: return ['Other']
31
+ if len(kind):
32
+ return kind
33
+ else:
34
+ return ['Other']
31
35
 
32
36
  def translate_status(status):
33
37
  """translation of mark status"""
34
38
  # a required data from office. if not present and no way to guess,
35
39
  # return Unknown
36
- if not status: return 'Unknown'
40
+ if not status:
41
+ return 'Unknown'
37
42
 
38
43
  try:
39
44
  return status_map[status]
@@ -41,23 +46,26 @@ def translate_status(status):
41
46
  return ['Unknown']
42
47
  #raise Exception('Status "%s" unmapped' % status)
43
48
 
44
-
45
49
  def translate_feature(drawcode):
46
50
  if not drawcode: return 'Undefined'
47
51
 
48
52
  code = drawcode [0]
53
+ # PL: '0' means "Mark drawing code not yet assigned"
49
54
  if code == '1': return 'Word' #1000
50
55
  if code == '2': return 'Figurative'
51
56
  if code == '3': return 'Combined'
52
57
  if code == '4': return 'Word' #4000
53
58
  if code == '5': return 'Stylized characters'
54
- if code == '6': return 'Olfactory' #6000
59
+ # PL: the code '6'' was incorrectly mapped to 'Olfactory',
60
+ # Official documentation: '6' means "Where no drawing is possible, such as for sound", so it means "other".
61
+ # Unfortunately until June 2025, everything was mapped to 'Olfactory', so sound or 3D trademarks are all
62
+ # 'Olfactory' in GBD until this date
63
+ if code == '6': return 'Other' #6000
55
64
 
56
65
  return ['Other']
66
+ # note: documentation explains that mark-drawing-code is optional, so we don't want to raise an exception here
57
67
  #raise Exception('DrawCode "%s" unmapped' % drawcode)
58
68
 
59
- ##-----------------
60
-
61
69
  def get_img_class(dessearches):
62
70
  if not dessearches: return None
63
71
  if not isinstance(dessearches, list):
@@ -1,3 +1,11 @@
1
+ # WARNING: pypers is making a transformation of the original USPTO XML
2
+ # into a "compressed" format that change the names of tags
3
+ # for example <mark-drawing-code> becomes <drawCode>, so
4
+ # the USPTO documentation has to be "translated" to this weirdo intermediary
5
+ # format (why doing simple and readable? :)
6
+ # to see this "pypers" mapping:
7
+ # https://git.wipo.int/projects/BDDS/repos/gbd_etl_pypers/browse/pypers/steps/fetch/extract/us/ustm-tags.xml
8
+
1
9
  {% from 'navigation.tmpl' import match %}
2
10
 
3
11
  {% set flags = file.head._flags %}
@@ -24,7 +24,7 @@
24
24
  type: # (TRADEMARK|EMBLEM|AO|GI|INN)
25
25
  kind:
26
26
  - str # (Individual|Collective|Certificate|Defensive|Other|Membership|Undefined)
27
- markFeature: # (Word|Stylized characters|Figurative|Combined|Three dimensional|Colour|Sound|Hologram|Olfactory|Motion|Municipal|Chimney|Other|Undefined)
27
+ markFeature: # (Word|Stylized characters|Figurative|Combined|Three dimensional|Colour|Sound|Hologram|Olfactory|Motion|Municipal|Chimney|Other|Undefined|Unknown)
28
28
 
29
29
  registrationOfficeCode:
30
30
  designatedCountries:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wipo-gbd-transformation
3
- Version: 1.1.82
3
+ Version: 1.1.84
4
4
  Summary: GBD XML ETL package
5
5
  Home-page: https://github.com/GBD-Wipo/xmlE
6
6
  Author: WIPO GDB team
@@ -89,7 +89,7 @@ gbdtransformation/brands/cutm/schema,sha256=TFrF4FR76cytcbtQkDWxtF74I0tCPRDIvWRF
89
89
  gbdtransformation/brands/cutm/template.yml,sha256=TiC6Nf2MF8l1srCpvChPcS99KBaXSy-BGIVRkqQZVtU,138
90
90
  gbdtransformation/brands/cutm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
91
  gbdtransformation/brands/detm/__init__.py,sha256=eSKSOkwspXF3U7Sv7Z2KkOQSqzvghK5dD9vR-pmEPKQ,418
92
- gbdtransformation/brands/detm/filters.py,sha256=kR_OKuRWEXymKKz-brh6CoO4kIsrvK-W2hGfgLsH0Yk,2611
92
+ gbdtransformation/brands/detm/filters.py,sha256=n-Y3dLxtgIRMCSoFqDXuKluf_uBwa-CXory8wCwmcXQ,3167
93
93
  gbdtransformation/brands/detm/schema,sha256=SxOjgWehtwDP01TPFmMGsjWs1Sz6ijUlHB8WUMSBOeU,9451
94
94
  gbdtransformation/brands/detm/template.yml,sha256=Co2eFATPhDHDN0dz4tNNJsL8Mpl7qm2W6ejhZxEjHBg,3880
95
95
  gbdtransformation/brands/dktm/__init__.py,sha256=lQh4-cQE0kvjM75miSkI2As4xEgb9Em_4lJfnbgAbS8,180
@@ -407,10 +407,10 @@ gbdtransformation/brands/uatm/__init__.py,sha256=CLZvaGREoJUDCyrrMWlsyBs1Fe6lJHP
407
407
  gbdtransformation/brands/uatm/filters.py,sha256=Er8L7T5If-2s_oDZIhgIpUKBTHR9gN1ZVlG_csLmrT4,2202
408
408
  gbdtransformation/brands/uatm/schema,sha256=xyi3dhfyhzwFzeNA4vl5CZ_3FGNm6kcePHQt4Nd_qWM,4318
409
409
  gbdtransformation/brands/uatm/template.yml,sha256=7E7Q9HUg8aFdiwzpYYqB0LIWbkG_zkRh8mGVpk7fL6k,5974
410
- gbdtransformation/brands/ustm/__init__.py,sha256=kTDTnS4FtOCbvjeHCz0Tt2fXvlQ-I5ukdgvm8ECBW44,9679
411
- gbdtransformation/brands/ustm/filters.py,sha256=INsDDZ2KvvfYuN4CvPuRu1d-G-e2cLUwh8BbcqJ5fJ8,5234
410
+ gbdtransformation/brands/ustm/__init__.py,sha256=nAKYGg8pFwhesOakhSSbHADYx422ODF73hEIjbswwOw,9731
411
+ gbdtransformation/brands/ustm/filters.py,sha256=_-Fk0jN3es5yr8AtRjYUXZ9ZTqmKMaJZrTAwQsPiJGw,5978
412
412
  gbdtransformation/brands/ustm/schema,sha256=7vcbDMFy76nAxZ5dRjssbOhHNFOqVIlVldrNssBB1Mc,133581
413
- gbdtransformation/brands/ustm/template.yml,sha256=92F8h-MT_m6S0QACKlJyldWHP1CWJKRpzdJDyC1zoeY,4582
413
+ gbdtransformation/brands/ustm/template.yml,sha256=btWlXhetvAFnng9IFMi264ZgXur2KRl_7er1GYGFt-8,5033
414
414
  gbdtransformation/brands/uytm/__init__.py,sha256=UHmbQDIPDdApISBKfO9tKOX6LgUQ_Ib-IVMR5kCVMTY,86
415
415
  gbdtransformation/brands/uytm/filters.py,sha256=i7SBMVTF70OERVdsS3Dfv19S3-9kyxE-y4aYA59YxA4,1976
416
416
  gbdtransformation/brands/uytm/schema,sha256=uMd1E_XRVQ_wHVrGq5fqFH6Fyg8cWx2DTQbVvH8tmmA,3730
@@ -457,7 +457,7 @@ gbdtransformation/brands/wstm/tests/test.xml,sha256=YH6ym16Jot43w37Q4zRMktjXhrpd
457
457
  gbdtransformation/brands/xxxx/__init__.py,sha256=fricc3VHm4BwGRFKIIqB0t-NtP3tTVRrEYee_gWpiFo,172
458
458
  gbdtransformation/brands/xxxx/filters.py,sha256=YCaQ6yH2LINwCQvbPHDhnORQyWglbswLlSOY6ur3KXQ,1874
459
459
  gbdtransformation/brands/xxxx/schema,sha256=g_oWkd7k2e5fAQR1BdNkPSsIgP3dkTyc7esWo_UOHQA,163
460
- gbdtransformation/brands/xxxx/template.yml,sha256=iSd8nrMtih3aDEA11m0k67wRS0wcfwlGkEk2H6wCPpc,7799
460
+ gbdtransformation/brands/xxxx/template.yml,sha256=0aNF040tiUwhb-Ujm0OmHNq0do9s_W6RX2cgEtOAOWs,7807
461
461
  gbdtransformation/brands/zmtm/__init__.py,sha256=Mtsi_-CaLQirHkhnletNhJ4li-pZlzEZMcKjv6mEk50,256
462
462
  gbdtransformation/brands/zmtm/filters.py,sha256=FkGfv3nPiYDUy97O7bDzPp824qoDsqX-oh2Ox01NTpA,2344
463
463
  gbdtransformation/brands/zmtm/schema,sha256=TFrF4FR76cytcbtQkDWxtF74I0tCPRDIvWRFeqaJt6Q,3242
@@ -585,9 +585,9 @@ gbdtransformation/utilities/st66.xsd,sha256=co8aFN3a5TpudllRttWmfLeiZu8ulNipfeXm
585
585
  schemas/ShazamConfig.py,sha256=D67os5B11C41h_WZ7kk54Ss0Kk7tHh8W0d_1c_aX-lY,1191
586
586
  schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
587
587
  schemas/schema_extractor.py,sha256=3-ImtnI777f6b3VA0A_w-NoXdlGz5VZMzK6MnPdQQAY,10294
588
- wipo_gbd_transformation-1.1.82.dist-info/LICENSE.md,sha256=6r2dL13EwZqSt2ellLbJRFTA-6ECIDOer4YthCfkac0,35654
589
- wipo_gbd_transformation-1.1.82.dist-info/METADATA,sha256=5G1462Li5V2PhyuAKQfj83fZTzJrHSDvtJgxXOLeIFk,577
590
- wipo_gbd_transformation-1.1.82.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
591
- wipo_gbd_transformation-1.1.82.dist-info/entry_points.txt,sha256=NFLtlP3mPHUi-hEoUcz4CXa7vcpP8bbwd18HS4arbEk,223
592
- wipo_gbd_transformation-1.1.82.dist-info/top_level.txt,sha256=oU1j-JNLga18Fd-EV6Xl9wM8zxYoNVEzb7P8MDhTPJg,26
593
- wipo_gbd_transformation-1.1.82.dist-info/RECORD,,
588
+ wipo_gbd_transformation-1.1.84.dist-info/LICENSE.md,sha256=6r2dL13EwZqSt2ellLbJRFTA-6ECIDOer4YthCfkac0,35654
589
+ wipo_gbd_transformation-1.1.84.dist-info/METADATA,sha256=v0jD6sQSUrdlPctbdJPhaAyCEMHj5yAAVkWY3CwYKjM,577
590
+ wipo_gbd_transformation-1.1.84.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
591
+ wipo_gbd_transformation-1.1.84.dist-info/entry_points.txt,sha256=NFLtlP3mPHUi-hEoUcz4CXa7vcpP8bbwd18HS4arbEk,223
592
+ wipo_gbd_transformation-1.1.84.dist-info/top_level.txt,sha256=oU1j-JNLga18Fd-EV6Xl9wM8zxYoNVEzb7P8MDhTPJg,26
593
+ wipo_gbd_transformation-1.1.84.dist-info/RECORD,,