staran 0.2.0__py3-none-any.whl → 0.2.2__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.
staran/__init__.py CHANGED
@@ -18,6 +18,7 @@ Staran - 简化的Python工具库
18
18
  1. Date工具 - 智能日期处理
19
19
  2. SQL工具 - 数据分析SQL生成
20
20
 
21
+
21
22
  快速开始:
22
23
  ---------
23
24
 
@@ -35,7 +36,10 @@ Date工具基本用法::
35
36
 
36
37
  SQL工具基本用法::
37
38
 
38
- from staran import TableSchema, FeatureGenerator
39
+ from staran import TableSchema, FeatureGenerator, SQLManager, DatabaseType
40
+
41
+ # 创建SQL管理器
42
+ sql_manager = SQLManager('my_database', DatabaseType.SPARK)
39
43
 
40
44
  # 定义表结构
41
45
  schema = TableSchema('user_behavior')
@@ -45,10 +49,27 @@ SQL工具基本用法::
45
49
  schema.add_field('status', 'string')
46
50
  schema.set_monthly_unique(True)
47
51
 
48
- # 生成特征SQL
49
- generator = FeatureGenerator(schema)
50
- sql = generator.generate_spark_sql()
51
- print(sql)
52
+ # 创建特征生成器
53
+ generator = FeatureGenerator(schema, sql_manager)
54
+
55
+ # 按类型生成特征表
56
+ table_name = generator.create_feature_table('aggregation', 2025, 7, 1)
57
+ print(f"生成特征表: {table_name}")
58
+
59
+ 特征类型控制::
60
+
61
+ from staran.sql import FeatureConfig, FeatureType
62
+
63
+ # 配置只生成基础特征
64
+ config = FeatureConfig()
65
+ config.enable_feature(FeatureType.MOM) # 启用环比特征
66
+ config.set_mom_periods([1]) # 只生成1个月环比
67
+
68
+ generator = FeatureGenerator(schema, sql_manager, config)
69
+
70
+ # 分别生成不同类型的特征表
71
+ agg_table = generator.create_feature_table('aggregation', 2025, 7, 1)
72
+ mom_table = generator.create_feature_table('mom', 2025, 7, 2)
52
73
 
53
74
  多种输出格式::
54
75
 
@@ -131,14 +152,16 @@ SQL工具:
131
152
 
132
153
  # 导入主要功能
133
154
  from .tools import Date
134
- from .sql import TableSchema, FeatureGenerator, SparkSQLGenerator
155
+ from .sql import TableSchema, FeatureGenerator, SparkSQLGenerator, SQLManager, DatabaseType
135
156
 
136
157
  # 主要导出
137
158
  __all__ = [
138
159
  'Date',
139
160
  'TableSchema',
140
161
  'FeatureGenerator',
141
- 'SparkSQLGenerator'
162
+ 'SparkSQLGenerator',
163
+ 'SQLManager',
164
+ 'DatabaseType'
142
165
  ]
143
166
 
144
167
  # 包信息
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.4
2
+ Name: staran
3
+ Version: 0.2.2
4
+ Summary: staran - 高性能Python工具库
5
+ Home-page: https://github.com/starlxa/staran
6
+ Author: StarAn
7
+ Author-email: starlxa@icloud.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Requires-Python: >=3.7
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: datetime
14
+ Requires-Dist: calendar
15
+ Requires-Dist: re
16
+ Dynamic: author
17
+ Dynamic: author-email
18
+ Dynamic: classifier
19
+ Dynamic: description
20
+ Dynamic: description-content-type
21
+ Dynamic: home-page
22
+ Dynamic: license-file
23
+ Dynamic: requires-dist
24
+ Dynamic: requires-python
25
+ Dynamic: summary
26
+
27
+ # Staran - 简化的Python工具库
28
+
29
+ ## 📦 轻量级Python实用工具集
30
+
31
+ Staran是一个基于Python标准库的实用工具库,提供日期处理、SQL生成等常用功能,无需复杂依赖。
32
+
33
+ ## 🚀 快速开始
34
+
35
+ ### 安装
36
+ ```bash
37
+ pip install staran
38
+ ```
39
+
40
+ ### Date工具 - 智能日期处理
41
+
42
+ ```python
43
+ from staran import Date
44
+
45
+ # 创建日期 - 智能格式记忆
46
+ date1 = Date('202504') # 输出: 202504 (记住年月格式)
47
+ date2 = Date('20250415') # 输出: 20250415 (记住完整格式)
48
+ date3 = Date(2025, 4, 15) # 输出: 2025-04-15
49
+
50
+ # 日期运算保持格式
51
+ new_date = date1.add_months(2) # 输出: 202506 (保持YYYYMM格式)
52
+ ```
53
+
54
+ ### SQL工具 - 数据分析SQL生成
55
+
56
+ ```python
57
+ from staran import TableSchema, FeatureGenerator
58
+
59
+ # 定义表结构
60
+ schema = TableSchema('user_behavior')
61
+ schema.add_primary_key('user_id', 'string')
62
+ schema.add_date_field('date', 'date')
63
+ schema.add_field('amount', 'decimal', aggregatable=True)
64
+ schema.add_field('status', 'string')
65
+ schema.set_monthly_unique(True)
66
+
67
+ # 生成特征SQL
68
+ generator = FeatureGenerator(schema)
69
+ sql = generator.generate_spark_sql()
70
+ print(sql)
71
+ ```
72
+
73
+ ## 📖 主要功能
74
+
75
+ ### 1. Date工具 - 智能格式记忆
76
+ Date类会根据输入格式自动设置默认输出格式:
77
+
78
+ | 输入方式 | 默认输出 | 说明 |
79
+ |---------|---------|------|
80
+ | `Date('202504')` | `202504` | 年月紧凑格式 |
81
+ | `Date('20250415')` | `20250415` | 完整紧凑格式 |
82
+ | `Date(2025, 4)` | `2025-04` | 年月格式 |
83
+ | `Date(2025, 4, 15)` | `2025-04-15` | 完整格式 |
84
+
85
+ ### 2. SQL工具 - 特征工程SQL生成
86
+ 基于表结构自动生成数据分析SQL,支持:
87
+
88
+ - **原始字段拷贝**:非聚合字段的智能拷贝
89
+ - **聚合统计**:sum/avg/min/max/count/variance/stddev
90
+ - **环比特征**:月度差分对比(MoM)
91
+ - **同比特征**:年度差分对比(YoY)
92
+ - **Spark SQL**:生成优化的Spark SQL代码
93
+
94
+ ```python
95
+ # 特征生成配置
96
+ from staran.sql import FeatureConfig
97
+
98
+ config = FeatureConfig()
99
+ config.set_aggregation_types(['sum', 'avg', 'max'])
100
+ config.set_mom_months([1, 3]) # 1月、3月环比
101
+
102
+ generator = FeatureGenerator(schema, config)
103
+ generator.print_feature_summary() # 查看特征统计
104
+ ```
105
+
106
+ ### 3. 多种输出格式(Date工具)
107
+ ```python
108
+ date = Date('202504')
109
+
110
+ # 默认格式(保持输入风格)
111
+ print(date) # 202504
112
+
113
+ # 常用格式
114
+ print(date.format_full()) # 2025-04-01
115
+ print(date.format_chinese()) # 2025年04月01日
116
+ print(date.format_year_month()) # 2025-04
117
+ print(date.format_compact()) # 20250401
118
+ ```
119
+
120
+ ### 4. 日期运算
121
+ ```python
122
+ date = Date('202504')
123
+
124
+ # 运算后保持原格式
125
+ next_month = date.add_months(1) # 202505
126
+ tomorrow = date.add_days(1) # 202504 (智能处理)
127
+
128
+ # 日期差计算
129
+ diff = date.difference(Date('202502')) # 天数差
130
+ ```
131
+
132
+ ## 🎯 设计特色
133
+
134
+ - **格式智能** - 自动记忆输入格式,保持输出一致性
135
+ - **零依赖** - 仅基于Python标准库
136
+ - **直观API** - 符合Python习惯的设计
137
+ - **类型安全** - 完整的参数验证和错误处理
138
+ - **代码生成** - 智能SQL特征工程代码生成
139
+
140
+ ## 📁 项目结构
141
+
142
+ ```
143
+ staran/
144
+ ├── __init__.py # 主包入口,包含使用示例
145
+ ├── tools/
146
+ │ ├── __init__.py # 工具模块
147
+ │ └── date.py # Date类实现
148
+ ├── sql/
149
+ │ ├── __init__.py # SQL模块
150
+ │ ├── schema.py # 表结构定义
151
+ │ ├── generator.py # 特征生成器
152
+ │ └── engines.py # SQL引擎(Spark等)
153
+ ├── setup.py # 安装配置
154
+ ├── README.md # 本文档
155
+ └── SQL_GUIDE.md # SQL工具详细指南
156
+ ```
157
+
158
+ ## 🧪 快速测试
159
+
160
+ ### Date工具测试
161
+ ```python
162
+ from staran import Date
163
+
164
+ # 测试格式记忆
165
+ date = Date('202504')
166
+ print(f"原始: {date}") # 202504
167
+ print(f"加2月: {date.add_months(2)}") # 202506
168
+
169
+ # 测试多格式输出
170
+ print(f"中文: {date.format_chinese()}") # 2025年04月01日
171
+ print(f"完整: {date.format_full()}") # 2025-04-01
172
+ ```
173
+
174
+ ### SQL工具测试
175
+ ```python
176
+ from staran import TableSchema, FeatureGenerator
177
+
178
+ # 定义简单表结构
179
+ schema = TableSchema('user_stats')
180
+ schema.add_primary_key('user_id', 'string')
181
+ schema.add_date_field('date', 'date')
182
+ schema.add_field('amount', 'decimal', aggregatable=True)
183
+ schema.set_monthly_unique(True)
184
+
185
+ # 生成并查看特征
186
+ generator = FeatureGenerator(schema)
187
+ print(f"生成特征数: {generator.get_feature_summary()['total']}")
188
+ print(generator.generate_spark_sql())
189
+ ```
190
+
191
+ ## 📄 许可证
192
+
193
+ MIT License
194
+
195
+ ---
196
+
197
+ **Staran** - 让Python工具使用更简单 🌟
@@ -0,0 +1,8 @@
1
+ staran/__init__.py,sha256=IzD8a-yQDXYzTNOgNTv5wD6HXmITPuYg5INjg3wfoCc,5871
2
+ staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
3
+ staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
4
+ staran-0.2.2.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
5
+ staran-0.2.2.dist-info/METADATA,sha256=5J9S_3ZIuPW3qDuOgdzpS50Mv2b_9Vqj04h5vsbwcwY,5331
6
+ staran-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ staran-0.2.2.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
8
+ staran-0.2.2.dist-info/RECORD,,
@@ -1,24 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: staran
3
- Version: 0.2.0
4
- Summary: staran - 高性能Python工具库
5
- Home-page: https://github.com/starlxa/staran
6
- Author: StarAn
7
- Author-email: starlxa@icloud.com
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: License :: OSI Approved :: MIT License
10
- Requires-Python: >=3.7
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
- Requires-Dist: datetime
14
- Requires-Dist: calendar
15
- Requires-Dist: re
16
- Dynamic: author
17
- Dynamic: author-email
18
- Dynamic: classifier
19
- Dynamic: description-content-type
20
- Dynamic: home-page
21
- Dynamic: license-file
22
- Dynamic: requires-dist
23
- Dynamic: requires-python
24
- Dynamic: summary
@@ -1,8 +0,0 @@
1
- staran/__init__.py,sha256=FdJTZ11EB1R2z70W8FsCSgudpbPE68rMEud19pp8VsU,5045
2
- staran/tools/__init__.py,sha256=KtudrYnxKD9HZEL4H-mrWlKrmsI3rYjJrLeC9YDTpG4,1054
3
- staran/tools/date.py,sha256=-QyEMWVx6czMuOIwcV7kR3gBMRVOwb5qevo7GEFSJKE,10488
4
- staran-0.2.0.dist-info/licenses/LICENSE,sha256=2EmsBIyDCono4iVXNpv5_px9qt2b7hfPq1WuyGVMNP4,1361
5
- staran-0.2.0.dist-info/METADATA,sha256=ReWJRHI_LYkUc4YWsBTsX2cqCA3XKyJgtm65jAPLjOI,634
6
- staran-0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
- staran-0.2.0.dist-info/top_level.txt,sha256=NOUZtXSh5oSIEjHrC0lQ9WmoKtD010Q00dghWyag-Zs,7
8
- staran-0.2.0.dist-info/RECORD,,
File without changes