rgwfuncs 0.0.94__py3-none-any.whl → 0.0.96__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.
rgwfuncs/df_lib.py CHANGED
@@ -811,7 +811,7 @@ def filter_indian_mobiles(df: pd.DataFrame, mobile_col: str) -> pd.DataFrame:
811
811
  """
812
812
  Filter and return DataFrame rows containing valid Indian mobile numbers.
813
813
 
814
- This function processes a DataFrame to extract and retain rows where the specified column matches the typical format for Indian mobile numbers. An Indian mobile number is expected to be a digit-only string starting with 6, 7, 8, or 9, and should have at least 4 distinct digits.
814
+ This function processes a DataFrame to extract and retain rows where the specified column matches the typical format for Indian mobile numbers. An Indian mobile number is expected to be a 10-digit string starting with 6, 7, 8, or 9, containing only digits, and having at least 4 distinct digits.
815
815
 
816
816
  Parameters:
817
817
  - df (pd.DataFrame): The DataFrame to filter.
@@ -828,6 +828,7 @@ def filter_indian_mobiles(df: pd.DataFrame, mobile_col: str) -> pd.DataFrame:
828
828
  df[mobile_col].apply(
829
829
  lambda x: (
830
830
  str(x).isdigit() and
831
+ len(str(x)) == 10 and
831
832
  str(x).startswith(('6', '7', '8', '9')) and
832
833
  len(set(str(x))) >= 4
833
834
  )
@@ -2087,11 +2088,12 @@ def sync_dataframe_to_sqlite_database(
2087
2088
 
2088
2089
  def load_fresh_data_or_pull_from_cache(fetch_func: Callable[[], pd.DataFrame], cache_dir: str, file_prefix: str, cache_cutoff_hours: int, dtype: dict = None) -> pd.DataFrame:
2089
2090
  """
2090
- Retrieve data from a cache if a recent cache file exists, or fetch fresh data, save it to the cache, and return it.
2091
+ Retrieve data from a cache if a recent cache file exists, or fetch fresh data, save it to the cache, remove older cache files, and return it.
2091
2092
 
2092
2093
  This function checks a specified directory for the most recent cache file matching a specified prefix.
2093
2094
  If a recent cache file (within the cutoff time in hours) is found, the data is read from there.
2094
- Otherwise, it calls the data-fetching function, saves the newly fetched data to a new cache file, and returns it.
2095
+ Otherwise, it calls the data-fetching function, saves the newly fetched data to a new cache file,
2096
+ removes all earlier cache files with the same prefix, and returns the data.
2095
2097
 
2096
2098
  Parameters:
2097
2099
  - fetch_func (typing.Callable[[], pd.DataFrame]):
@@ -2145,4 +2147,12 @@ def load_fresh_data_or_pull_from_cache(fetch_func: Callable[[], pd.DataFrame], c
2145
2147
  cache_filename: str = f"{file_prefix}_{current_time_str}.csv"
2146
2148
  df.to_csv(os.path.join(cache_dir, cache_filename), index=False)
2147
2149
 
2150
+ # Remove all earlier cache files with the same prefix
2151
+ for filename in os.listdir(cache_dir):
2152
+ if filename.startswith(file_prefix) and filename.endswith(".csv") and filename != cache_filename:
2153
+ try:
2154
+ os.remove(os.path.join(cache_dir, filename))
2155
+ except OSError:
2156
+ continue
2157
+
2148
2158
  return df
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rgwfuncs
3
- Version: 0.0.94
3
+ Version: 0.0.96
4
4
  Summary: A functional programming paradigm for mathematical modelling and data science
5
5
  Home-page: https://github.com/ryangerardwilson/rgwfunc
6
6
  Author: Ryan Gerard Wilson
@@ -1735,7 +1735,7 @@ Processes and saves a DataFrame to an SQLite database, adding a timestamp column
1735
1735
 
1736
1736
  ### 46. `load_fresh_data_or_pull_from_cache`
1737
1737
 
1738
- Retrieves data from a cache if a recent cache file exists, or fetches fresh data, saves it to the cache, and returns it. If the cache is too old or doesn’t exist, it uses a fetching function to get new data, which it caches and returns. An optional `dtype` parameter allows specifying column data types when reading from the cache, preventing issues with mixed-type columns.
1738
+ Retrieves data from a cache if a recent cache file exists, or fetches fresh data, saves it to the cache, removes older cache files, and returns it. If the cache is too old or doesn’t exist, it uses a fetching function to get new data, which it caches and returns. When fresh data is fetched and saved, all earlier cache files with the same prefix are deleted to keep the cache directory clean. An optional `dtype` parameter allows specifying column data types when reading from the cache, preventing issues with mixed-type columns.
1739
1739
 
1740
1740
  #### Parameters:
1741
1741
  - **`fetch_func` (typing.Callable[[], pd.DataFrame])**: A callable function that fetches fresh data and returns it as a pandas DataFrame.
@@ -1,12 +1,12 @@
1
1
  rgwfuncs/__init__.py,sha256=LSn54Tlyskcb6Wab_wUpPLB6UGMe5LdrB3GU88mDEbU,1712
2
2
  rgwfuncs/algebra_lib.py,sha256=rKFITfpWfgdBswnbMUuS41XgndEt-jUVz2ObO_ik7eM,42234
3
- rgwfuncs/df_lib.py,sha256=SUEjUc8kCELtbQE2luMsBGh18aTWS97Wb5s3RdMcmHc,75750
3
+ rgwfuncs/df_lib.py,sha256=QgEydReadUBbBkyWGaDfB_OjtALGdjKmzp_S9YZlUks,76266
4
4
  rgwfuncs/docs_lib.py,sha256=i63NzX-V8cGhikYdtkRGAEe2VcuwpXxDUyTRa9xI7l8,1972
5
5
  rgwfuncs/interactive_shell_lib.py,sha256=YN0ZnM5twIsOeDKuOQ9ZGURCvvBX0RZjM4a1vO1C3E8,4281
6
6
  rgwfuncs/str_lib.py,sha256=hE0VfP6rhQpczsKyCZvH3G1aMRwngKnkW3NTYCEc0Po,3208
7
- rgwfuncs-0.0.94.dist-info/licenses/LICENSE,sha256=jLvt20gcUZYB8UOvyBvyKQ1qhYYhD__qP7ZDx2lPFkU,1062
8
- rgwfuncs-0.0.94.dist-info/METADATA,sha256=K0ehKuNHmsn7IbtRWM8o7_323F8RUnYNtry2QHosFWo,62066
9
- rgwfuncs-0.0.94.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
10
- rgwfuncs-0.0.94.dist-info/entry_points.txt,sha256=j-c5IOPIQ0252EaOV6j6STio56sbXl2C4ym_fQ0lXx0,43
11
- rgwfuncs-0.0.94.dist-info/top_level.txt,sha256=aGuVIzWsKiV1f2gCb6mynx0zx5ma0B1EwPGFKVEMTi4,9
12
- rgwfuncs-0.0.94.dist-info/RECORD,,
7
+ rgwfuncs-0.0.96.dist-info/licenses/LICENSE,sha256=jLvt20gcUZYB8UOvyBvyKQ1qhYYhD__qP7ZDx2lPFkU,1062
8
+ rgwfuncs-0.0.96.dist-info/METADATA,sha256=s2T3236W7cPHPnCM8dsFHk238-BIfncEBpzjVDToBwc,62223
9
+ rgwfuncs-0.0.96.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
10
+ rgwfuncs-0.0.96.dist-info/entry_points.txt,sha256=j-c5IOPIQ0252EaOV6j6STio56sbXl2C4ym_fQ0lXx0,43
11
+ rgwfuncs-0.0.96.dist-info/top_level.txt,sha256=aGuVIzWsKiV1f2gCb6mynx0zx5ma0B1EwPGFKVEMTi4,9
12
+ rgwfuncs-0.0.96.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5