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

Files changed (27) hide show
  1. gbdtransformation/brands/aptm/__init__.py +15 -0
  2. gbdtransformation/brands/aptm/filters.py +80 -0
  3. gbdtransformation/brands/aptm/schema +87 -0
  4. gbdtransformation/brands/aptm/template.yml +1 -0
  5. gbdtransformation/brands/aptm/tests/__init__.py +0 -0
  6. gbdtransformation/brands/gbtm/filters.py +1 -1
  7. gbdtransformation/brands/gbtm/template.yml +1 -1
  8. gbdtransformation/brands/ipas/filters.py +6 -1
  9. gbdtransformation/brands/oatm/__init__.py +18 -0
  10. gbdtransformation/brands/oatm/filters.py +82 -0
  11. gbdtransformation/brands/oatm/schema +87 -0
  12. gbdtransformation/brands/oatm/template.yml +1 -0
  13. gbdtransformation/brands/oatm/tests/__init__.py +0 -0
  14. gbdtransformation/brands/sttm/__init__.py +5 -3
  15. gbdtransformation/brands/sttm/filters.py +2 -0
  16. gbdtransformation/brands/tttm/__init__.py +17 -0
  17. gbdtransformation/brands/tttm/filters.py +79 -0
  18. gbdtransformation/brands/tttm/schema +87 -0
  19. gbdtransformation/brands/tttm/template.yml +1 -0
  20. gbdtransformation/brands/tttm/tests/__init__.py +0 -0
  21. gbdtransformation/execs.py +1 -1
  22. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/METADATA +1 -1
  23. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/RECORD +27 -12
  24. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/LICENSE.md +0 -0
  25. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/WHEEL +0 -0
  26. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/entry_points.txt +0 -0
  27. {wipo_gbd_transformation-1.1.37.dist-info → wipo_gbd_transformation-1.1.39.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,15 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # TN/M/100/901864 # madrid
5
+ # TN/E/2002/001864 # etrangere
6
+ # TN/T/2019/001877 # local
7
+ # TN/S/2005/001886
8
+ appnum_mask = ['AP/(T|E|S|M)/\\d{4}/(\\d*)']
9
+
10
+ # 100/901864
11
+ # 2009/002484
12
+ # 001818
13
+ regnum_mask = [ '\\d*/(\\d*)',
14
+ '(\\d*)' ]
15
+
@@ -0,0 +1,80 @@
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 appnum.split('/')[-2].zfill(4)
10
+
11
+
12
+ def translate_type(header):
13
+ code = header.TransactionCode
14
+ if code == 'Trademark List': return 'TRADEMARK'
15
+ if code == 'Madrid Marks': return 'TRADEMARK'
16
+
17
+
18
+ raise Exception('Type "%s" is not mapped.' % code)
19
+
20
+ def translate_kind(trademark, header):
21
+ subcode = header.TransactionSubCode
22
+
23
+ if subcode == 'Trademark List': return ['Individual']
24
+ if subcode == 'Madrid Protocol': return ['Individual']
25
+
26
+
27
+ raise Exception('Kind "%s" not mapped.' % subcode)
28
+
29
+ def translate_status(trademark):
30
+ status = trademark.MarkCurrentStatusCode
31
+
32
+ return ipas.translate_status(status)
33
+
34
+ def translate_feature(trademark):
35
+ feature = trademark.MarkFeature
36
+
37
+ if not feature: return 'Undefined'
38
+
39
+ return ipas.translate_feature(feature)
40
+
41
+ def translate_event(event):
42
+ if ' ' in event:
43
+ event = event.split()[1].capitalize()
44
+ return ipas.translate_event(event)
45
+
46
+ # ---------------------------------------
47
+ # TODO: separate values like
48
+ # {'fr': ['PICO BELLO بيكوبالو']}
49
+ def verbal_lang_map(markVerbalElements, applang=None):
50
+ # print( ipas.verbal_lang_map(markVerbalElements, applang=applang))
51
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
52
+
53
+ def get_registration_nb(trademark, tmstatus):
54
+ if trademark.RegistrationNumber:
55
+ return trademark.RegistrationNumber
56
+
57
+ if not tmstatus in ['Expired', 'Registered']:
58
+ return None
59
+
60
+ # a way to deduce the registration number
61
+ appnum_parts = trademark.ApplicationNumber.split('/')
62
+ regnum = '%s/%s' % (appnum_parts[-2], appnum_parts[-1])
63
+ return regnum
64
+
65
+ def get_expiry_date(trademark, tmstatus):
66
+ return ipas.get_expiry_date(trademark, tmstatus)
67
+
68
+ def get_registration_date(trademark, tmstatus):
69
+ return ipas.get_registration_date(trademark, tmstatus)
70
+
71
+ def is_international(header):
72
+ code = header.TransactionCode
73
+ return code == 'Marque Madrid'
74
+
75
+ # TN/M/100/673426
76
+ def get_ir_refnum(appnum):
77
+ return appnum.split('/')[-1]
78
+
79
+ def get_goods_services(goods_services):
80
+ return ipas.get_goods_services(goods_services)
@@ -0,0 +1,87 @@
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
+ __________________/PublicationIdentifier
67
+ ______________/RegistrationDate
68
+ ______________/RegistrationNumber
69
+ ______________/RegistrationOfficeCode
70
+ ______________/RepresentativeDetails
71
+ ________________/Representative
72
+ __________________/RepresentativeAddressBook
73
+ ____________________/FormattedNameAddress
74
+ ______________________/Address
75
+ ________________________/AddressCountryCode
76
+ ________________________/FreeFormatAddress
77
+ __________________________/FreeFormatAddressLine
78
+ ______________________/Name
79
+ ________________________/FreeFormatName
80
+ __________________________/FreeFormatNameDetails
81
+ ____________________________/FreeFormatNameLine
82
+ ____________________________/FreeFormatNameLine[@languageCode=en]
83
+ ______________/WordMarkSpecification
84
+ ________________/MarkVerbalElementText
85
+ ________________/MarkVerbalElementText[@languageCode=en]
86
+ ______/TransactionIdentifier
87
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
File without changes
@@ -18,7 +18,7 @@ def convertdateGB(date):
18
18
  if not date:
19
19
  return None
20
20
  output_format = "%Y-%m-%d"
21
- for input_format in ['%Y-%m-%dT%H:%M:%S.000+01:00', '%Y-%m-%dZ', '%Y-%m-%dT%H:%M:%S.000Z']:
21
+ for input_format in ['%Y-%m-%dT%H:%M:%S.000+01:00', '%Y-%m-%dZ', '%Y-%m-%dT%H:%M:%S.000Z', "%Y%m%d"]:
22
22
  try:
23
23
  return datetime.strptime(date, input_format).strftime(output_format)
24
24
  except ValueError:
@@ -17,7 +17,7 @@ registrationNumber: {{ TradeMark.RegistrationNumber}}
17
17
  registrationDate: {{ TradeMark.RegistrationDate | convertdateGB }}
18
18
  applicationLanguageCode: 'en'
19
19
  officeStatus: {{ TradeMark.IPOPublicMarkCurrentStatusCode | multipleFileds(TradeMark.MarkCurrentStatusCode) }}
20
- statusDate: {{ TradeMark.MarkCurrentStatusDate | convertdate('%Y-%m-%d') }}
20
+ statusDate: {{ TradeMark.MarkCurrentStatusDate | convertdateGB }}
21
21
  expiryDate: {{ TradeMark.ExpiryDate | convertdateGB }}
22
22
  {% if status == 'Ended' %}
23
23
  terminationDate: {{ TradeMark.MarkCurrentStatusDate }}
@@ -26,7 +26,6 @@ def translate_event(event):
26
26
  return event.capitalize()
27
27
 
28
28
  if event.lower() == 'active': return 'Registered'
29
-
30
29
  # raise Exception('Event "%s" not mapped.' % event)
31
30
  return 'Unknown'
32
31
 
@@ -59,15 +58,20 @@ def translate_status(status):
59
58
  if status == 'published': return 'Pending'
60
59
  if status == 'examined': return 'Pending'
61
60
  if status == 'filed': return 'Pending'
61
+ if status == 'application filed': return 'Pending'
62
62
  if status == 'converted': return 'Pending'
63
63
  if status == 'opposed': return 'Pending'
64
+ if status == 'application opposed': return 'Pending'
64
65
  if status == 'pending': return 'Pending'
65
66
  if status == 'appealed': return 'Pending'
66
67
  if status == 'awaiting court action': return 'Pending'
67
68
  if status == 'application published': return 'Pending'
68
69
  if status == 'abandoned': return 'Ended'
69
70
  if status == 'withdrawn': return 'Ended'
71
+ if status == 'registration surrendered': return 'Ended'
72
+ if status == 'application withdrawn': return 'Ended'
70
73
  if status == 'rejected': return 'Ended'
74
+ if status == 'application refused': return 'Ended'
71
75
  if status == 'finalrefusal': return 'Ended'
72
76
  if status == 'suspended': return 'Ended'
73
77
  if status == 'invalidated': return 'Ended'
@@ -76,6 +80,7 @@ def translate_status(status):
76
80
  if status == 'renewed': return 'Registered'
77
81
  if status == 'renewalprocess': return 'Registered'
78
82
  if status == 'canceled': return 'Ended'
83
+ if status == 'registration cancelled': return 'Ended'
79
84
  if status == 'cancelled': return 'Ended'
80
85
 
81
86
  return 'Unknown'
@@ -0,0 +1,18 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # TN/M/100/901864 # madrid
5
+ # TN/E/2002/001864 # etrangere
6
+ # TN/T/2019/001877 # local
7
+ # TN/S/2005/001886
8
+ appnum_mask = ['MD/\\d{1}/\\d{4}/(\\d*)',
9
+ 'OA/\\d{1}/\\d{4}/(\\d*)',
10
+ '(A|B)/\\d{1}/\\d{4}/(\\d*)',
11
+ ]
12
+
13
+ # 100/901864
14
+ # 2009/002484
15
+ # 001818
16
+ regnum_mask = [ '\\d*/(\\d*)',
17
+ '(\\d*)' ]
18
+
@@ -0,0 +1,82 @@
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 appnum.split('/')[-2].zfill(4)
10
+
11
+
12
+ def translate_type(header):
13
+ code = header.TransactionCode
14
+ if code == 'MD Marque internationale': return 'TRADEMARK'
15
+ if code == 'MR Marque régionale': return 'TRADEMARK'
16
+
17
+
18
+ raise Exception('Type "%s" is not mapped.' % code)
19
+
20
+ def translate_kind(trademark, header):
21
+ subcode = header.TransactionSubCode
22
+
23
+ if subcode == 'MR Marque de services': return ['Individual']
24
+ if subcode == 'MR Marque de produits': return ['Individual']
25
+ if subcode == 'MR Marque collective': return ['Collective']
26
+ if subcode == 'MD Marque protocole Madrid': return ['Individual']
27
+ if subcode == 'MR-BG2015 Marque régionale': return ['Individual']
28
+
29
+ raise Exception('Kind "%s" not mapped.' % subcode)
30
+
31
+ def translate_status(trademark):
32
+ status = trademark.MarkCurrentStatusCode
33
+
34
+ return ipas.translate_status(status)
35
+
36
+ def translate_feature(trademark):
37
+ feature = trademark.MarkFeature
38
+
39
+ if not feature: return 'Undefined'
40
+
41
+ return ipas.translate_feature(feature)
42
+
43
+ def translate_event(event):
44
+ if ' ' in event:
45
+ event = event.split()[1].capitalize()
46
+ return ipas.translate_event(event)
47
+
48
+ # ---------------------------------------
49
+ # TODO: separate values like
50
+ # {'fr': ['PICO BELLO بيكوبالو']}
51
+ def verbal_lang_map(markVerbalElements, applang=None):
52
+ # print( ipas.verbal_lang_map(markVerbalElements, applang=applang))
53
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
54
+
55
+ def get_registration_nb(trademark, tmstatus):
56
+ if trademark.RegistrationNumber:
57
+ return trademark.RegistrationNumber
58
+
59
+ if not tmstatus in ['Expired', 'Registered']:
60
+ return None
61
+
62
+ # a way to deduce the registration number
63
+ appnum_parts = trademark.ApplicationNumber.split('/')
64
+ regnum = '%s/%s' % (appnum_parts[-2], appnum_parts[-1])
65
+ return regnum
66
+
67
+ def get_expiry_date(trademark, tmstatus):
68
+ return ipas.get_expiry_date(trademark, tmstatus)
69
+
70
+ def get_registration_date(trademark, tmstatus):
71
+ return ipas.get_registration_date(trademark, tmstatus)
72
+
73
+ def is_international(header):
74
+ code = header.TransactionCode
75
+ return code == 'Marque Madrid'
76
+
77
+ # TN/M/100/673426
78
+ def get_ir_refnum(appnum):
79
+ return appnum.split('/')[-1]
80
+
81
+ def get_goods_services(goods_services):
82
+ return ipas.get_goods_services(goods_services)
@@ -0,0 +1,87 @@
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
+ __________________/PublicationIdentifier
67
+ ______________/RegistrationDate
68
+ ______________/RegistrationNumber
69
+ ______________/RegistrationOfficeCode
70
+ ______________/RepresentativeDetails
71
+ ________________/Representative
72
+ __________________/RepresentativeAddressBook
73
+ ____________________/FormattedNameAddress
74
+ ______________________/Address
75
+ ________________________/AddressCountryCode
76
+ ________________________/FreeFormatAddress
77
+ __________________________/FreeFormatAddressLine
78
+ ______________________/Name
79
+ ________________________/FreeFormatName
80
+ __________________________/FreeFormatNameDetails
81
+ ____________________________/FreeFormatNameLine
82
+ ____________________________/FreeFormatNameLine[@languageCode=en]
83
+ ______________/WordMarkSpecification
84
+ ________________/MarkVerbalElementText
85
+ ________________/MarkVerbalElementText[@languageCode=en]
86
+ ______/TransactionIdentifier
87
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
File without changes
@@ -5,9 +5,11 @@ source = 'national'
5
5
  # TN/E/2002/001864 # etrangere
6
6
  # TN/T/2019/001877 # local
7
7
  # TN/S/2005/001886
8
- appnum_mask = [ 'TN/(T|E|S|M)/\\d{4}/(\\d*)',
9
- 'TN/(M)/100/(\\d*)',
10
- '([A-D])/(M)/100/(\\d*)' ]
8
+ appnum_mask = [ 'MD/(T|E|S|M)/\\d*/(\\d*)',
9
+ 'ST/\\d{1}/\\d*/(\\d*)',
10
+ '([A-Z])/T/\\d{1}/(\\d*)',
11
+ 'AP/\\d{1}/(\\d{4})/(\\d*)'
12
+ ]
11
13
 
12
14
  # 100/901864
13
15
  # 2009/002484
@@ -13,12 +13,14 @@ def translate_type(header):
13
13
  code = header.TransactionCode
14
14
 
15
15
  if code == 'Madrid Trademark': return 'TRADEMARK'
16
+ if code == 'MNA Marcas nacionais': return 'TRADEMARK'
16
17
 
17
18
  raise Exception('Type "%s" is not mapped.' % code)
18
19
 
19
20
  def translate_kind(trademark, header):
20
21
  subcode = header.TransactionSubCode
21
22
  if subcode == 'Madrid Protocol': return ['Individual']
23
+ if subcode == 'MNA Industrial e Comercial': return ['Individual']
22
24
 
23
25
  raise Exception('Kind "%s" not mapped.' % subcode)
24
26
 
@@ -0,0 +1,17 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # TN/M/100/901864 # madrid
5
+ # TN/E/2002/001864 # etrangere
6
+ # TN/T/2019/001877 # local
7
+ # TN/S/2005/001886
8
+ appnum_mask = ['TT/(T|E|S|M)/\\d*/(\\d*)',
9
+ '(N|A|B|C|D|I)/(T|E|S|M|I)/\\d*/(\\d*)',
10
+ 'MD/I/\\d*/(\\d*)']
11
+
12
+ # 100/901864
13
+ # 2009/002484
14
+ # 001818
15
+ regnum_mask = [ '\\d*/(\\d*)',
16
+ '(\\d*)' ]
17
+
@@ -0,0 +1,79 @@
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 appnum.split('/')[-2].zfill(4)
10
+
11
+
12
+ def translate_type(header):
13
+ code = header.TransactionCode
14
+ if code == 'Mark appl.': return 'TRADEMARK'
15
+ if code == 'Madrid Marks': return 'TRADEMARK'
16
+
17
+
18
+ raise Exception('Type "%s" is not mapped.' % code)
19
+
20
+ def translate_kind(trademark, header):
21
+ subcode = header.TransactionSubCode
22
+
23
+ if subcode == 'Trademark': return ['Individual']
24
+ if subcode == 'Trademark Part B': return ['Individual']
25
+ if subcode == 'Madrid Protocol': return ['Individual']
26
+
27
+
28
+ raise Exception('Kind "%s" not mapped.' % subcode)
29
+
30
+ def translate_status(trademark):
31
+ status = trademark.MarkCurrentStatusCode
32
+
33
+ return ipas.translate_status(status)
34
+
35
+ def translate_feature(trademark):
36
+ feature = trademark.MarkFeature
37
+
38
+ if not feature: return 'Undefined'
39
+
40
+ return ipas.translate_feature(feature)
41
+
42
+ def translate_event(event):
43
+ return ipas.translate_event(event)
44
+
45
+ # ---------------------------------------
46
+ # TODO: separate values like
47
+ # {'fr': ['PICO BELLO بيكوبالو']}
48
+ def verbal_lang_map(markVerbalElements, applang=None):
49
+ # print( ipas.verbal_lang_map(markVerbalElements, applang=applang))
50
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
51
+
52
+ def get_registration_nb(trademark, tmstatus):
53
+ if trademark.RegistrationNumber:
54
+ return trademark.RegistrationNumber
55
+
56
+ if not tmstatus in ['Expired', 'Registered']:
57
+ return None
58
+
59
+ # a way to deduce the registration number
60
+ appnum_parts = trademark.ApplicationNumber.split('/')
61
+ regnum = '%s/%s' % (appnum_parts[-2], appnum_parts[-1])
62
+ return regnum
63
+
64
+ def get_expiry_date(trademark, tmstatus):
65
+ return ipas.get_expiry_date(trademark, tmstatus)
66
+
67
+ def get_registration_date(trademark, tmstatus):
68
+ return ipas.get_registration_date(trademark, tmstatus)
69
+
70
+ def is_international(header):
71
+ code = header.TransactionCode
72
+ return code == 'Marque Madrid'
73
+
74
+ # TN/M/100/673426
75
+ def get_ir_refnum(appnum):
76
+ return appnum.split('/')[-1]
77
+
78
+ def get_goods_services(goods_services):
79
+ return ipas.get_goods_services(goods_services)
@@ -0,0 +1,87 @@
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
+ __________________/PublicationIdentifier
67
+ ______________/RegistrationDate
68
+ ______________/RegistrationNumber
69
+ ______________/RegistrationOfficeCode
70
+ ______________/RepresentativeDetails
71
+ ________________/Representative
72
+ __________________/RepresentativeAddressBook
73
+ ____________________/FormattedNameAddress
74
+ ______________________/Address
75
+ ________________________/AddressCountryCode
76
+ ________________________/FreeFormatAddress
77
+ __________________________/FreeFormatAddressLine
78
+ ______________________/Name
79
+ ________________________/FreeFormatName
80
+ __________________________/FreeFormatNameDetails
81
+ ____________________________/FreeFormatNameLine
82
+ ____________________________/FreeFormatNameLine[@languageCode=en]
83
+ ______________/WordMarkSpecification
84
+ ________________/MarkVerbalElementText
85
+ ________________/MarkVerbalElementText[@languageCode=en]
86
+ ______/TransactionIdentifier
87
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
File without changes
@@ -514,7 +514,7 @@ def run():
514
514
  buffer = []
515
515
  for root, dirs, files in os.walk(root_path):
516
516
  for f in files:
517
- if f.endswith('.xml.gz'): # or f.endswith('.xml'):
517
+ if f.endswith('.xml.gz') or f.endswith('.xml'):
518
518
  buffer.append(os.path.join(root_path, root, f))
519
519
  if len(buffer) == nb:
520
520
  return buffer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wipo-gbd-transformation
3
- Version: 1.1.37
3
+ Version: 1.1.39
4
4
  Summary: GBD XML ETL package
5
5
  Home-page: https://github.com/GBD-Wipo/xmlE
6
6
  Author: WIPO GDB team
@@ -1,6 +1,6 @@
1
1
  gbdtransformation/.DS_Store,sha256=0P5iuLZ7zgY5l38MNfo5m8w3yfR_rIdKFFFjvnF0ws4,6148
2
2
  gbdtransformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- gbdtransformation/execs.py,sha256=fyviq3kFk4SwhTloLU2dJVA_qVUpPol-x4ZKg2kZRrI,23513
3
+ gbdtransformation/execs.py,sha256=c36fHKA61mZ5bIiwvQMenuYHF2mJnqjNGMJtVLXKA5M,23510
4
4
  gbdtransformation/parser.py,sha256=m6b1J0kJEaEDc0I8HKxzzN2nsQWKFfLlQqS3nT02kb4,7074
5
5
  gbdtransformation/renders.py,sha256=RmvQgugnG2ErvDxP4I9yovW67gEZNpOd59nrzEYfQPI,4555
6
6
  gbdtransformation/brands/__init__.py,sha256=abDdinNkilR-qYg4dhVxP_e1-ZixCzVuHGxbFt710TE,1605
@@ -16,6 +16,11 @@ gbdtransformation/brands/altm/schema,sha256=UFy6y1WnVcb1OqPXCxD7CpkABAfOjF6Uwwdk
16
16
  gbdtransformation/brands/altm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
17
17
  gbdtransformation/brands/altm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  gbdtransformation/brands/altm/tests/altm.xml,sha256=ReEY9m7_VYFY1hhSI1sFFkb4E2T_sPVFSEtU5o6qBRM,4396
19
+ gbdtransformation/brands/aptm/__init__.py,sha256=nZe2TdzOrGfwUmSYrcrNL5qINthihQQHii16u04sWag,282
20
+ gbdtransformation/brands/aptm/filters.py,sha256=lauFdrfz8wtzs6gHqWhNmE3z0o7s5j9raM1wH7DxBnQ,2376
21
+ gbdtransformation/brands/aptm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
22
+ gbdtransformation/brands/aptm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
23
+ gbdtransformation/brands/aptm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
24
  gbdtransformation/brands/attm/__init__.py,sha256=_4Pwyp0Q0_aVKGzham3fR-kwz0VEMNulwRV6cxCleo8,183
20
25
  gbdtransformation/brands/attm/filters.py,sha256=iQSq5YvrbCGzsBXQVgOaX5q7cxAeiqooTcKDsfQ5xyQ,2132
21
26
  gbdtransformation/brands/attm/schema,sha256=qVTJ_da77BzoqVIbkQgKJFlzU_BeAs6K6OyJX0u_9pc,788
@@ -111,9 +116,9 @@ gbdtransformation/brands/frtm/filters.py,sha256=Umf_QBzgTXbT5CkTXwPvfx-WIVDkThTX
111
116
  gbdtransformation/brands/frtm/schema,sha256=j-VU6tu7B0vecH0bL5PATK_1iHuHgJ34w3Bk82PviKc,8885
112
117
  gbdtransformation/brands/frtm/template.yml,sha256=Uc02stDUwfQJn-HrBeY2Ji7qNysehBzN3NPBdNpzftY,7826
113
118
  gbdtransformation/brands/gbtm/__init__.py,sha256=UHmbQDIPDdApISBKfO9tKOX6LgUQ_Ib-IVMR5kCVMTY,86
114
- gbdtransformation/brands/gbtm/filters.py,sha256=L4aJu12uDIeXAXeVjiW0AJ6z01pGNN9uqWy3dKxXp88,4317
119
+ gbdtransformation/brands/gbtm/filters.py,sha256=IBajcCJJutucKLPDrOgft6mZhwepeacEr-jQJiuW3yQ,4327
115
120
  gbdtransformation/brands/gbtm/schema,sha256=fwTT16clc_vF6eckSyyXhfDkCxbN4MMAhLOjlyRjfZ0,9395
116
- gbdtransformation/brands/gbtm/template.yml,sha256=zMAD3FwmjtXyB-wJz4O2BqIJPwVoFeSf5zaugdihleg,6679
121
+ gbdtransformation/brands/gbtm/template.yml,sha256=i2R0rGxMVjwFxFNSRh5e-uPsl0V4QhREhOlhzEEL83Y,6669
117
122
  gbdtransformation/brands/getm/__init__.py,sha256=UHmbQDIPDdApISBKfO9tKOX6LgUQ_Ib-IVMR5kCVMTY,86
118
123
  gbdtransformation/brands/getm/filters.py,sha256=9nJtX8WO83KcxePdDr_eVNXL2iBLMCNJ2YNKNqMte-k,2136
119
124
  gbdtransformation/brands/getm/schema,sha256=jLZa_r9emAhmOMOODUicsgLbzX2vhbWb9MdxR2S6i-Q,7665
@@ -157,7 +162,7 @@ gbdtransformation/brands/intm/filters.py,sha256=uIwop7-MBhWgIU4WzGAH4jjzVUu8Y1Fq
157
162
  gbdtransformation/brands/intm/schema,sha256=FD9pdh6E4XKAHuHM2xUlKpOs9jGU-JdvhZowPi9YJOg,4546
158
163
  gbdtransformation/brands/intm/template.yml,sha256=dbNgDgiDjzHz1kXObb0_J_ZIDcTE7z_J6T9wlZGUmzs,5427
159
164
  gbdtransformation/brands/ipas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
- gbdtransformation/brands/ipas/filters.py,sha256=tByRtM6IZhMJ2IuOBr4cdmHhrhpxRh6X8EBNxNTtaCg,6220
165
+ gbdtransformation/brands/ipas/filters.py,sha256=cjHa9yciQfUWC2XehqcluwLODbajU8yZvleATpKI6-4,6561
161
166
  gbdtransformation/brands/ipas/template.yml,sha256=TMD1OLKdxGN9XLc6gjTIArM0bXjT0hwQbam4PTvxAzE,7402
162
167
  gbdtransformation/brands/istm/__init__.py,sha256=Odl0eAIHwvFrNHxJCqM-9Yht1kcLcXJSZDpJbSLXeq0,192
163
168
  gbdtransformation/brands/istm/filters.py,sha256=t5FgtEkD3mcxQgiNzXWlHSl0LikxNX0x1Cuz2V0_99Y,2145
@@ -274,6 +279,11 @@ gbdtransformation/brands/nztm/__init__.py,sha256=UHmbQDIPDdApISBKfO9tKOX6LgUQ_Ib
274
279
  gbdtransformation/brands/nztm/filters.py,sha256=dAjrg03Yq37H10oAM8rnAMNa71lZHuG1uMwHi25kIvA,4211
275
280
  gbdtransformation/brands/nztm/schema,sha256=tpcyNMtmiBQQ0FsxKKTASRSo4nbrw0j0_b1nhELyAzE,6355
276
281
  gbdtransformation/brands/nztm/template.yml,sha256=IFvjecHfTb1Q96OsqKly-GgKwdJJgnjbp-MhmtYagus,6053
282
+ gbdtransformation/brands/oatm/__init__.py,sha256=tOEPGuYzJlW0wEgqucA6xs-CsaXYygFefmw9hBq-LuI,384
283
+ gbdtransformation/brands/oatm/filters.py,sha256=tZv4Li0kKBjr5xF1r-ltNqTk6et0sM6QYJaXX3v8fiQ,2613
284
+ gbdtransformation/brands/oatm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
285
+ gbdtransformation/brands/oatm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
286
+ gbdtransformation/brands/oatm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
287
  gbdtransformation/brands/omtm/__init__.py,sha256=TaAW7tjZr5whmeL-yXHVy93hiy8_Wf3sXy0LG-wKiK4,128
278
288
  gbdtransformation/brands/omtm/filters.py,sha256=drnIHzkYZ498DclgFrI5Urq5eyHcRi54xYUFAhiHDvM,1632
279
289
  gbdtransformation/brands/omtm/schema,sha256=TFrF4FR76cytcbtQkDWxtF74I0tCPRDIvWRFeqaJt6Q,3242
@@ -328,8 +338,8 @@ gbdtransformation/brands/solrjtm/template.yml,sha256=BsQ6kF6zL75-jiQf_oyd9-tK_nI
328
338
  gbdtransformation/brands/st66tm/__init__.py,sha256=eo-VOjP-c_LVVX1MdULyED0rgL4XiK5JvliI48B6m94,15
329
339
  gbdtransformation/brands/st66tm/filters.py,sha256=Q6l2f7sZZF4m5q7W-wtmDpuvL9qrJZUByG_-GDR8woo,1129
330
340
  gbdtransformation/brands/st66tm/st66tm.tmpl,sha256=6ZgyUYNWBfTwzQMl8V937eXYOncLFD79Pn3I8axzXbA,10696
331
- gbdtransformation/brands/sttm/__init__.py,sha256=Eavq2ionAAwwN-6nOyIebauQeae6eqku0y-RiBQyed4,362
332
- gbdtransformation/brands/sttm/filters.py,sha256=qjlZsAMc77Fe6ZzxCMrhhHQ98zFrDSJtZfHRLhyCfTA,2090
341
+ gbdtransformation/brands/sttm/__init__.py,sha256=A2xBl2w3GgsMz0AYqZQOGcKcXVBvUK0LzcvNMv8cnNA,426
342
+ gbdtransformation/brands/sttm/filters.py,sha256=qwRGreY_n6vgQxjH5whv_nixEWWkrpX4vuvgo4xHMZ0,2218
333
343
  gbdtransformation/brands/sttm/schema,sha256=Ak4UCFjcrPTlewCGqUEkXTBMGJ7x8jJo24hWzS3E9wE,3078
334
344
  gbdtransformation/brands/sttm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
335
345
  gbdtransformation/brands/sttm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -357,6 +367,11 @@ gbdtransformation/brands/totm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
357
367
  gbdtransformation/brands/totm/tests/nofeature.xml,sha256=5UEVp1GiR1YaOV2xSBkJoQXEHB6ZgyeixGwOmQ65kRY,5224
358
368
  gbdtransformation/brands/totm/tests/syntax.xml,sha256=GdS-t8aRxUAgBARLNyrnKFdCe9SaG-k2H2SiZSn61GU,17369
359
369
  gbdtransformation/brands/totm/tests/test.xml.gz,sha256=t3u3Pb2I_vgHU9AZJhw_FTOqoVglBLUcrL3S8HgbRsk,857
370
+ gbdtransformation/brands/tttm/__init__.py,sha256=3-V9gaMDhZfDdvqWDt9vk-40QW11CS_EpkqZoqyDdlQ,371
371
+ gbdtransformation/brands/tttm/filters.py,sha256=EqevyyqzjNkEesSJ-pcE7iMW2vqLzvtv_mZmNtbFIDk,2360
372
+ gbdtransformation/brands/tttm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
373
+ gbdtransformation/brands/tttm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
374
+ gbdtransformation/brands/tttm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
375
  gbdtransformation/brands/uatm/__init__.py,sha256=CLZvaGREoJUDCyrrMWlsyBs1Fe6lJHPBUK--xmV60FI,430
361
376
  gbdtransformation/brands/uatm/filters.py,sha256=Er8L7T5If-2s_oDZIhgIpUKBTHR9gN1ZVlG_csLmrT4,2202
362
377
  gbdtransformation/brands/uatm/schema,sha256=xyi3dhfyhzwFzeNA4vl5CZ_3FGNm6kcePHQt4Nd_qWM,4318
@@ -469,9 +484,9 @@ gbdtransformation/utilities/st66.xsd,sha256=co8aFN3a5TpudllRttWmfLeiZu8ulNipfeXm
469
484
  schemas/ShazamConfig.py,sha256=D67os5B11C41h_WZ7kk54Ss0Kk7tHh8W0d_1c_aX-lY,1191
470
485
  schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
471
486
  schemas/schema_extractor.py,sha256=3-ImtnI777f6b3VA0A_w-NoXdlGz5VZMzK6MnPdQQAY,10294
472
- wipo_gbd_transformation-1.1.37.dist-info/LICENSE.md,sha256=6r2dL13EwZqSt2ellLbJRFTA-6ECIDOer4YthCfkac0,35654
473
- wipo_gbd_transformation-1.1.37.dist-info/METADATA,sha256=sJ1XCvIHNF54o3IGVSBvCw3Yr5S93dm-1o6URAc5GDs,485
474
- wipo_gbd_transformation-1.1.37.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
475
- wipo_gbd_transformation-1.1.37.dist-info/entry_points.txt,sha256=CiiRxivMelcgA7W_4rzY1fG-AGEarhpXQUlKYzKWsOI,165
476
- wipo_gbd_transformation-1.1.37.dist-info/top_level.txt,sha256=oU1j-JNLga18Fd-EV6Xl9wM8zxYoNVEzb7P8MDhTPJg,26
477
- wipo_gbd_transformation-1.1.37.dist-info/RECORD,,
487
+ wipo_gbd_transformation-1.1.39.dist-info/LICENSE.md,sha256=6r2dL13EwZqSt2ellLbJRFTA-6ECIDOer4YthCfkac0,35654
488
+ wipo_gbd_transformation-1.1.39.dist-info/METADATA,sha256=lKfMZ4EYWOF_TEoIq7SLLdzrvudDpKhNnjyyScaj_aE,485
489
+ wipo_gbd_transformation-1.1.39.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
490
+ wipo_gbd_transformation-1.1.39.dist-info/entry_points.txt,sha256=CiiRxivMelcgA7W_4rzY1fG-AGEarhpXQUlKYzKWsOI,165
491
+ wipo_gbd_transformation-1.1.39.dist-info/top_level.txt,sha256=oU1j-JNLga18Fd-EV6Xl9wM8zxYoNVEzb7P8MDhTPJg,26
492
+ wipo_gbd_transformation-1.1.39.dist-info/RECORD,,