funcguard 0.2.46__tar.gz → 0.2.47__tar.gz

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 (34) hide show
  1. {funcguard-0.2.46 → funcguard-0.2.47}/PKG-INFO +1 -1
  2. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/core.py +3 -1
  3. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/filter.py +1 -0
  4. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/statistics/mask_utils.py +20 -2
  5. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/PKG-INFO +1 -1
  6. {funcguard-0.2.46 → funcguard-0.2.47}/setup.py +1 -1
  7. {funcguard-0.2.46 → funcguard-0.2.47}/LICENSE +0 -0
  8. {funcguard-0.2.46 → funcguard-0.2.47}/README.md +0 -0
  9. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/__init__.py +0 -0
  10. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/calculate.py +0 -0
  11. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/data_models/__init__.py +0 -0
  12. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/data_models/request_models.py +0 -0
  13. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/ip_utils.py +0 -0
  14. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/log_utils.py +0 -0
  15. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/__init__.py +0 -0
  16. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/convert_utils.py +0 -0
  17. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/date_utils.py +0 -0
  18. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/fill_round.py +0 -0
  19. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/json_utils/__init__.py +0 -0
  20. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/json_utils/json_parser.py +0 -0
  21. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/statistics/__init__.py +0 -0
  22. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/statistics/agg_utils.py +0 -0
  23. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/statistics/count_utils.py +0 -0
  24. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/pd_utils/statistics/df_statistics.py +0 -0
  25. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/printer.py +0 -0
  26. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/time_utils.py +0 -0
  27. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard/tools.py +0 -0
  28. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/SOURCES.txt +0 -0
  29. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/dependency_links.txt +0 -0
  30. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/not-zip-safe +0 -0
  31. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/requires.txt +0 -0
  32. {funcguard-0.2.46 → funcguard-0.2.47}/funcguard.egg-info/top_level.txt +0 -0
  33. {funcguard-0.2.46 → funcguard-0.2.47}/setup.cfg +0 -0
  34. {funcguard-0.2.46 → funcguard-0.2.47}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: funcguard
3
- Version: 0.2.46
3
+ Version: 0.2.47
4
4
  Summary: FuncGuard是一个Python库,提供函数执行超时控制、重试机制、HTTP请求封装和格式化打印工具。
5
5
  Home-page: https://github.com/tinycen/funcguard
6
6
  Author: tinycen
@@ -172,7 +172,9 @@ def ask_select(
172
172
  try:
173
173
  choice = int(user_input)
174
174
  if 0 <= choice < len(items):
175
- return items[choice][0]
175
+ selected_key, selected_label = items[choice]
176
+ print(f"\n已选择 {choice}:{selected_label}")
177
+ return selected_key
176
178
  except ValueError:
177
179
  pass
178
180
 
@@ -41,6 +41,7 @@ def pd_filter(
41
41
  - 比较运算:>, >=, <, <=, ==, !=
42
42
  - 集合运算:in, not in
43
43
  - 空值判断:null, not null
44
+ - 空值/空容器判断:empty, not empty(覆盖 NaN/None、空字符串、空列表、空元组、空字典、空集合)
44
45
  - 字符串匹配:contains, not contains, startswith, endswith
45
46
 
46
47
  示例:
@@ -2,6 +2,24 @@ import pandas as pd
2
2
  from typing import List, Tuple, Optional
3
3
 
4
4
 
5
+ def _is_empty(x):
6
+ """检查值是否为空(NaN/None、空字符串、空列表、空元组、空字典、空集合)"""
7
+ if pd.isna(x):
8
+ return True
9
+ if isinstance(x, (str, list, tuple, dict, set)):
10
+ return len(x) == 0
11
+ return False
12
+
13
+
14
+ def _is_not_empty(x):
15
+ """检查值是否非空(与_is_empty相反)"""
16
+ if pd.isna(x):
17
+ return False
18
+ if isinstance(x, (str, list, tuple, dict, set)):
19
+ return len(x) > 0
20
+ return True
21
+
22
+
5
23
  def build_single_mask(df: pd.DataFrame, condition: Tuple) -> pd.Series:
6
24
  """
7
25
  构建单个掩码,用于简单条件判断
@@ -64,9 +82,9 @@ def build_single_mask(df: pd.DataFrame, condition: Tuple) -> pd.Series:
64
82
  return df[column].notnull()
65
83
 
66
84
  elif op == "empty":
67
- return df[column].isnull() | (df[column] == "")
85
+ return df[column].apply(_is_empty)
68
86
  elif op == "not empty":
69
- return df[column].notnull() & (df[column] != "")
87
+ return df[column].apply(_is_not_empty)
70
88
 
71
89
  elif op == "contains":
72
90
  return df[column].str.contains(value, na=False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: funcguard
3
- Version: 0.2.46
3
+ Version: 0.2.47
4
4
  Summary: FuncGuard是一个Python库,提供函数执行超时控制、重试机制、HTTP请求封装和格式化打印工具。
5
5
  Home-page: https://github.com/tinycen/funcguard
6
6
  Author: tinycen
@@ -9,7 +9,7 @@ except FileNotFoundError:
9
9
 
10
10
  setup(
11
11
  name='funcguard',
12
- version='0.2.46',
12
+ version='0.2.47',
13
13
  packages=find_packages(),
14
14
  install_requires=[
15
15
  'requests',
File without changes
File without changes
File without changes
File without changes