datamule 1.2.2__py3-none-any.whl → 1.2.9__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 (42) hide show
  1. datamule/__init__.py +1 -0
  2. datamule/document/document.py +27 -14
  3. datamule/document/mappings/atsn.py +208 -0
  4. datamule/document/mappings/cfportal.py +346 -0
  5. datamule/document/mappings/d.py +125 -0
  6. datamule/document/mappings/ex102_abs.py +63 -0
  7. datamule/document/mappings/ex99a_sdr.py +1 -0
  8. datamule/document/mappings/ex99c_sdr.py +0 -0
  9. datamule/document/mappings/ex99g_sdr.py +0 -0
  10. datamule/document/mappings/ex99i_sdr.py +0 -0
  11. datamule/document/mappings/information_table.py +35 -0
  12. datamule/document/mappings/nmfp.py +275 -0
  13. datamule/document/mappings/npx.py +85 -0
  14. datamule/document/mappings/onefourtyfour.py +68 -0
  15. datamule/document/mappings/ownership.py +163 -0
  16. datamule/document/mappings/proxy_voting_record.py +17 -0
  17. datamule/document/mappings/sbs.py +0 -0
  18. datamule/document/mappings/sbsef.py +13 -0
  19. datamule/document/mappings/schedule13.py +117 -0
  20. datamule/document/mappings/sdr.py +63 -0
  21. datamule/document/mappings/submission_metadata.py +9 -0
  22. datamule/document/mappings/ta.py +0 -0
  23. datamule/document/mappings/thirteenfhr.py +72 -0
  24. datamule/document/mappings/twentyfivense.py +22 -0
  25. datamule/document/mappings/twentyfourf2nt.py +100 -0
  26. datamule/document/processing.py +170 -42
  27. datamule/document/table.py +60 -5
  28. datamule/helper.py +10 -1
  29. datamule/index.py +8 -10
  30. datamule/portfolio.py +17 -16
  31. datamule/sec/submissions/monitor.py +173 -120
  32. datamule/sec/submissions/textsearch.py +0 -4
  33. datamule/sec/xbrl/streamcompanyfacts.py +1 -1
  34. datamule/seclibrary/downloader.py +2 -2
  35. datamule/submission.py +92 -36
  36. {datamule-1.2.2.dist-info → datamule-1.2.9.dist-info}/METADATA +1 -2
  37. datamule-1.2.9.dist-info/RECORD +62 -0
  38. datamule/sec/rss/monitor.py +0 -416
  39. datamule-1.2.2.dist-info/RECORD +0 -40
  40. /datamule/{sec/rss → document/mappings}/__init__.py +0 -0
  41. {datamule-1.2.2.dist-info → datamule-1.2.9.dist-info}/WHEEL +0 -0
  42. {datamule-1.2.2.dist-info → datamule-1.2.9.dist-info}/top_level.txt +0 -0
datamule/__init__.py CHANGED
@@ -8,6 +8,7 @@ from .index import Index
8
8
  from .package_updater import PackageUpdater
9
9
 
10
10
 
11
+
11
12
  # Keep the notebook environment setup
12
13
  def _is_notebook_env():
13
14
  """Check if the code is running in a Jupyter or Colab environment."""
@@ -118,10 +118,11 @@ class Document:
118
118
  # will deprecate this when we add html2dict
119
119
  elif self.extension in ['.htm', '.html','.txt']:
120
120
 
121
- if self.type == '10-K':
122
- mapping_dict = dict_10k
123
- elif self.type == '10-Q':
121
+
122
+ if self.type == '10-Q':
124
123
  mapping_dict = dict_10q
124
+ elif self.type == '10-K':
125
+ mapping_dict = dict_10k
125
126
  elif self.type == '8-K':
126
127
  mapping_dict = dict_8k
127
128
  elif self.type == 'SC 13D':
@@ -140,28 +141,40 @@ class Document:
140
141
  with open(output_filename, 'w',encoding='utf-8') as f:
141
142
  json.dump(self.data, f, indent=2)
142
143
 
143
- def to_tabular(self):
144
- if self.extension != '.xml':
144
+ def tables(self):
145
+ if self.type == 'submission_metadata':
146
+ return process_tabular_data(self)
147
+ elif self.extension != '.xml':
145
148
  return []
146
- self.parse()
147
- return process_tabular_data(self)
149
+ else:
150
+ self.parse()
151
+ return process_tabular_data(self)
148
152
 
149
153
 
150
- def write_csv(self, output_folder, accession_number=None):
154
+ def write_csv(self, output_folder):
155
+ output_folder = Path(output_folder)
156
+ output_folder.mkdir(exist_ok=True)
151
157
 
152
- tables = self.to_tabular(accession_number)
158
+ tables = self.tables()
153
159
 
154
160
  if not tables:
155
161
  return
156
162
 
157
163
  for table in tables:
158
164
  fieldnames = table.columns
159
- output_filename = Path(output_folder) / f"{table.type}.csv"
165
+ output_filename = output_folder / f"{table.type}.csv"
166
+
167
+ # Check if the file already exists
168
+ if output_filename.exists():
160
169
 
161
- with open(output_filename, 'w', newline='') as csvfile:
162
- writer = csv.DictWriter(csvfile,fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
163
- writer.writeheader()
164
- writer.writerows(table.data)
170
+ with open(output_filename, 'a', newline='') as csvfile:
171
+ writer = csv.DictWriter(csvfile,fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
172
+ writer.writerows(table.data)
173
+ else:
174
+ with open(output_filename, 'w', newline='') as csvfile:
175
+ writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
176
+ writer.writeheader()
177
+ writer.writerows(table.data)
165
178
 
166
179
 
167
180
  def _document_to_section_text(self, document_data, parent_key=''):
@@ -0,0 +1,208 @@
1
+ # ATS-N metadata mapping
2
+ metadata_ats_dict = {
3
+ 'filerInfo_filer_filerCredentials_ccc': 'filerCcc',
4
+ 'filerInfo_filer_filerCredentials_cik': 'filerCik',
5
+ 'filerInfo_flags_confirmingCopyFlag': 'confirmingCopyFlag',
6
+ 'filerInfo_flags_overrideInternetFlag': 'overrideInternetFlag',
7
+ 'filerInfo_liveTestFlag': 'liveTestFlag',
8
+ 'submissionType': 'submissionType'
9
+ }
10
+
11
+ cover_ats_dict = {
12
+ 'rbOperatesPursuantToFormATS' : 'operatesPursuantToFormATS',
13
+ 'txNMSStockATSName' : 'atsName'
14
+ }
15
+
16
+ part_one_ats_dict = {
17
+ 'atsNames_atsName_@txPart1Item3ATSName': 'formalATSName',
18
+ 'cbPart1Item8Exhibit1atWebsite': 'exhibit1AtWebsite',
19
+ 'cbPart1Item9Exhibit2atWebsite': 'exhibit2AtWebsite',
20
+ 'part1Item5bEffectiveMembershipDate': 'membershipEffectiveDate',
21
+ 'part1Item7PrimarySite_city': 'primarySiteCity',
22
+ 'part1Item7PrimarySite_state': 'primarySiteState',
23
+ 'part1Item7PrimarySite_street1': 'primarySiteStreet1',
24
+ 'part1Item7PrimarySite_street2': 'primarySiteStreet2',
25
+ 'part1Item7PrimarySite_zip': 'primarySiteZip',
26
+ 'part1Item7SecondarySiteRecords_secondarySiteI7_city': 'secondarySiteCity',
27
+ 'part1Item7SecondarySiteRecords_secondarySiteI7_state': 'secondarySiteState',
28
+ 'part1Item7SecondarySiteRecords_secondarySiteI7_street1': 'secondarySiteStreet1',
29
+ 'part1Item7SecondarySiteRecords_secondarySiteI7_street2': 'secondarySiteStreet2',
30
+ 'part1Item7SecondarySiteRecords_secondarySiteI7_zip': 'secondarySiteZip',
31
+ 'rbPart1Item1IsBd': 'isBrokerDealer',
32
+ 'txPart1Item2ATSName': 'marketName',
33
+ 'txPart1Item4aBdCrdNumber': 'brokerDealerCrdNumber',
34
+ 'txPart1Item4aBdFileNumber': 'brokerDealerFileNumber',
35
+ 'txPart1Item5aNsaFullName': 'nsaFullName',
36
+ 'txtPart1Item5cNmsStockMPID': 'stockMPID',
37
+ 'txtPart1Item6uwebsite': 'website'
38
+ }
39
+
40
+ part_two_ats_dict = {
41
+ 'affiliatesPermittedToEnterInterest_@rbPart2Item2aAreAfflPermittedToEnterInterest': 'affiliatesPermittedToEnterInterest',
42
+ 'affiliatesPermittedToEnterInterest_part2Item2bAreSevicestoAfflSametoSubscribers_@rbPart2Item2bAreSevicestoAfflSametoSubscribers': 'areServicesToAffiliatesSameAsSubscribers',
43
+ 'affiliatesPermittedToEnterInterest_part2Item2bAreSevicestoAfflSametoSubscribers_taPart2Item2bExplainDiff': 'differenceInAffiliateServicesExplanation',
44
+ 'affiliatesPermittedToEnterInterest_rbPart2Item2bAreSevicestoAfflSametoSubscribers': 'servicesEqualForAffiliatesAndSubscribers',
45
+ 'affiliatesPermittedToEnterInterest_rbPart2Item2cAreThereArrangementsWithAffl': 'arrangementsWithAffiliatesExist',
46
+ 'affiliatesPermittedToEnterInterest_taPart2Item2aAfflThatEnterInterest': 'affiliatesThatEnterInterest',
47
+ 'part2Item1aArePermittedToEnterInterest_@rbPart2Item1aArePermittedToEnterInterest': 'brokerDealerPermittedToEnterInterest',
48
+ 'part2Item1aArePermittedToEnterInterest_part2Item1bAreSevicesSametoAllSubscribers_@rbPart2Item1bAreSevicesSametoAllSubscribers': 'areServicesSameToAllSubscribers',
49
+ 'part2Item1aArePermittedToEnterInterest_part2Item1bAreSevicesSametoAllSubscribers_taPart2Item2bExplainDiff': 'differenceInSubscriberServicesExplanation',
50
+ 'part2Item1aArePermittedToEnterInterest_rbPart2Item1bAreSevicesSametoAllSubscribers': 'servicesEqualForAllSubscribers',
51
+ 'part2Item1aArePermittedToEnterInterest_rbPart2Item1cAreThereArrangements': 'brokerDealerArrangementsExist',
52
+ 'part2Item1aArePermittedToEnterInterest_taPart2Item1aUnitNamesEnterInterest': 'unitNamesThatEnterInterest',
53
+ 'part2Item3aCanSubscrOptOutWithOATIOfAffl_@rbPart2Item3aCanSubscrOptOutWithOATIOfAffl': 'canOptOutOfAffiliateOrderInteraction',
54
+ 'part2Item3aCanSubscrOptOutWithOATIOfAffl_taPart2Item3bExplianOptOut': 'affiliateOptOutExplanation',
55
+ 'part2Item3aCanSubscrOptOutWithOATIOfBD_@rbPart2Item3aCanSubscrOptOutWithOATIOfBD': 'canOptOutOfBrokerDealerOrderInteraction',
56
+ 'part2Item3aCanSubscrOptOutWithOATIOfBD_taPart2Item3aExplianOptOut': 'brokerDealerOptOutExplanation',
57
+ 'part2Item4aAreThereArrangementsBtwBDAndTC_@rbPart2Item4aAreThereArrangementsBtwBDAndTC': 'arrangementsExistBetweenBrokerDealerAndTradingCenter',
58
+ 'part2Item4aAreThereArrangementsBtwBDAndTC_rbPart2Item4bAreThereArrangementsBtwAfflAndTC': 'arrangementsExistBetweenAffiliateAndTradingCenter',
59
+ 'part2Item4aAreThereArrangementsBtwBDAndTC_taPart2Item4aTDAndATSServices': 'tradingCenterAndATSServicesDescription',
60
+ 'part2Item5aDoesOfferProductsAndServices_@rbPart2Item5aDoesOfferProductsAndServices': 'offersProductsAndServices',
61
+ 'part2Item5aDoesOfferProductsAndServices_part2Item5bAreSevicesSametoAllSubscribersAndBD_@rbPart2Item5bAreSevicesSametoAllSubscribersAndBD': 'areServicesSameToAllSubscribersAndBrokerDealer',
62
+ 'part2Item5aDoesOfferProductsAndServices_part2Item5bAreSevicesSametoAllSubscribersAndBD_taPart2Item5bExplainDiff': 'differenceInServicesExplanation',
63
+ 'part2Item5aDoesOfferProductsAndServices_rbPart2Item5bAreSevicesSametoAllSubscribersAndBD': 'servicesEqualForAllSubscribersAndBrokerDealer',
64
+ 'part2Item5aDoesOfferProductsAndServices_taPart2Item5aProductsAndServices': 'productsAndServicesDescription',
65
+ 'part2Item5cDoesAfflOfferProductsAndServices_@rbPart2Item5cDoesAfflOfferProductsAndServices': 'affiliateOffersProductsAndServices',
66
+ 'part2Item5cDoesAfflOfferProductsAndServices_rbPart2Item5dAreTCOfSevicesSametoAll': 'affiliateServicesEqualForAll',
67
+ 'part2Item5cDoesAfflOfferProductsAndServices_taPart2Item5cAfflProvidedProductsAndServices': 'affiliateProvidedProductsAndServicesDescription',
68
+ 'part2Item6aDoesEmployeeAccessConfidentialInfo_@rbPart2Item6aDoesEmployeeAccessConfidentialInfo': 'employeeAccessToConfidentialInfo',
69
+ 'part2Item6aDoesEmployeeAccessConfidentialInfo_taPart2Item6aUnitAfflEmployeeServices': 'unitAffiliateEmployeeServicesDescription',
70
+ 'part2Item6bDoesAnyEntitySupportServices_@rbPart2Item6bDoesAnyEntitySupportServices': 'entitySupportServicesExist',
71
+ 'part2Item6bDoesAnyEntitySupportServices_part2Item6cDoesServiceProviderUseATSServices_@rbPart2Item6cDoesServiceProviderUseATSServices': 'serviceProviderUsesATSServices',
72
+ 'part2Item6bDoesAnyEntitySupportServices_part2Item6cDoesServiceProviderUseATSServices_rbPart2Item6dAreATSSevicesSametoAll': 'atsServicesEqualForAll',
73
+ 'part2Item6bDoesAnyEntitySupportServices_part2Item6cDoesServiceProviderUseATSServices_taPart2Item6cProviderAfflAndServicesUsed': 'providerAffiliateAndServicesUsedDescription',
74
+ 'part2Item6bDoesAnyEntitySupportServices_rbPart2Item6cDoesServiceProviderUseATSServices': 'serviceProviderUsesATSServices',
75
+ 'part2Item6bDoesAnyEntitySupportServices_taPart2Item6bServiceProvider': 'serviceProviderDescription',
76
+ 'part2Item7bCanSubscriberConsentToDisclosure_@rbPart2Item7bCanSubscriberConsentToDisclosure': 'subscriberCanConsentToDisclosure',
77
+ 'part2Item7bCanSubscriberConsentToDisclosure_part2Item7cCanSubscriberWithdrawConsent_@rbPart2Item7cCanSubscriberWithdrawConsent': 'subscriberCanWithdrawConsent',
78
+ 'part2Item7bCanSubscriberConsentToDisclosure_part2Item7cCanSubscriberWithdrawConsent_taPart2Item7cExplainHowAndConditions': 'withdrawConsentExplanation',
79
+ 'part2Item7bCanSubscriberConsentToDisclosure_taPart2Item7bExplainHowAndConditions': 'consentToDisclosureExplanation',
80
+ 'rbPart2Item1aArePermittedToEnterInterest': 'permittedToEnterInterest',
81
+ 'rbPart2Item1dCanOATInterestBeRouted': 'orderInterestCanBeRouted',
82
+ 'rbPart2Item2aAreAfflPermittedToEnterInterest': 'affiliatesPermittedToEnterInterest',
83
+ 'rbPart2Item2dCanOATIBeRoutedByAffl': 'orderInterestCanBeRoutedByAffiliate',
84
+ 'rbPart2Item3aCanSubscrOptOutWithOATIOfAffl': 'subscriberCanOptOutOfAffiliateInteraction',
85
+ 'rbPart2Item3aCanSubscrOptOutWithOATIOfBD': 'subscriberCanOptOutOfBrokerDealerInteraction',
86
+ 'rbPart2Item3cAreOptOutSametoAllSubscribers': 'optOutOptionsEqualForAllSubscribers',
87
+ 'rbPart2Item4aAreThereArrangementsBtwBDAndTC': 'arrangementsBetweenBrokerDealerAndTradingCenterExist',
88
+ 'rbPart2Item5aDoesOfferProductsAndServices': 'offersProductsAndServices',
89
+ 'rbPart2Item5cDoesAfflOfferProductsAndServices': 'affiliateOffersProductsAndServices',
90
+ 'rbPart2Item7bCanSubscriberConsentToDisclosure': 'subscriberCanConsentToDisclosure',
91
+ 'taPart2Item7aDescrOfSafeGaurdsAndProcedures': 'safeguardsAndProceduresDescription',
92
+ 'taPart2Item7dSummaryOfRolesRespOfPersons': 'rolesAndResponsibilitiesSummary'
93
+ }
94
+
95
+ part_three_ats_dict = {
96
+ 'part3Item10eDiffDtls_@rbPart3Item10eIsAnyDifBtwnPreOpExecFlwngStpg': 'differencesBetweenPreOpExecution',
97
+ 'part3Item10eDiffDtls_taPart3Item10eDiffDtls': 'preOperationExecutionDifferences',
98
+ 'part3Item11dDiffDtls_@rbPart3Item11dIsProcsRulsSameForAll': 'processingRulesSameForAll',
99
+ 'part3Item11dDiffDtls_taPart3Item11dDiffDtls': 'processingRulesDifferences',
100
+ 'part3Item13aSegmntDtls_@rbPart3Item13aIsOrdrTiSegmntd': 'orderTradingInterestSegmented',
101
+ 'part3Item13aSegmntDtls_part3Item13bSegmntDtls_@rbPart3Item13bIsSegmntatnSameForAll': 'segmentationSameForAll',
102
+ 'part3Item13aSegmntDtls_part3Item13bSegmntDtls_taPart3Item13bSegDiffDtls': 'segmentationDifferences',
103
+ 'part3Item13aSegmntDtls_part3Item13dDsclrContntDtls_@rbPart3Item13dIsSegCatgDisclosd': 'segmentCategoryDisclosed',
104
+ 'part3Item13aSegmntDtls_part3Item13dDsclrContntDtls_rbPart3Item13eIsDsclosrSameForAll': 'disclosureSameForAll',
105
+ 'part3Item13aSegmntDtls_part3Item13dDsclrContntDtls_taPart3Item13dDsclosrContntDtls': 'disclosureContentDetails',
106
+ 'part3Item13aSegmntDtls_rbPart3Item13bIsSegmntatnSameForAll': 'segmentationSameForAll',
107
+ 'part3Item13aSegmntDtls_taPart3Item13aSegProcdurDtls': 'segmentationProcedureDetails',
108
+ 'part3Item14aCntrPrtySelectnDtls_@rbPart3Item14aIsDsgToIntrctOrNot': 'designatedToInteract',
109
+ 'part3Item14aCntrPrtySelectnDtls_rbPart3Item14bIsSelectnSameForAll': 'counterpartySelectionSameForAll',
110
+ 'part3Item14aCntrPrtySelectnDtls_taPart3Item14aCntrPrtyDtls': 'counterpartyDetails',
111
+ 'part3Item15bSubSctbDtls_@rbPart3Item15bIsSubScrbOrdBnd': 'subscriberOrderBound',
112
+ 'part3Item15bSubSctbDtls_rbPart3Item15cIsDsplyProcSameForAll': 'displayProcedureSameForAll',
113
+ 'part3Item15bSubSctbDtls_taPart3Item15bSubscrBndDtls': 'subscriberBindingDetails',
114
+ 'part3Item16aAffirInstrDtls_@rbPart3Item16aIsInstRoutd': 'instructionRouted',
115
+ 'part3Item16aAffirInstrDtls_part3Item16bAffirmInstrDtls_@rbPart3Item16bIsRoutdBefrInstr': 'routedBeforeInstruction',
116
+ 'part3Item16aAffirInstrDtls_part3Item16bAffirmInstrDtls_taPart3Item16bAffirmInstrDiffDtls': 'affirmInstructionDifferences',
117
+ 'part3Item17aAffirInstrDtls_@rbPart3Item17aIsDiffBtwnOrdTITrtmnt': 'differencesBetweenOrderTrading',
118
+ 'part3Item17aAffirInstrDtls_taPart3Item17aTrtmntDiffDtls': 'treatmentDifferences',
119
+ 'part3Item18aTrdingHrDtls_@rbPart3Item18aIsOutsdeTrdingHrs': 'outsideTradingHours',
120
+ 'part3Item18aTrdingHrDtls_part3Item18bOutsdHrsDiffDtls_@rbPart3Item18bIsAnyDiffInTrdingOutSdHrs': 'differenceInOutsideHoursTrading',
121
+ 'part3Item18aTrdingHrDtls_part3Item18bOutsdHrsDiffDtls_taPart3Item18bDiffDtls': 'outsideHoursDifferences',
122
+ 'part3Item18aTrdingHrDtls_rbPart3Item18cIsTrtedDiffOutsdHrs': 'treatedDifferentlyOutsideHours',
123
+ 'part3Item26PlatFrmData_@rbPart3Item26IsOrdrFloExecStatsPublshd': 'orderFlowExecutionStatsPublished',
124
+ 'part3Item26PlatFrmData_cbPart3Item26iInfoRqstdUndrExbt4AvlblAtWebst': 'exhibit4InfoAvailableAtWebsite',
125
+ 'part3Item26PlatFrmData_cbPart3Item26iiInfoRqstdUndrExbt5AvlblAtWebst': 'exhibit5InfoAvailableAtWebsite',
126
+ 'part3Item2bSummaryOfConditions_@rbPart3Item2bIsThereOtherConditions': 'otherConditionsExist',
127
+ 'part3Item2bSummaryOfConditions_rbPart3Item2cIsConditionsSameForAll': 'conditionsSameForAll',
128
+ 'part3Item2bSummaryOfConditions_taPart3Item2bSummaryOfCndtns': 'summaryOfConditions',
129
+ 'part3Item3aSumryOfExcludngCondtns_@rbPart3Item3aIsExcludeSubscriber': 'excludeSubscriber',
130
+ 'part3Item3aSumryOfExcludngCondtns_part3Item3bSummaryOfConditions_@rbPart3Item3bIsCondtnsSameForAll': 'excludedConditionsSameForAll',
131
+ 'part3Item3aSumryOfExcludngCondtns_part3Item3bSummaryOfConditions_taPart3Item3bSummaryOfDifferences': 'excludingConditionsDifferences',
132
+ 'part3Item3aSumryOfExcludngCondtns_rbPart3Item3bIsCondtnsSameForAll': 'excludingConditionsSameForAll',
133
+ 'part3Item3aSumryOfExcludngCondtns_taPart3Item3aExcludngSumryDtls': 'excludingSummaryDetails',
134
+ 'part3Item5aProtocolDetails_@rbPart3Item5aIsPermitOrdrTradng': 'permitOrderTrading',
135
+ 'part3Item5aProtocolDetails_rbPart3Item5bIsProtclsameForAll': 'protocolSameForAll',
136
+ 'part3Item5aProtocolDetails_taPart3Item5aProtocolused': 'protocolUsed',
137
+ 'part3Item5cOthrDtls_@rbPart3Item5cIsAnyOtherMeans': 'anyOtherMeans',
138
+ 'part3Item5cOthrDtls_rbPart3Item5dIsTnCSameForAll': 'termsAndConditionsSameForAll',
139
+ 'part3Item5cOthrDtls_taPart3Item5cOthrMeansDtls': 'otherMeansDetails',
140
+ 'part3Item6aProtocolDetails_@rbPart3Item6aIsCoLocRltdSrvcsOfrd': 'coLocationRelatedServicesOffered',
141
+ 'part3Item6aProtocolDetails_rbPart3Item6bIsTNCsameForAll': 'termsAndConditionsSameForCoLocation',
142
+ 'part3Item6aProtocolDetails_taPart3Item6aCoLocRltdSrvcsDtls': 'coLocationRelatedServicesDetails',
143
+ 'part3Item8aSizeReqrmnts_@rbPart3Item8aIsMinOrMaxSizeReqd': 'minOrMaxSizeRequired',
144
+ 'part3Item8aSizeReqrmnts_part3Item8bReqProcDetails_@rbPart3Item8bIsReqProcSameForAll': 'requirementProcedureSameForAll',
145
+ 'part3Item8aSizeReqrmnts_part3Item8bReqProcDetails_taPart3Item8bDiffrncsInOtiReqrmnts': 'differencesInOrderRequirements',
146
+ 'part3Item8aSizeReqrmnts_rbPart3Item8bIsReqProcSameForAll': 'requirementProcedureSameForAll',
147
+ 'part3Item8aSizeReqrmnts_taPart3Item8aOtiSizeReqrmns': 'orderSizeRequirements',
148
+ 'part3Item8cOddltOrdrReqs_@rbPart3Item8cIsOddLotsAcptdExecutd': 'oddLotsAcceptedExecuted',
149
+ 'part3Item8cOddltOrdrReqs_rbPart3Item8dIsReqsProcdurSameForAll': 'requirementsProcedureSameForAll',
150
+ 'part3Item8cOddltOrdrReqs_taPart3Item8cOddLtOrdrReqsnProcdurs': 'oddLotOrderRequirementsAndProcedures',
151
+ 'part3Item8eMixltOrdrDetails_@rbPart3Item8eIsMixLotOrdrsAcptdExecutd': 'mixedLotOrdersAcceptedExecuted',
152
+ 'part3Item8eMixltOrdrDetails_rbPart3Item8fIsRecProcSameForAll': 'receivingProcedureSameForAll',
153
+ 'part3Item8eMixltOrdrDetails_taPart3Item8eMixltOrdrReqsProcDtls': 'mixedLotOrderRequirementsDetails',
154
+ 'part3Item9aMsgDtls_@rbPart3Item9aIsAnyMsgToIndicTI': 'anyMessageIndicatingTrading',
155
+ 'part3Item9aMsgDtls_taPart3Item9aMsgUsgDtls': 'messageUsageDetails',
156
+ 'rbPart3Item10bIsOpnReopnSameForAll': 'openReopenSameForAll',
157
+ 'rbPart3Item10dIsAnyDifBtwnExeProcTrdHrs': 'differencesBetweenExecutionProcedureTradingHours',
158
+ 'rbPart3Item10eIsAnyDifBtwnPreOpExecFlwngStpg': 'differencesBetweenPreOpExecutionFollowingStopping',
159
+ 'rbPart3Item11bIsMeansFeciltsSameForAll': 'meansFacilitiesSameForAll',
160
+ 'rbPart3Item11dIsProcsRulsSameForAll': 'processingRulesSameForAll',
161
+ 'rbPart3Item12aIsAnyFrmlInfrmlArngmnts': 'anyFormalInformalArrangements',
162
+ 'rbPart3Item13aIsOrdrTiSegmntd': 'orderTradingInterestSegmented',
163
+ 'rbPart3Item13cIsCustmrOrdr': 'customerOrder',
164
+ 'rbPart3Item15aIsElectrncCommu': 'electronicCommunication',
165
+ 'rbPart3Item15bIsSubScrbOrdBnd': 'subscriberOrderBound',
166
+ 'rbPart3Item16aIsInstRoutd': 'instructionRouted',
167
+ 'rbPart3Item17aIsDiffBtwnOrdTITrtmnt': 'differencesBetweenOrderTradingTreatment',
168
+ 'rbPart3Item17bIsTrtmntSameForAll': 'treatmentSameForAll',
169
+ 'rbPart3Item18aIsOutsdeTrdingHrs': 'outsideTradingHours',
170
+ 'rbPart3Item20bIsSuspndProcdurSameFrAll': 'suspendProcedureSameForAll',
171
+ 'rbPart3Item21bIsMtrlArngmtSameFrAll': 'materialArrangementSameForAll',
172
+ 'rbPart3Item22bIsMtrlArngmtSameFrAll': 'materialArrangementSameForAll',
173
+ 'rbPart3Item23bIsSrcSameFrAll': 'sourceSameForAll',
174
+ 'rbPart3Item24aIsSubScrbrOrdr': 'subscriberOrder',
175
+ 'rbPart3Item25aIsAvgDlyTradinVolExcd': 'averageDailyTradingVolumeExceeded',
176
+ 'rbPart3Item26IsOrdrFloExecStatsPublshd': 'orderFlowExecutionStatsPublished',
177
+ 'rbPart3Item2aRegisteredBD': 'registeredBrokerDealer',
178
+ 'rbPart3Item2dIsThereWrittenAgreement': 'writtenAgreementExists',
179
+ 'rbPart3Item4bIsHrsOfOperationsame': 'hoursOfOperationSame',
180
+ 'rbPart3Item5aIsPermitOrdrTradng': 'permitOrderTrading',
181
+ 'rbPart3Item5cIsAnyOtherMeans': 'anyOtherMeans',
182
+ 'rbPart3Item6aIsCoLocRltdSrvcsOfrd': 'coLocationRelatedServicesOffered',
183
+ 'rbPart3Item6cIsAnyOtherMeans': 'anyOtherMeansForCoLocation',
184
+ 'rbPart3Item6eIsAnyRducdSpOfCom': 'anyReducedSpeedOfCommunication',
185
+ 'rbPart3Item7bIsTnCSameForAll': 'termsAndConditionsSameForAll',
186
+ 'rbPart3Item8aIsMinOrMaxSizeReqd': 'minOrMaxSizeRequired',
187
+ 'rbPart3Item8cIsOddLotsAcptdExecutd': 'oddLotsAcceptedExecuted',
188
+ 'rbPart3Item9aIsAnyMsgToIndicTI': 'anyMessageIndicatingTrading',
189
+ 'rbPart3Item9bIsIndIntrstSameForAll': 'indicationInterestSameForAll',
190
+ 'taPart3Item10aOpenReOpenDtls': 'openReopenDetails',
191
+ 'taPart3Item10cUnexeOrdrTIDtls': 'unexecutedOrderTradingDetails',
192
+ 'taPart3Item11aStrucOfNmsStk': 'structureOfNmsStock',
193
+ 'taPart3Item11cRulsProcsOfNmsStk': 'rulesAndProceduresOfNmsStock',
194
+ 'taPart3Item19aSrvcUsgFees': 'serviceUsageFees',
195
+ 'taPart3Item19bBundldSrvcUsgFees': 'bundledServiceUsageFees',
196
+ 'taPart3Item19cRbtDiscOfFees': 'rebateDiscountOfFees',
197
+ 'taPart3Item1OtherSubscrbrDtls': 'otherSubscriberDetails',
198
+ 'taPart3Item1SubscriberType': 'subscriberType',
199
+ 'taPart3Item20aSuspndProcdur': 'suspendProcedure',
200
+ 'taPart3Item21aMtrlArngmntDtls': 'materialArrangementDetails',
201
+ 'taPart3Item22aMtrlArngmntDtls': 'materialArrangementDetails',
202
+ 'taPart3Item23aMrktDatSrc': 'marketDataSource',
203
+ 'taPart3Item4aHrsOfOperation': 'hoursOfOperation',
204
+ 'taPart3Item7AOrdrTypExplain': 'orderTypeExplanation'
205
+ }
206
+
207
+ # Not implemented yet, not sure a 4 exists in ATS-N yet
208
+ part_four_ats_dict = {}