ddata 0.2.0__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.
- ddata-0.2.0/PKG-INFO +38 -0
- ddata-0.2.0/README.md +21 -0
- ddata-0.2.0/ddata/__init__.py +12 -0
- ddata-0.2.0/ddata/date.py +148 -0
- ddata-0.2.0/ddata/loggor.py +30 -0
- ddata-0.2.0/ddata/test.py +2 -0
- ddata-0.2.0/ddata.egg-info/PKG-INFO +38 -0
- ddata-0.2.0/ddata.egg-info/SOURCES.txt +12 -0
- ddata-0.2.0/ddata.egg-info/dependency_links.txt +1 -0
- ddata-0.2.0/ddata.egg-info/entry_points.txt +3 -0
- ddata-0.2.0/ddata.egg-info/requires.txt +4 -0
- ddata-0.2.0/ddata.egg-info/top_level.txt +1 -0
- ddata-0.2.0/setup.cfg +4 -0
- ddata-0.2.0/setup.py +58 -0
ddata-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ddata
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: A Python data package
|
|
5
|
+
Home-page: https://github.com/flyphant/ddata
|
|
6
|
+
Author: flyphant
|
|
7
|
+
Author-email: 576938286@qq.com
|
|
8
|
+
License: UNKNOWN
|
|
9
|
+
Description: # ddata
|
|
10
|
+
|
|
11
|
+
#### 介绍
|
|
12
|
+
python 常用数据分析工具包
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#### 安装教程
|
|
16
|
+
pip install ddata
|
|
17
|
+
|
|
18
|
+
#### 使用说明
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#### 参与贡献
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#### 特技
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Keywords: python,package,sample
|
|
32
|
+
Platform: UNKNOWN
|
|
33
|
+
Classifier: Programming Language :: Python :: 3
|
|
34
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
35
|
+
Classifier: Operating System :: OS Independent
|
|
36
|
+
Requires-Python: >=3.6, <4
|
|
37
|
+
Description-Content-Type: text/markdown
|
|
38
|
+
Provides-Extra: dev
|
ddata-0.2.0/README.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
import datetime
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DateUtil:
|
|
7
|
+
def __init__(self):
|
|
8
|
+
pass
|
|
9
|
+
|
|
10
|
+
@staticmethod
|
|
11
|
+
def date_2_hyphen_date(date):
|
|
12
|
+
"""
|
|
13
|
+
转成中划线日期
|
|
14
|
+
:param date:
|
|
15
|
+
:return:
|
|
16
|
+
"""
|
|
17
|
+
res = date[0: 4] + '-' + date[4: 6] + '-'+date[6: 8]
|
|
18
|
+
return res
|
|
19
|
+
|
|
20
|
+
# 计算时间函数
|
|
21
|
+
@staticmethod
|
|
22
|
+
def timer(func):
|
|
23
|
+
def wrapper(*args, **kw):
|
|
24
|
+
start_time = time.time()
|
|
25
|
+
print(DateUtil.now(), '[%s] start to run program.........' % func.__name__)
|
|
26
|
+
ret = func(*args, **kw)
|
|
27
|
+
end_time = time.time()
|
|
28
|
+
# print(DateUtil.now(), "程序运行结束,共使用了{} 分钟".format(round((end_time - start_time) / 60, 2)))
|
|
29
|
+
print(DateUtil.now(), ' [%s] program is end, cost time: %.2f minute.........' % (func.__name__, round((end_time - start_time) / 60, 2)))
|
|
30
|
+
return ret
|
|
31
|
+
|
|
32
|
+
return wrapper
|
|
33
|
+
|
|
34
|
+
@staticmethod
|
|
35
|
+
def get_today():
|
|
36
|
+
formatter = "%Y%m%d"
|
|
37
|
+
today_val = datetime.date.today()
|
|
38
|
+
today = today_val.strftime(formatter)
|
|
39
|
+
return today
|
|
40
|
+
|
|
41
|
+
@staticmethod
|
|
42
|
+
def today(formatter):
|
|
43
|
+
"""
|
|
44
|
+
获取今天的日期的值
|
|
45
|
+
:param formatter: 日期的格式,默认为%Y%m%d,20170101
|
|
46
|
+
:return:
|
|
47
|
+
"""
|
|
48
|
+
today_val = datetime.date.today()
|
|
49
|
+
if formatter is None or formatter == "":
|
|
50
|
+
formatter = "%Y%m%d"
|
|
51
|
+
today = today_val.strftime(formatter)
|
|
52
|
+
return today
|
|
53
|
+
|
|
54
|
+
@staticmethod
|
|
55
|
+
def yesterday(formatter=None):
|
|
56
|
+
today_val = datetime.date.today()
|
|
57
|
+
timedelta = datetime.timedelta(days=1)
|
|
58
|
+
yesterday_val = today_val - timedelta
|
|
59
|
+
if formatter is None or formatter == "":
|
|
60
|
+
formatter = "%Y%m%d"
|
|
61
|
+
yesterday = yesterday_val.strftime(formatter)
|
|
62
|
+
return yesterday
|
|
63
|
+
|
|
64
|
+
@staticmethod
|
|
65
|
+
def now():
|
|
66
|
+
"""
|
|
67
|
+
获取当前的时间
|
|
68
|
+
:param formatter: 时间的格式,比如%Y-%m-%d %H:%M:%S
|
|
69
|
+
:return:
|
|
70
|
+
"""
|
|
71
|
+
formatter = "%Y-%m-%d %H:%M:%S.%f"
|
|
72
|
+
return datetime.datetime.now().strftime(formatter)[:-3]
|
|
73
|
+
|
|
74
|
+
@staticmethod
|
|
75
|
+
def formatter_now(formatter):
|
|
76
|
+
"""
|
|
77
|
+
获取当前的时间
|
|
78
|
+
:param formatter: 时间的格式,比如%Y-%m-%d %H:%M:%S
|
|
79
|
+
:return:
|
|
80
|
+
"""
|
|
81
|
+
if formatter is None or formatter == "":
|
|
82
|
+
formatter = "%Y-%m-%d %H:%M:%S"
|
|
83
|
+
|
|
84
|
+
return time.strftime(formatter, time.localtime())
|
|
85
|
+
|
|
86
|
+
@staticmethod
|
|
87
|
+
def n_day_ago(date, n):
|
|
88
|
+
"""
|
|
89
|
+
获取n天之前的日期
|
|
90
|
+
:param date:
|
|
91
|
+
:param n:
|
|
92
|
+
:return:
|
|
93
|
+
"""
|
|
94
|
+
if date is None or date == "":
|
|
95
|
+
date = datetime.date.today().strftime("%Y%m%d")
|
|
96
|
+
|
|
97
|
+
if n is None or n == "":
|
|
98
|
+
n = 1
|
|
99
|
+
|
|
100
|
+
one_day_ago = datetime.datetime.strptime(date, "%Y%m%d") + datetime.timedelta(
|
|
101
|
+
days=-n
|
|
102
|
+
)
|
|
103
|
+
return one_day_ago.strftime("%Y%m%d")
|
|
104
|
+
|
|
105
|
+
@staticmethod
|
|
106
|
+
def n_day_later(date, n):
|
|
107
|
+
"""
|
|
108
|
+
获取n天之后的日期
|
|
109
|
+
:param date:
|
|
110
|
+
:param n:
|
|
111
|
+
:return:
|
|
112
|
+
"""
|
|
113
|
+
if date is None or date == "":
|
|
114
|
+
date = datetime.date.today().strftime("%Y%m%d")
|
|
115
|
+
|
|
116
|
+
if n is None or n == "":
|
|
117
|
+
n = 1
|
|
118
|
+
|
|
119
|
+
one_day_ago = datetime.datetime.strptime(date, "%Y%m%d") + datetime.timedelta(
|
|
120
|
+
days=n
|
|
121
|
+
)
|
|
122
|
+
return one_day_ago.strftime("%Y%m%d")
|
|
123
|
+
|
|
124
|
+
@staticmethod
|
|
125
|
+
def almost_n_month_ago(date, n):
|
|
126
|
+
"""
|
|
127
|
+
近似获取n月之前的日期,
|
|
128
|
+
:param date:
|
|
129
|
+
:param n:
|
|
130
|
+
:return:
|
|
131
|
+
"""
|
|
132
|
+
if date is None or date == "":
|
|
133
|
+
date = datetime.date.today().strftime("%Y%m")
|
|
134
|
+
|
|
135
|
+
if n is None or n == "":
|
|
136
|
+
n = 1
|
|
137
|
+
|
|
138
|
+
date = date + "01"
|
|
139
|
+
one_day_ago = datetime.datetime.strptime(date, "%Y%m%d") + datetime.timedelta(
|
|
140
|
+
days=-n * 28
|
|
141
|
+
)
|
|
142
|
+
return one_day_ago.strftime("%Y%m")
|
|
143
|
+
|
|
144
|
+
@staticmethod
|
|
145
|
+
def timestamp_2_yyyy_mm(timestamp):
|
|
146
|
+
x = time.localtime(timestamp)
|
|
147
|
+
return time.strftime("%Y%m", x)
|
|
148
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import logging.config
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class MyLoggor():
|
|
5
|
+
# 配置日志记录器
|
|
6
|
+
logging.basicConfig(
|
|
7
|
+
level=logging.INFO,
|
|
8
|
+
format='%(asctime)s.%(msecs)03d %(levelname)s [%(threadName)s] %(message)s',
|
|
9
|
+
datefmt='%Y-%m-%d %H:%M:%S',
|
|
10
|
+
handlers=[logging.StreamHandler()]
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
def __get_logger(self):
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
return logger
|
|
16
|
+
|
|
17
|
+
def info(self, message):
|
|
18
|
+
self.__get_logger().info(message)
|
|
19
|
+
|
|
20
|
+
def warn(self, message):
|
|
21
|
+
self.__get_logger().warning(message)
|
|
22
|
+
|
|
23
|
+
def error(self):
|
|
24
|
+
self.__get_logger().error("hello")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
if __name__ == "__main__":
|
|
28
|
+
log = MyLoggor()
|
|
29
|
+
log.info("hello")
|
|
30
|
+
print("hello")
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ddata
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: A Python data package
|
|
5
|
+
Home-page: https://github.com/flyphant/ddata
|
|
6
|
+
Author: flyphant
|
|
7
|
+
Author-email: 576938286@qq.com
|
|
8
|
+
License: UNKNOWN
|
|
9
|
+
Description: # ddata
|
|
10
|
+
|
|
11
|
+
#### 介绍
|
|
12
|
+
python 常用数据分析工具包
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#### 安装教程
|
|
16
|
+
pip install ddata
|
|
17
|
+
|
|
18
|
+
#### 使用说明
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#### 参与贡献
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#### 特技
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Keywords: python,package,sample
|
|
32
|
+
Platform: UNKNOWN
|
|
33
|
+
Classifier: Programming Language :: Python :: 3
|
|
34
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
35
|
+
Classifier: Operating System :: OS Independent
|
|
36
|
+
Requires-Python: >=3.6, <4
|
|
37
|
+
Description-Content-Type: text/markdown
|
|
38
|
+
Provides-Extra: dev
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
setup.py
|
|
3
|
+
ddata/__init__.py
|
|
4
|
+
ddata/date.py
|
|
5
|
+
ddata/loggor.py
|
|
6
|
+
ddata/test.py
|
|
7
|
+
ddata.egg-info/PKG-INFO
|
|
8
|
+
ddata.egg-info/SOURCES.txt
|
|
9
|
+
ddata.egg-info/dependency_links.txt
|
|
10
|
+
ddata.egg-info/entry_points.txt
|
|
11
|
+
ddata.egg-info/requires.txt
|
|
12
|
+
ddata.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ddata
|
ddata-0.2.0/setup.cfg
ADDED
ddata-0.2.0/setup.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
import pathlib
|
|
3
|
+
|
|
4
|
+
# 获取当前目录
|
|
5
|
+
here = pathlib.Path(__file__).parent.resolve()
|
|
6
|
+
|
|
7
|
+
# 读取 README 文件内容作为长描述
|
|
8
|
+
long_description = (here / 'README.md').read_text(encoding='utf-8')
|
|
9
|
+
|
|
10
|
+
setup(
|
|
11
|
+
# 包名称
|
|
12
|
+
name='ddata',
|
|
13
|
+
# 版本号
|
|
14
|
+
version='0.2.0',
|
|
15
|
+
# 简短描述
|
|
16
|
+
description='A Python data package',
|
|
17
|
+
# 长描述,通常是 README 文件内容
|
|
18
|
+
long_description=long_description,
|
|
19
|
+
# 长描述内容类型
|
|
20
|
+
long_description_content_type='text/markdown',
|
|
21
|
+
# 项目主页(如果有)
|
|
22
|
+
url='https://github.com/flyphant/ddata',
|
|
23
|
+
# 作者信息
|
|
24
|
+
author='flyphant',
|
|
25
|
+
author_email='576938286@qq.com',
|
|
26
|
+
# 分类信息,用于 PyPI 上的分类搜索
|
|
27
|
+
classifiers=[
|
|
28
|
+
"Programming Language :: Python :: 3",
|
|
29
|
+
"License :: OSI Approved :: MIT License",
|
|
30
|
+
"Operating System :: OS Independent",
|
|
31
|
+
],
|
|
32
|
+
# 自动发现包内的所有 Python 包
|
|
33
|
+
packages=find_packages(),
|
|
34
|
+
# Python 版本要求
|
|
35
|
+
python_requires='>=3.6, <4',
|
|
36
|
+
# 安装时需要安装的依赖包
|
|
37
|
+
install_requires=[
|
|
38
|
+
'numpy',
|
|
39
|
+
],
|
|
40
|
+
# 可选的额外依赖,用于不同的功能或场景
|
|
41
|
+
extras_require={
|
|
42
|
+
'dev': ['pytest>=3.7'],
|
|
43
|
+
},
|
|
44
|
+
# 包数据,例如包含一些非 Python 文件(如果有)
|
|
45
|
+
package_data={
|
|
46
|
+
'my_package': ['data/*.txt'],
|
|
47
|
+
},
|
|
48
|
+
# 数据文件,会被安装到指定的目录(如果有)
|
|
49
|
+
# data_files=[('my_package_data', ['data/file1.txt', 'data/file2.txt'])],
|
|
50
|
+
# 命令行入口点,定义可以在命令行中执行的脚本
|
|
51
|
+
entry_points={
|
|
52
|
+
'console_commands': [
|
|
53
|
+
'my_command=my_package.my_module:main_function',
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
# 项目的关键字,用于搜索
|
|
57
|
+
keywords='python, package, sample',
|
|
58
|
+
)
|