datamule 1.2.8__py3-none-any.whl → 1.3.0__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.
@@ -10,7 +10,7 @@ issuer_list_d_dict = {
10
10
  'issuer_entityType': 'entityType',
11
11
  'issuer_issuerAddress_street2': 'issuerStreet2',
12
12
  'issuer_entityName': 'entityName',
13
- 'accession': 'accessionNumber',
13
+ 'accession': 'accession',
14
14
  'issuer_edgarPreviousNameList_value': 'edgarPreviousNameListValue',
15
15
  'issuer_entityTypeOtherDesc': 'entityTypeOtherDesc',
16
16
  'issuer_yearOfInc_yetToBeFormed': 'yearOfIncYetToBeFormed',
@@ -26,66 +26,64 @@ metadata_d_dict = {
26
26
  "submissionType" : "submissionType",
27
27
  }
28
28
  offering_data_d_dict = {
29
- 'salesCompensationList_recipient': 'salesCompensationRecipient',
30
- 'useOfProceeds_clarificationOfResponse': 'useOfProceedsClarification',
31
- 'industryGroup_investmentFundInfo_investmentFundType': 'investmentFundType',
32
- 'typeOfFiling_newOrAmendment_isAmendment': 'isAmendment',
33
- 'salesCompensationList_recipient_recipientAddress_stateOrCountryDescription': 'recipientStateOrCountryDescription',
34
- 'signatureBlock_signature_signatureName': 'signatureName',
35
- 'federalExemptionsExclusions_item': 'federalExemptionsItem',
36
- 'salesCommissionsFindersFees_findersFees_isEstimate': 'findersFeesIsEstimate',
37
- 'salesCommissionsFindersFees_salesCommissions_dollarAmount': 'salesCommissionsDollarAmount',
38
- 'salesCompensationList_recipient_recipientName': 'recipientName',
39
- 'salesCommissionsFindersFees_salesCommissions_isEstimate': 'salesCommissionsIsEstimate',
29
+ 'salesCompensationList_recipient_foreignSolicitation': 'foreignSolicitation',
30
+ 'typeOfFiling_dateOfFirstSale_yetToOccur': 'dateOfFirstSaleYetToOccur',
31
+ 'industryGroup_investmentFundInfo_is40Act': 'is40Act',
32
+ 'salesCommissionsFindersFees_findersFees_dollarAmount': 'findersFeesAmount',
40
33
  'offeringSalesAmounts_totalRemaining': 'totalRemaining',
41
- 'salesCommissionsFindersFees_clarificationOfResponse': 'salesCommissionsClarification',
42
- 'salesCompensationList_recipient_statesOfSolicitationList_value': 'recipientStatesOfSolicitationValue',
43
- 'investors_numberNonAccreditedInvestors': 'numberNonAccreditedInvestors',
44
- 'typesOfSecuritiesOffered_isTenantInCommonType': 'isTenantInCommonType',
45
- 'businessCombinationTransaction_isBusinessCombinationTransaction': 'isBusinessCombinationTransaction',
46
- 'typesOfSecuritiesOffered_isSecurityToBeAcquiredType': 'isSecurityToBeAcquiredType',
47
34
  'issuerSize_aggregateNetAssetValueRange': 'aggregateNetAssetValueRange',
48
- 'typesOfSecuritiesOffered_isPooledInvestmentFundType': 'isPooledInvestmentFundType',
49
- 'offeringSalesAmounts_clarificationOfResponse': 'offeringSalesAmountsClarification',
35
+ 'typesOfSecuritiesOffered_isSecurityToBeAcquiredType': 'isSecurityToBeAcquiredType',
36
+ 'salesCompensationList_recipient_recipientAddress_stateOrCountryDescription': 'recipientStateOrCountryDescription',
37
+ 'typesOfSecuritiesOffered_isEquityType': 'isEquityType',
38
+ 'investors_totalNumberAlreadyInvested': 'totalNumberAlreadyInvested',
39
+ 'minimumInvestmentAccepted': 'minimumInvestmentAccepted',
40
+ 'salesCompensationList_recipient_associatedBDName': 'associatedBDName',
41
+ 'salesCompensationList_recipient_statesOfSolicitationList_state': 'statesOfSolicitationState',
42
+ 'businessCombinationTransaction_isBusinessCombinationTransaction': 'isBusinessCombinationTransaction',
43
+ 'useOfProceeds_grossProceedsUsed_isEstimate': 'grossProceedsUsedIsEstimate',
44
+ 'federalExemptionsExclusions_item': 'federalExemptionsExclusionsItem',
45
+ 'useOfProceeds_grossProceedsUsed_dollarAmount': 'grossProceedsUsedAmount',
46
+ 'industryGroup_industryGroupType': 'industryGroupType',
50
47
  'signatureBlock_signature_nameOfSigner': 'nameOfSigner',
51
- 'industryGroup_investmentFundInfo_is40Act': 'is40Act',
52
- 'salesCompensationList_recipient_recipientAddress_city': 'recipientCity',
53
- 'typeOfFiling_dateOfFirstSale_yetToOccur': 'dateOfFirstSaleYetToOccur',
54
- 'signatureBlock_signature': 'signature',
55
- 'salesCompensationList_recipient_foreignSolicitation': 'recipientForeignSolicitation',
56
- 'businessCombinationTransaction_clarificationOfResponse': 'businessCombinationClarification',
57
- 'salesCompensationList_recipient_associatedBDName': 'recipientAssociatedBDName',
58
- 'salesCompensationList_recipient_statesOfSolicitationList_state': 'recipientStatesOfSolicitationState',
59
- 'typeOfFiling_dateOfFirstSale_value': 'dateOfFirstSaleValue',
60
- 'signatureBlock_signature_signatureTitle': 'signatureTitle',
61
- 'signatureBlock_signature_issuerName': 'signatureIssuerName',
62
- 'durationOfOffering_moreThanOneYear': 'durationOfferingMoreThanOneYear',
63
- 'offeringSalesAmounts_totalAmountSold': 'totalAmountSold',
64
48
  'signatureBlock_signature_signatureDate': 'signatureDate',
49
+ 'salesCommissionsFindersFees_salesCommissions_isEstimate': 'salesCommissionsIsEstimate',
50
+ 'typesOfSecuritiesOffered_isOtherType': 'isOtherType',
51
+ 'salesCompensationList_recipient_associatedBDCRDNumber': 'associatedBDCRDNumber',
52
+ 'salesCompensationList_recipient_recipientAddress_stateOrCountry': 'recipientStateOrCountry',
53
+ 'typesOfSecuritiesOffered_descriptionOfOtherType': 'descriptionOfOtherType',
54
+ 'salesCommissionsFindersFees_salesCommissions_dollarAmount': 'salesCommissionsAmount',
55
+ 'useOfProceeds_clarificationOfResponse': 'useOfProceedsClarification',
56
+ 'accession': 'accession',
57
+ 'typesOfSecuritiesOffered_isPooledInvestmentFundType': 'isPooledInvestmentFundType',
58
+ 'salesCompensationList_recipient_statesOfSolicitationList_value': 'statesOfSolicitationValue',
59
+ 'signatureBlock_signature_signatureName': 'signatureName',
60
+ 'typeOfFiling_newOrAmendment_isAmendment': 'isAmendment',
65
61
  'issuerSize_revenueRange': 'revenueRange',
62
+ 'salesCommissionsFindersFees_clarificationOfResponse': 'salesCommissionsFindersFeesClarification',
63
+ 'salesCompensationList_recipient_recipientAddress_zipCode': 'recipientZipCode',
64
+ 'salesCompensationList_recipient_recipientAddress_city': 'recipientCity',
66
65
  'typesOfSecuritiesOffered_isOptionToAcquireType': 'isOptionToAcquireType',
66
+ 'businessCombinationTransaction_clarificationOfResponse': 'businessCombinationClarification',
67
+ 'typesOfSecuritiesOffered_isTenantInCommonType': 'isTenantInCommonType',
68
+ 'salesCompensationList_recipient_statesOfSolicitationList_description': 'statesOfSolicitationDescription',
69
+ 'offeringSalesAmounts_totalOfferingAmount': 'totalOfferingAmount',
70
+ 'investors_numberNonAccreditedInvestors': 'numberNonAccreditedInvestors',
67
71
  'signatureBlock_authorizedRepresentative': 'authorizedRepresentative',
72
+ 'signatureBlock_signature_issuerName': 'issuerName',
68
73
  'salesCompensationList_recipient_recipientAddress_street2': 'recipientStreet2',
69
- 'useOfProceeds_grossProceedsUsed_isEstimate': 'grossProceedsUsedIsEstimate',
70
- 'salesCommissionsFindersFees_findersFees_dollarAmount': 'findersFeesDollarAmount',
71
- 'typesOfSecuritiesOffered_isEquityType': 'isEquityType',
72
- 'typesOfSecuritiesOffered_descriptionOfOtherType': 'descriptionOfOtherType',
74
+ 'typesOfSecuritiesOffered_isDebtType': 'isDebtType',
73
75
  'salesCompensationList_recipient_recipientAddress_street1': 'recipientStreet1',
74
- 'minimumInvestmentAccepted': 'minimumInvestmentAccepted',
75
- 'typesOfSecuritiesOffered_isOtherType': 'isOtherType',
76
+ 'signatureBlock_signature_signatureTitle': 'signatureTitle',
77
+ 'industryGroup_investmentFundInfo_investmentFundType': 'investmentFundType',
78
+ 'salesCommissionsFindersFees_findersFees_isEstimate': 'findersFeesIsEstimate',
79
+ 'typeOfFiling_dateOfFirstSale_value': 'dateOfFirstSaleValue',
80
+ 'offeringSalesAmounts_totalAmountSold': 'totalAmountSold',
81
+ 'offeringSalesAmounts_clarificationOfResponse': 'offeringSalesAmountsClarification',
82
+ 'investors_hasNonAccreditedInvestors': 'hasNonAccreditedInvestors',
76
83
  'salesCompensationList_recipient_recipientCRDNumber': 'recipientCRDNumber',
77
- 'typesOfSecuritiesOffered_isDebtType': 'isDebtType',
78
- 'accession': 'accessionNumber',
79
- 'investors_totalNumberAlreadyInvested': 'totalNumberAlreadyInvested',
80
84
  'typesOfSecuritiesOffered_isMineralPropertyType': 'isMineralPropertyType',
81
- 'industryGroup_industryGroupType': 'industryGroupType',
82
- 'salesCompensationList_recipient_statesOfSolicitationList_description': 'recipientStatesOfSolicitationDescription',
83
- 'salesCompensationList_recipient_associatedBDCRDNumber': 'recipientAssociatedBDCRDNumber',
84
- 'useOfProceeds_grossProceedsUsed_dollarAmount': 'grossProceedsUsedDollarAmount',
85
- 'investors_hasNonAccreditedInvestors': 'hasNonAccreditedInvestors',
86
- 'salesCompensationList_recipient_recipientAddress_zipCode': 'recipientZipCode',
87
- 'offeringSalesAmounts_totalOfferingAmount': 'totalOfferingAmount',
88
- 'salesCompensationList_recipient_recipientAddress_stateOrCountry': 'recipientStateOrCountry'
85
+ 'salesCompensationList_recipient_recipientName': 'recipientName',
86
+ 'durationOfOffering_moreThanOneYear': 'moreThanOneYear'
89
87
  }
90
88
  primary_issuer_d_dict = {
91
89
  'yearOfInc_withinFiveYears': 'yearOfIncWithinFiveYears',
@@ -103,7 +101,7 @@ primary_issuer_d_dict = {
103
101
  'edgarPreviousNameList_value': 'edgarPreviousNameListValue',
104
102
  'issuerAddress_stateOrCountry': 'issuerStateOrCountry',
105
103
  'entityName': 'entityName',
106
- 'accession': 'accessionNumber',
104
+ 'accession': 'accession',
107
105
  'issuerAddress_street2': 'issuerStreet2',
108
106
  'issuerAddress_city': 'issuerCity',
109
107
  'issuerAddress_stateOrCountryDescription': 'issuerStateOrCountryDescription',
@@ -116,7 +114,7 @@ related_persons_d_dict = {
116
114
  'relatedPersonInfo_relatedPersonRelationshipList_relationship': 'relatedPersonRelationship',
117
115
  'relatedPersonInfo_relationshipClarification': 'relationshipClarification',
118
116
  'relatedPersonInfo_relatedPersonName_lastName': 'relatedPersonLastName',
119
- 'accession': 'accessionNumber',
117
+ 'accession': 'accession',
120
118
  'relatedPersonInfo_relatedPersonName_middleName': 'relatedPersonMiddleName',
121
119
  'relatedPersonInfo_relatedPersonAddress_zipCode': 'relatedPersonZipCode',
122
120
  'relatedPersonInfo_relatedPersonAddress_city': 'relatedPersonCity',
@@ -418,8 +418,14 @@ def process_cfportal(data, accession):
418
418
 
419
419
  def process_d(data, accession):
420
420
  tables = []
421
- groups = ['contactData', 'notificationAddressList', 'primaryIssuer', 'issuerList', 'relatedPersonsList', 'offeringData']
422
- for group in groups:
421
+ groups = [('contactData', 'contact_data_d'),
422
+ ('notificationAddressList', 'notification_address_list_d'),
423
+ ('primaryIssuer', 'primary_issuer_d'),
424
+ ('issuerList', 'issuer_list_d'),
425
+ ('relatedPersonsList', 'related_persons_list_d'),
426
+ ('offeringData', 'offering_data_d'),
427
+ ]
428
+ for group,table_type in groups:
423
429
  if group == 'relatedPersonList':
424
430
  group_data = data['edgarSubmission'].pop('relatedPersonInfo', None)
425
431
  data['edgarSubmission'].pop(group, None)
@@ -430,14 +436,16 @@ def process_d(data, accession):
430
436
 
431
437
  if group_data:
432
438
  # Special handling ONLY for relatedPersonsList
433
- if group in ['relatedPersonsList', 'issuerList']:
439
+ if group in ['relatedPersonsList', 'issuerList','offeringData']:
434
440
  # Use the new flatten_dict_to_rows ONLY for this key
435
441
  flattened_rows = flatten_dict_to_rows(group_data)
436
442
  if flattened_rows:
437
- tables.append(Table(flattened_rows, f'{group}_d', accession))
443
+ tables.append(Table(flattened_rows, table_type, accession))
438
444
  else:
439
445
  # Everything else remains EXACTLY the same
440
- tables.append(Table(_flatten_dict(group_data), f'{group}_d', accession))
446
+ tables.append(Table(_flatten_dict(group_data), table_type, accession))
447
+
448
+
441
449
 
442
450
  metadata_table = Table(_flatten_dict(data['edgarSubmission']), 'metadata_d', accession)
443
451
  tables.append(metadata_table)
@@ -203,15 +203,15 @@ class Table():
203
203
  mapping_dict = signature_schedule_13_dict
204
204
 
205
205
  # D
206
- elif self.type == 'issuerList_d':
206
+ elif self.type == 'issuer_list_d':
207
207
  mapping_dict = issuer_list_d_dict
208
208
  elif self.type == 'metadata_d':
209
209
  mapping_dict = metadata_d_dict
210
- elif self.type == 'offeringData_d':
210
+ elif self.type == 'offering_data_d':
211
211
  mapping_dict = offering_data_d_dict
212
- elif self.type == 'primaryIssuer_d':
212
+ elif self.type == 'primary_issuer_d':
213
213
  mapping_dict = primary_issuer_d_dict
214
- elif self.type == 'relatedPersonsList_d':
214
+ elif self.type == 'related_persons_list_d':
215
215
  mapping_dict = related_persons_d_dict
216
216
  # SDR
217
217
  elif self.type == 'sdr':
datamule/helper.py CHANGED
@@ -1,20 +1,32 @@
1
1
  from functools import lru_cache
2
2
  import csv
3
3
  from pathlib import Path
4
+ import os
4
5
 
5
6
  def _load_package_csv(name):
6
- """Load CSV files from ~/.datamule/ directory"""
7
- data_dir = Path.home() / ".datamule"
8
- csv_path = data_dir / f"{name}.csv"
9
-
10
- data = []
11
-
12
- with open(csv_path, 'r') as csvfile:
13
- csv_reader = csv.DictReader(csvfile)
14
- for row in csv_reader:
15
- data.append(row)
7
+ """Load CSV files from package data directory"""
8
+ # First try to load from the package data directory
9
+ try:
10
+ package_dir = os.path.dirname(os.path.dirname(__file__))
11
+ csv_path = os.path.join(package_dir, "data", f"{name}.csv")
12
+
13
+ # Fallback to the legacy location
14
+ if not os.path.exists(csv_path):
15
+ csv_path = Path.home() / ".datamule" / f"{name}.csv"
16
+
17
+ data = []
18
+ with open(csv_path, 'r') as csvfile:
19
+ csv_reader = csv.DictReader(csvfile)
20
+ for row in csv_reader:
21
+ data.append(row)
22
+
23
+ return data
16
24
 
17
- return data
25
+ except FileNotFoundError:
26
+ raise FileNotFoundError(
27
+ f"Required data file '{name}.csv' not found. "
28
+ f"This file should be in the datamule package directory or in ~/.datamule/"
29
+ )
18
30
 
19
31
  def load_package_dataset(dataset):
20
32
  if dataset =='listed_filer_metadata':
@@ -39,8 +51,6 @@ def get_cik_from_dataset(dataset_name, key, value):
39
51
 
40
52
  return result
41
53
 
42
-
43
-
44
54
  @lru_cache(maxsize=128)
45
55
  def get_ciks_from_metadata_filters(**kwargs):
46
56
  """Get CIKs from listed_filer_metadata.csv that match all provided filters."""
@@ -67,46 +77,45 @@ def get_ciks_from_metadata_filters(**kwargs):
67
77
 
68
78
  return list(result_ciks)
69
79
 
70
-
71
80
  def _process_cik_and_metadata_filters(cik=None, ticker=None, **kwargs):
72
- """
73
- Helper method to process CIK, ticker, and metadata filters.
74
- Returns a list of CIKs after processing.
75
- """
76
- # Input validation
77
- if cik is not None and ticker is not None:
78
- raise ValueError("Only one of cik or ticker should be provided, not both.")
81
+ """
82
+ Helper method to process CIK, ticker, and metadata filters.
83
+ Returns a list of CIKs after processing.
84
+ """
85
+ # Input validation
86
+ if cik is not None and ticker is not None:
87
+ raise ValueError("Only one of cik or ticker should be provided, not both.")
88
+
89
+ if 'tickers' in kwargs:
90
+ raise ValueError("Use 'ticker' instead of 'tickers'.")
79
91
 
80
- # Convert ticker to CIK if provided
81
- if ticker is not None:
82
- if isinstance(ticker, str):
83
- ticker = [ticker]
92
+ # Convert ticker to CIK if provided
93
+ if ticker is not None:
94
+ if isinstance(ticker, str):
95
+ ticker = [ticker]
96
+
97
+ cik = []
98
+ for t in ticker:
99
+ ticker_ciks = get_cik_from_dataset('listed_filer_metadata', 'ticker', t)
100
+ if ticker_ciks:
101
+ cik.extend(ticker_ciks)
84
102
 
85
- ciks_from_ticker = []
86
- for t in ticker:
87
- ciks = get_cik_from_dataset('listed_filer_metadata', 'ticker', t)
88
- if ciks:
89
- ciks_from_ticker.extend(ciks)
103
+ # Normalize CIK format
104
+ if cik is not None:
105
+ if isinstance(cik, str):
106
+ cik = [int(cik)]
107
+ elif isinstance(cik, int):
108
+ cik = [cik]
109
+ elif isinstance(cik, list):
110
+ cik = [int(x) for x in cik]
90
111
 
91
- cik = ciks
112
+ # Process metadata filters if provided
113
+ if kwargs:
114
+ metadata_ciks = get_ciks_from_metadata_filters(**kwargs)
92
115
 
93
- # Normalize CIK format
94
116
  if cik is not None:
95
- if isinstance(cik, str):
96
- cik = [int(cik)]
97
- elif isinstance(cik, int):
98
- cik = [cik]
99
- elif isinstance(cik, list):
100
- cik = [int(x) for x in cik]
101
-
102
- # Process metadata filters if provided
103
- if kwargs:
104
- metadata_ciks = get_ciks_from_metadata_filters(**kwargs)
105
-
106
- if cik is not None:
107
- cik = list(set(cik).intersection(metadata_ciks))
108
- else:
109
- cik = metadata_ciks
110
-
111
- return cik
112
-
117
+ cik = list(set(cik).intersection(metadata_ciks))
118
+ else:
119
+ cik = metadata_ciks
120
+
121
+ return cik
@@ -48,7 +48,7 @@ async def poll_rss(limiter):
48
48
 
49
49
  def clean_efts_hits(hits):
50
50
  # clean hits
51
- hits = [{'accession': int(hit['_source']['adsh'].replace('-','')), 'filing_date': hit['_source']['file_date'], 'ciks': hit['_source']['ciks']} for hit in hits]
51
+ hits = [{'accession': int(hit['_source']['adsh'].replace('-','')), 'filing_date': hit['_source']['file_date'], 'ciks': hit['_source']['ciks'], 'submission_type': hit['_source']['file_type']} for hit in hits]
52
52
  return hits
53
53
 
54
54
  class Monitor():
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamule
3
- Version: 1.2.8
4
- Summary: Making it easier to use SEC filings.
3
+ Version: 1.3.0
4
+ Summary: Work with SEC submissions at scale.
5
5
  Home-page: https://github.com/john-friedman/datamule-python
6
6
  Author: John Friedman
7
7
  Requires-Dist: aiohttp
@@ -16,5 +16,4 @@ Requires-Dist: pytz
16
16
  Requires-Dist: zstandard
17
17
  Requires-Dist: doc2dict
18
18
  Requires-Dist: secsgml
19
- Requires-Dist: lxml
20
19
 
@@ -1,19 +1,20 @@
1
1
  datamule/__init__.py,sha256=glzwBeGJEE6-TG7mRule9GH6L59XaIRR9T7ALcdpMus,1067
2
2
  datamule/config.py,sha256=Y--CVv7JcgrjJkMOSLrvm2S8B9ost6RMSkGviP-MKtg,883
3
- datamule/helper.py,sha256=g9Kb1DWbViCoON06PjOkSX5Ucu0uG7zPwhsO2LQ6C1g,3579
3
+ datamule/helper.py,sha256=BB4v73HDd5UWqG212UvSKGTTEW_ugohFPGKAiMboQ3s,4050
4
4
  datamule/index.py,sha256=_7Ox5hyF_7RWdblVFr5rNyv_ARwBP7VY4f703pk9qQ8,2074
5
5
  datamule/package_updater.py,sha256=Z9zaa_y0Z5cknpRn8oPea3gg4kquFHfpfhduKKCZ6NU,958
6
6
  datamule/portfolio.py,sha256=8fiK-vfZM5-NJSvOEsDR2YDb-2njjzFk6l7BiRyrzOM,7168
7
7
  datamule/sheet.py,sha256=TvFqK9eAYuVoJ2uWdAlx5EN6vS9lke-aZf7FqtUiDBc,22304
8
8
  datamule/submission.py,sha256=Yh5nG3ioumhl6z30wJdIEmKjDDNSuo0r2xycZSIaeIg,11035
9
+ datamule/data/listed_filer_metadata.csv,sha256=dT9fQ8AC5P1-Udf_UF0ZkdXJ88jNxJb_tuhi5YYL1rc,2426827
9
10
  datamule/document/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
11
  datamule/document/document.py,sha256=menUFoeWwiY0rJnBkQiqY4NWnO0J17-qs8jFvO_1jiY,9969
11
- datamule/document/processing.py,sha256=eWrLxBXmoCoKyUN1gY57ikl9m0KRdACzahJT9PnWQcA,31668
12
- datamule/document/table.py,sha256=jC2itnolWG9DpCjw0x6Ma5yVJiHvQT3Gd_5yl53L5a4,12939
12
+ datamule/document/processing.py,sha256=jDCEzBFDSQtq7nQxRScIsbALnFcvMPOkNkMUCa7mFxg,31921
13
+ datamule/document/table.py,sha256=73yUJKY82ap32jhLmZeTti-jQ_lyhcJGlGwyxLtgYOg,12944
13
14
  datamule/document/mappings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
15
  datamule/document/mappings/atsn.py,sha256=qkZGNIhyPC3VTTOjQ8-FSCQIhUy4XeSycUGLShxNVCo,17743
15
16
  datamule/document/mappings/cfportal.py,sha256=bR9d6DDY0kJ_HGx_hND2y1PNNkZjemYZ2KdyFAcv760,25257
16
- datamule/document/mappings/d.py,sha256=nRpfxkHIf8wYBMmY84biU1Smci9fF9pFYCG_iUddGtU,7928
17
+ datamule/document/mappings/d.py,sha256=ayRK-bTzelNH6fspp-n3gz6RXOrHVx6IjX-TmisrFe4,7714
17
18
  datamule/document/mappings/ex102_abs.py,sha256=FdGKvteRh_HsYgILF-8o4R6aSsjYwcaLpJxzdru4FTE,3976
18
19
  datamule/document/mappings/ex99a_sdr.py,sha256=PNdj9I0ZhNicPObLelNmjp33EgTwzvukqkBDnwxarE0,19
19
20
  datamule/document/mappings/ex99c_sdr.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,7 +45,7 @@ datamule/sec/infrastructure/submissions_metadata.py,sha256=f1KarzFSryKm0EV8DCDNs
44
45
  datamule/sec/submissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
46
  datamule/sec/submissions/downloader.py,sha256=60wX2Yml1UCuxOtU0xMxqqeyHhrypCmlDQ0jZF-StJo,2665
46
47
  datamule/sec/submissions/eftsquery.py,sha256=mSZon8rlW8dxma7M49ZW5V02Fn-ENOdt9TNO6elBrhE,27983
47
- datamule/sec/submissions/monitor.py,sha256=s6uknn1dF1EemiI3Hl4nEq3txwK7nYl6wmayuUPYpRs,7844
48
+ datamule/sec/submissions/monitor.py,sha256=dZYuVCi_X82eYA8l_9cbnkRjiawz3K4U-FnCAyJcgk4,7892
48
49
  datamule/sec/submissions/streamer.py,sha256=EXyWNCD9N6mZmvm9lFSCFodF19zSQ8jfIbWPZNp0K5Y,11253
49
50
  datamule/sec/submissions/textsearch.py,sha256=zEr3NXdhVFL8eMh2jruVXIt7taUZTMdNy2hOAyRM2pA,5706
50
51
  datamule/sec/xbrl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -56,7 +57,7 @@ datamule/seclibrary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
56
57
  datamule/seclibrary/bq.py,sha256=C8sb_rpXTvchprrFLcbRar4Qi0XWW25tnv1YsHSS5o4,18025
57
58
  datamule/seclibrary/downloader.py,sha256=PIgz_7ASUTZOHcUZGcD1SmLaGSbq7xe7EiJT0Z7HU4M,13653
58
59
  datamule/seclibrary/query.py,sha256=qGuursTERRbOGfoDcYcpo4oWkW3PCBW6x1Qf1Puiak4,7352
59
- datamule-1.2.8.dist-info/METADATA,sha256=mQvixJX2sn9NJbH3LkZ1H3IeRIwHwCgBjgWVVXjOt-Q,490
60
- datamule-1.2.8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
61
- datamule-1.2.8.dist-info/top_level.txt,sha256=iOfgmtSMFVyr7JGl_bYSTDry79JbmsG4p8zKq89ktKk,9
62
- datamule-1.2.8.dist-info/RECORD,,
60
+ datamule-1.3.0.dist-info/METADATA,sha256=ANPyXCixCioGwfTqpxX0BsbnxDe7-LS3NtLWg0WledM,469
61
+ datamule-1.3.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
62
+ datamule-1.3.0.dist-info/top_level.txt,sha256=iOfgmtSMFVyr7JGl_bYSTDry79JbmsG4p8zKq89ktKk,9
63
+ datamule-1.3.0.dist-info/RECORD,,