datamule 2.0.4__py3-none-any.whl → 2.0.5__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.
@@ -77,8 +77,14 @@ class DatamuleMySQL:
77
77
  if value is None:
78
78
  continue
79
79
 
80
+ # *** HIGHLIGHTED CHANGE: Special logic for members in simple_xbrl table ***
81
+ if table == 'simple_xbrl' and key == 'members':
82
+ if isinstance(value, list):
83
+ filters[key] = {"type": "find_in_set", "values": value}
84
+ else:
85
+ filters[key] = {"type": "find_in_set", "values": [value]}
80
86
  # Special logic for cik
81
- if key == 'cik':
87
+ elif key == 'cik':
82
88
  if isinstance(value, list):
83
89
  value = [int(val) for val in value]
84
90
  else:
@@ -100,6 +106,12 @@ class DatamuleMySQL:
100
106
  for key, filter_obj in filters.items():
101
107
  if filter_obj["type"] == "range":
102
108
  query_desc.append(f"{key}={filter_obj['values'][0]} to {filter_obj['values'][1]}")
109
+ # *** HIGHLIGHTED CHANGE: Display logic for find_in_set type ***
110
+ elif filter_obj["type"] == "find_in_set":
111
+ if len(filter_obj["values"]) == 1:
112
+ query_desc.append(f"{key} contains {filter_obj['values'][0]}")
113
+ else:
114
+ query_desc.append(f"{key} contains any of {filter_obj['values']}")
103
115
  elif len(filter_obj["values"]) == 1:
104
116
  query_desc.append(f"{key}={filter_obj['values'][0]}")
105
117
  else:
@@ -177,6 +189,7 @@ def query_mysql_rds(table, api_key=None, **kwargs):
177
189
  Parameters:
178
190
  - table: Table name (e.g., 'simple_xbrl')
179
191
  - cik: Company CIK number(s), can be int, string, or list
192
+ - members: For simple_xbrl table, search within comma-separated member strings
180
193
  - Any other filter parameters as keyword arguments
181
194
  - page_size: Number of records per page (max 25000, default 25000)
182
195
  - quiet: Boolean, whether to suppress progress output and summary (default False)
@@ -186,6 +199,7 @@ def query_mysql_rds(table, api_key=None, **kwargs):
186
199
  - Single value: Exact match
187
200
  - List: OR condition (any of the values)
188
201
  - Tuple: Range condition (between first and second values)
202
+ - members (simple_xbrl only): Searches within comma-separated strings using FIND_IN_SET
189
203
 
190
204
  Returns:
191
205
  - List of dictionaries containing the requested data (ready for pandas DataFrame)
@@ -224,8 +238,14 @@ def _query_mysql_rds_single(table, api_key=None, **kwargs):
224
238
  if value is None:
225
239
  continue
226
240
 
241
+ # *** HIGHLIGHTED CHANGE: Special logic for members in simple_xbrl table ***
242
+ if table == 'simple_xbrl' and key == 'members':
243
+ if isinstance(value, list):
244
+ filters[key] = {"type": "find_in_set", "values": value}
245
+ else:
246
+ filters[key] = {"type": "find_in_set", "values": [value]}
227
247
  # special logic for cik
228
- if key == 'cik':
248
+ elif key == 'cik':
229
249
  if isinstance(value, list):
230
250
  value = [int(val) for val in value]
231
251
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamule
3
- Version: 2.0.4
3
+ Version: 2.0.5
4
4
  Summary: Work with SEC submissions at scale.
5
5
  Home-page: https://github.com/john-friedman/datamule-python
6
6
  Author: John Friedman
@@ -10,7 +10,7 @@ datamule/submission.py,sha256=qcb5TogrB2q6x4zcGPKFf4dkrAy0bAPzY71Ops_xW44,14437
10
10
  datamule/data/listed_filer_metadata.csv,sha256=dT9fQ8AC5P1-Udf_UF0ZkdXJ88jNxJb_tuhi5YYL1rc,2426827
11
11
  datamule/datamule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  datamule/datamule/datamule_lookup.py,sha256=e8djAg-ctSyHiKk7BjbtgugZ3p8roUjzsym5z3AihUg,9468
13
- datamule/datamule/datamule_mysql_rds.py,sha256=Oj_xPTBKkzWsuRlb_tphjJrBW1eua1cOuxjGwJx581k,10591
13
+ datamule/datamule/datamule_mysql_rds.py,sha256=P5vL3RJnOwLz25hPKuoYmxSX7XeDe83YETnwT6miRMo,11858
14
14
  datamule/datamule/downloader.py,sha256=aTyVUuIwynPtHB0Z9BvCasy9Ao5wfHptNAsjN-7yDTk,18525
15
15
  datamule/datamule/sec_connector.py,sha256=VwOaODpHoAWy8JIky6kLR1-orW_PB61RHw7pIGRpkow,3288
16
16
  datamule/document/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -65,7 +65,7 @@ datamule/seclibrary/bq.py,sha256=C8sb_rpXTvchprrFLcbRar4Qi0XWW25tnv1YsHSS5o4,180
65
65
  datamule/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  datamule/utils/construct_submissions_data.py,sha256=NB_hvfxlRXPyt4Fgc-5qA8vJRItkLhBedCSTaxwW7Jg,5887
67
67
  datamule/utils/format_accession.py,sha256=60RtqoNqoT9zSKVb1DeOv1gncJxzPTFMNW4SNOVmC_g,476
68
- datamule-2.0.4.dist-info/METADATA,sha256=CNSfwZgqLh3WR4TObVkP8Y1p2wWx4To_NMthG4EvhEQ,560
69
- datamule-2.0.4.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
70
- datamule-2.0.4.dist-info/top_level.txt,sha256=iOfgmtSMFVyr7JGl_bYSTDry79JbmsG4p8zKq89ktKk,9
71
- datamule-2.0.4.dist-info/RECORD,,
68
+ datamule-2.0.5.dist-info/METADATA,sha256=UzOW91CX56mST6_QMXKrYeewjnylQc8_B0gyK7fcpc8,560
69
+ datamule-2.0.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
70
+ datamule-2.0.5.dist-info/top_level.txt,sha256=iOfgmtSMFVyr7JGl_bYSTDry79JbmsG4p8zKq89ktKk,9
71
+ datamule-2.0.5.dist-info/RECORD,,