utilskit 0.2.17__tar.gz → 0.2.18__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.
- utilskit-0.2.18/PKG-INFO +148 -0
- utilskit-0.2.18/README.md +129 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/pyproject.toml +1 -1
- {utilskit-0.2.17 → utilskit-0.2.18}/test/test.py +41 -1
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/repeatutils/repeatutils.py +358 -354
- utilskit-0.2.18/utilskit.egg-info/PKG-INFO +148 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit.egg-info/top_level.txt +1 -0
- utilskit-0.2.17/PKG-INFO +0 -98
- utilskit-0.2.17/README.md +0 -79
- utilskit-0.2.17/utilskit.egg-info/PKG-INFO +0 -98
- {utilskit-0.2.17 → utilskit-0.2.18}/MANIFEST.in +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/setup.cfg +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/classificationutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/classificationutils/classificationutils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/dataframeutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/dataframeutils/dataframeutils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/dbutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/dbutils/dbutils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/plotutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/plotutils/plotutils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/repeatutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/timeutils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/timeutils/timeutils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/utils/__init__.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit/utils/utils.py +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit.egg-info/SOURCES.txt +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit.egg-info/dependency_links.txt +0 -0
- {utilskit-0.2.17 → utilskit-0.2.18}/utilskit.egg-info/requires.txt +0 -0
utilskit-0.2.18/PKG-INFO
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: utilskit
|
|
3
|
+
Version: 0.2.18
|
|
4
|
+
Summary: 다양한 편의성 함수 모음 패키지
|
|
5
|
+
Author-email: kimyh <kim_yh663927@naver.com>
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
8
|
+
Classifier: Operating System :: OS Independent
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
Requires-Dist: matplotlib==3.10.3
|
|
12
|
+
Requires-Dist: numpy==2.2.6
|
|
13
|
+
Requires-Dist: pandas==2.3.1
|
|
14
|
+
Requires-Dist: PyMySQL==1.1.1
|
|
15
|
+
Requires-Dist: SQLAlchemy==2.0.41
|
|
16
|
+
Requires-Dist: tqdm==4.67.1
|
|
17
|
+
Requires-Dist: xlrd==2.0.2
|
|
18
|
+
Requires-Dist: openpyxl==3.1.5
|
|
19
|
+
|
|
20
|
+
# Install
|
|
21
|
+
```cmd
|
|
22
|
+
pip install utilskit
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
# 개요
|
|
26
|
+
|
|
27
|
+
이 패키지는 다양한 전처리 작업을 효율적으로 처리할 수 있도록 설계된 커스텀 유틸리티 모음입니다. 데이터 정제, 결측치 처리, 반복 패턴 탐지, 시계열 정렬 및 그룹화 이미지 생성 편의성 등 데이터 분석 전반에 걸친 반복 작업들을 간결하게 수행할 수 있도록 돕습니다. 분석가와 엔지니어 모두를 위한 실용적인 도구로, 빠르고 안정적인 데이터 분석 파이프라인 구축에 기여할 수 있습니다.
|
|
28
|
+
|
|
29
|
+
# Features
|
|
30
|
+
|
|
31
|
+
## - classificationutils
|
|
32
|
+
|
|
33
|
+
| 함수명 | 목적 |
|
|
34
|
+
| --------------------------------------------- | --------------------- |
|
|
35
|
+
| [confucsion_matrix](docs/confusion_matrix.md) | confusion matrix 생성 |
|
|
36
|
+
|
|
37
|
+
## - dataframeutils
|
|
38
|
+
|
|
39
|
+
| 함수명 | 목적 |
|
|
40
|
+
| ------------------------------------------ | --------------------- |
|
|
41
|
+
| [read_df](docs/read_df.md) | 데이터 불러오기 |
|
|
42
|
+
| [utc2kor](docs/utc2kor.md) | 시간대 변경 |
|
|
43
|
+
| [adnormal2nan](docs/adnormal2nan.md) | 이상치 --> 결측치 |
|
|
44
|
+
| [time_filling](docs/time_filling.md) | 시간 확장 |
|
|
45
|
+
| [isdfvalid](docs/isdfvalid.md) | dataframe 유효성 검증 |
|
|
46
|
+
| [fill_repeat_nan](docs/fill_repeat_nan.md) | 반복성 결측치 보정 |
|
|
47
|
+
| [pin2nan](docs/pin2nan.md) | 핀포인트 결측치 보정 |
|
|
48
|
+
|
|
49
|
+
## - dbutils
|
|
50
|
+
|
|
51
|
+
| 함수명 | 목적 |
|
|
52
|
+
| ---------------------------- | ---------------------- |
|
|
53
|
+
| [query2db](docs/query2db.md) | Query 를 DB에 커밋 |
|
|
54
|
+
| [df2db](docs/df2db.md) | dataframe을 DB 에 삽입 |
|
|
55
|
+
|
|
56
|
+
## - plotutils
|
|
57
|
+
|
|
58
|
+
| 함수명 | 목적 |
|
|
59
|
+
| ------------------------------------ | ----------- |
|
|
60
|
+
| [draw_plot](docs/draw_plot.md) | 이미지 생성 |
|
|
61
|
+
| [draw_subplot](docs/draw_subplot.md) | |
|
|
62
|
+
|
|
63
|
+
## - repeatutils
|
|
64
|
+
|
|
65
|
+
| 함수명 | 목적 |
|
|
66
|
+
| -------------------------------------- | ------------------------- |
|
|
67
|
+
| [get_section](docs/get_section.md) | 반복 구간 산출 |
|
|
68
|
+
| [section_union](docs/section_union.md) | 구간과 구간과의 겹침 연산 |
|
|
69
|
+
|
|
70
|
+
## - timeutils
|
|
71
|
+
|
|
72
|
+
| 함수명 | 목적 |
|
|
73
|
+
| -------------------------------------- | ------------------------------------------ |
|
|
74
|
+
| [get_now](docs/get_now.md) | 사용자 지정 방식의 현재 시간 추출 |
|
|
75
|
+
| [time_measure](docs/time_measure.md) | 정수 --> 시, 분, 초 변환 |
|
|
76
|
+
| [get_date_list](docs/get_date_list.md) | 입력한 기준값을 통해 전체 날짜 리스트 생성 |
|
|
77
|
+
|
|
78
|
+
## - utils
|
|
79
|
+
|
|
80
|
+
| 함수명 | 목적 |
|
|
81
|
+
| ---------------------------------------- | ------------------- |
|
|
82
|
+
| [envs_setting](docs/envs_setting.md) | 각종 랜덤 시드 설정 |
|
|
83
|
+
| [get_error_info](docs/get_error_info.md) | |
|
|
84
|
+
|
|
85
|
+
# Version
|
|
86
|
+
## 2025-11-24 ver 0.2.18
|
|
87
|
+
|
|
88
|
+
에러수정
|
|
89
|
+
|
|
90
|
+
- repeatutils 의 section_union 함수에서 mode 에 -, +, & 외의 값 입력시 에러 도출하는 유효성 검증 부분 추가
|
|
91
|
+
|
|
92
|
+
최적화
|
|
93
|
+
|
|
94
|
+
- README, docs 구조 변경
|
|
95
|
+
|
|
96
|
+
## 0.2.17
|
|
97
|
+
- logutils 기능 완전 삭제 > logie 패키지로 분리
|
|
98
|
+
## 0.2.16
|
|
99
|
+
- repeatutils 의 section_union 에서 mode 를 & 으로 하고 sub 또는 main section 이 빈 리스트인 경우 빈리스트 [] 를 리턴 하도록 수정
|
|
100
|
+
### 0.2.16.1
|
|
101
|
+
- 조건문에서 & 앞에 띄어쓰기가 하나 포함되어있어 정상적 연산이 되지 않는 부분 수정
|
|
102
|
+
## 0.2.15
|
|
103
|
+
- repeatutils 의 section_union 에서 결과가 빈값일때 에러가 나는 현상 수정
|
|
104
|
+
## 0.2.14
|
|
105
|
+
- repeatutils 의 min_key 를 설정했을 때 min_equal=False 로 두는 경우 정상적인 구간 탐색을 못하는 현상 수정
|
|
106
|
+
## 0.2.13
|
|
107
|
+
- repeatutils 에 section_union 함수 추가
|
|
108
|
+
### 0.2.13.1
|
|
109
|
+
- rpu.get_section 을 써서 에러가 난 부분 수정
|
|
110
|
+
## 0.2.12
|
|
111
|
+
- dataframeutils 의 fill_repeat_nan 함수가 NaN 이 딱 하나만 있는 경우 보정하지 못하는 현상 수정
|
|
112
|
+
## 0.2.11
|
|
113
|
+
- dataframeutils 의 fill_repeat_nan 함수가 3 이하 반복되는 NaN 이 아닌 3 이상 반복되는 NaN 구간에 대해 보정하는 현상 수정
|
|
114
|
+
## 0.2.10
|
|
115
|
+
- repeatutils 에서 between 이 정상작동하지 않는 현상 수정
|
|
116
|
+
### 0.2.10.1
|
|
117
|
+
- 버전 업로드 에러 수정
|
|
118
|
+
### 0.2.10.2
|
|
119
|
+
- 함수 내부 print 제거
|
|
120
|
+
## 0.2.9
|
|
121
|
+
- repeatuils 에서 정수형 list 를 넣었을때 float 으로 변경되도록 수정
|
|
122
|
+
## 0.2.8
|
|
123
|
+
- dbutils 에서 db 의 컬럼명을 리스트로 추출하는 get_db_name 함수 추가
|
|
124
|
+
### 0.2.8.1
|
|
125
|
+
- __all__ 에 get_db_name 추가해서 사용가능하도록 설정
|
|
126
|
+
## 0.2.7
|
|
127
|
+
- repeatutils 에서 정수형 list 를 넣었을때 key 를 통한 구간 파악이 되지 않는 현상 수정
|
|
128
|
+
## 0.2.6
|
|
129
|
+
- dataframeutils 의 fill_repeat_nan 의 에러 수정
|
|
130
|
+
## 0.2.5
|
|
131
|
+
- xlsx 읽는 패키지 install 추가
|
|
132
|
+
## 0.2.4
|
|
133
|
+
- repeatutils 의 에러 제거
|
|
134
|
+
## 0.2.3
|
|
135
|
+
- dbutils 에 대한 업데이트 진행
|
|
136
|
+
## 0.2.2
|
|
137
|
+
- build 방식 변경
|
|
138
|
+
## 0.2.1
|
|
139
|
+
- repeatutila 에 get_section 함수 추가
|
|
140
|
+
## 0.2.0
|
|
141
|
+
- 정식 최초 배포버전
|
|
142
|
+
- 각 함수의 사용성 강화 및 비활성 함수 지정
|
|
143
|
+
## 0.1.2
|
|
144
|
+
- repeatutils 의 get_repeat_section 에서 하나의 값이 여러 구간에서 반복될때 마지막 구간만 나오는 부분 수정
|
|
145
|
+
- repeatutils 의 get_repeat_section 및 get_stan_repeat_section 에서 추출되는 구간의 마지막 값이 +1 이 되는 부분 수정
|
|
146
|
+
## 0.1.1
|
|
147
|
+
- repeatutils.py 추가
|
|
148
|
+
- utils.py 에서 repeat 관련 함수 제거
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Install
|
|
2
|
+
```cmd
|
|
3
|
+
pip install utilskit
|
|
4
|
+
```
|
|
5
|
+
|
|
6
|
+
# 개요
|
|
7
|
+
|
|
8
|
+
이 패키지는 다양한 전처리 작업을 효율적으로 처리할 수 있도록 설계된 커스텀 유틸리티 모음입니다. 데이터 정제, 결측치 처리, 반복 패턴 탐지, 시계열 정렬 및 그룹화 이미지 생성 편의성 등 데이터 분석 전반에 걸친 반복 작업들을 간결하게 수행할 수 있도록 돕습니다. 분석가와 엔지니어 모두를 위한 실용적인 도구로, 빠르고 안정적인 데이터 분석 파이프라인 구축에 기여할 수 있습니다.
|
|
9
|
+
|
|
10
|
+
# Features
|
|
11
|
+
|
|
12
|
+
## - classificationutils
|
|
13
|
+
|
|
14
|
+
| 함수명 | 목적 |
|
|
15
|
+
| --------------------------------------------- | --------------------- |
|
|
16
|
+
| [confucsion_matrix](docs/confusion_matrix.md) | confusion matrix 생성 |
|
|
17
|
+
|
|
18
|
+
## - dataframeutils
|
|
19
|
+
|
|
20
|
+
| 함수명 | 목적 |
|
|
21
|
+
| ------------------------------------------ | --------------------- |
|
|
22
|
+
| [read_df](docs/read_df.md) | 데이터 불러오기 |
|
|
23
|
+
| [utc2kor](docs/utc2kor.md) | 시간대 변경 |
|
|
24
|
+
| [adnormal2nan](docs/adnormal2nan.md) | 이상치 --> 결측치 |
|
|
25
|
+
| [time_filling](docs/time_filling.md) | 시간 확장 |
|
|
26
|
+
| [isdfvalid](docs/isdfvalid.md) | dataframe 유효성 검증 |
|
|
27
|
+
| [fill_repeat_nan](docs/fill_repeat_nan.md) | 반복성 결측치 보정 |
|
|
28
|
+
| [pin2nan](docs/pin2nan.md) | 핀포인트 결측치 보정 |
|
|
29
|
+
|
|
30
|
+
## - dbutils
|
|
31
|
+
|
|
32
|
+
| 함수명 | 목적 |
|
|
33
|
+
| ---------------------------- | ---------------------- |
|
|
34
|
+
| [query2db](docs/query2db.md) | Query 를 DB에 커밋 |
|
|
35
|
+
| [df2db](docs/df2db.md) | dataframe을 DB 에 삽입 |
|
|
36
|
+
|
|
37
|
+
## - plotutils
|
|
38
|
+
|
|
39
|
+
| 함수명 | 목적 |
|
|
40
|
+
| ------------------------------------ | ----------- |
|
|
41
|
+
| [draw_plot](docs/draw_plot.md) | 이미지 생성 |
|
|
42
|
+
| [draw_subplot](docs/draw_subplot.md) | |
|
|
43
|
+
|
|
44
|
+
## - repeatutils
|
|
45
|
+
|
|
46
|
+
| 함수명 | 목적 |
|
|
47
|
+
| -------------------------------------- | ------------------------- |
|
|
48
|
+
| [get_section](docs/get_section.md) | 반복 구간 산출 |
|
|
49
|
+
| [section_union](docs/section_union.md) | 구간과 구간과의 겹침 연산 |
|
|
50
|
+
|
|
51
|
+
## - timeutils
|
|
52
|
+
|
|
53
|
+
| 함수명 | 목적 |
|
|
54
|
+
| -------------------------------------- | ------------------------------------------ |
|
|
55
|
+
| [get_now](docs/get_now.md) | 사용자 지정 방식의 현재 시간 추출 |
|
|
56
|
+
| [time_measure](docs/time_measure.md) | 정수 --> 시, 분, 초 변환 |
|
|
57
|
+
| [get_date_list](docs/get_date_list.md) | 입력한 기준값을 통해 전체 날짜 리스트 생성 |
|
|
58
|
+
|
|
59
|
+
## - utils
|
|
60
|
+
|
|
61
|
+
| 함수명 | 목적 |
|
|
62
|
+
| ---------------------------------------- | ------------------- |
|
|
63
|
+
| [envs_setting](docs/envs_setting.md) | 각종 랜덤 시드 설정 |
|
|
64
|
+
| [get_error_info](docs/get_error_info.md) | |
|
|
65
|
+
|
|
66
|
+
# Version
|
|
67
|
+
## 2025-11-24 ver 0.2.18
|
|
68
|
+
|
|
69
|
+
에러수정
|
|
70
|
+
|
|
71
|
+
- repeatutils 의 section_union 함수에서 mode 에 -, +, & 외의 값 입력시 에러 도출하는 유효성 검증 부분 추가
|
|
72
|
+
|
|
73
|
+
최적화
|
|
74
|
+
|
|
75
|
+
- README, docs 구조 변경
|
|
76
|
+
|
|
77
|
+
## 0.2.17
|
|
78
|
+
- logutils 기능 완전 삭제 > logie 패키지로 분리
|
|
79
|
+
## 0.2.16
|
|
80
|
+
- repeatutils 의 section_union 에서 mode 를 & 으로 하고 sub 또는 main section 이 빈 리스트인 경우 빈리스트 [] 를 리턴 하도록 수정
|
|
81
|
+
### 0.2.16.1
|
|
82
|
+
- 조건문에서 & 앞에 띄어쓰기가 하나 포함되어있어 정상적 연산이 되지 않는 부분 수정
|
|
83
|
+
## 0.2.15
|
|
84
|
+
- repeatutils 의 section_union 에서 결과가 빈값일때 에러가 나는 현상 수정
|
|
85
|
+
## 0.2.14
|
|
86
|
+
- repeatutils 의 min_key 를 설정했을 때 min_equal=False 로 두는 경우 정상적인 구간 탐색을 못하는 현상 수정
|
|
87
|
+
## 0.2.13
|
|
88
|
+
- repeatutils 에 section_union 함수 추가
|
|
89
|
+
### 0.2.13.1
|
|
90
|
+
- rpu.get_section 을 써서 에러가 난 부분 수정
|
|
91
|
+
## 0.2.12
|
|
92
|
+
- dataframeutils 의 fill_repeat_nan 함수가 NaN 이 딱 하나만 있는 경우 보정하지 못하는 현상 수정
|
|
93
|
+
## 0.2.11
|
|
94
|
+
- dataframeutils 의 fill_repeat_nan 함수가 3 이하 반복되는 NaN 이 아닌 3 이상 반복되는 NaN 구간에 대해 보정하는 현상 수정
|
|
95
|
+
## 0.2.10
|
|
96
|
+
- repeatutils 에서 between 이 정상작동하지 않는 현상 수정
|
|
97
|
+
### 0.2.10.1
|
|
98
|
+
- 버전 업로드 에러 수정
|
|
99
|
+
### 0.2.10.2
|
|
100
|
+
- 함수 내부 print 제거
|
|
101
|
+
## 0.2.9
|
|
102
|
+
- repeatuils 에서 정수형 list 를 넣었을때 float 으로 변경되도록 수정
|
|
103
|
+
## 0.2.8
|
|
104
|
+
- dbutils 에서 db 의 컬럼명을 리스트로 추출하는 get_db_name 함수 추가
|
|
105
|
+
### 0.2.8.1
|
|
106
|
+
- __all__ 에 get_db_name 추가해서 사용가능하도록 설정
|
|
107
|
+
## 0.2.7
|
|
108
|
+
- repeatutils 에서 정수형 list 를 넣었을때 key 를 통한 구간 파악이 되지 않는 현상 수정
|
|
109
|
+
## 0.2.6
|
|
110
|
+
- dataframeutils 의 fill_repeat_nan 의 에러 수정
|
|
111
|
+
## 0.2.5
|
|
112
|
+
- xlsx 읽는 패키지 install 추가
|
|
113
|
+
## 0.2.4
|
|
114
|
+
- repeatutils 의 에러 제거
|
|
115
|
+
## 0.2.3
|
|
116
|
+
- dbutils 에 대한 업데이트 진행
|
|
117
|
+
## 0.2.2
|
|
118
|
+
- build 방식 변경
|
|
119
|
+
## 0.2.1
|
|
120
|
+
- repeatutila 에 get_section 함수 추가
|
|
121
|
+
## 0.2.0
|
|
122
|
+
- 정식 최초 배포버전
|
|
123
|
+
- 각 함수의 사용성 강화 및 비활성 함수 지정
|
|
124
|
+
## 0.1.2
|
|
125
|
+
- repeatutils 의 get_repeat_section 에서 하나의 값이 여러 구간에서 반복될때 마지막 구간만 나오는 부분 수정
|
|
126
|
+
- repeatutils 의 get_repeat_section 및 get_stan_repeat_section 에서 추출되는 구간의 마지막 값이 +1 이 되는 부분 수정
|
|
127
|
+
## 0.1.1
|
|
128
|
+
- repeatutils.py 추가
|
|
129
|
+
- utils.py 에서 repeat 관련 함수 제거
|
|
@@ -420,6 +420,46 @@ def main17():
|
|
|
420
420
|
# section = rpu.get_section(data=data_tf, repeat=w_re, key=75)
|
|
421
421
|
|
|
422
422
|
|
|
423
|
+
def main18():
|
|
424
|
+
from utilskit import repeatutils as rpu
|
|
425
|
+
data_ary = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5]
|
|
426
|
+
_c_section1 = rpu.get_section(
|
|
427
|
+
data=data_ary,
|
|
428
|
+
repeat=2,
|
|
429
|
+
max_key=4,
|
|
430
|
+
min_key=2,
|
|
431
|
+
between=True
|
|
432
|
+
)
|
|
433
|
+
c_section1 = _c_section1['2<=<=4']
|
|
434
|
+
_c_section2 = rpu.get_section(
|
|
435
|
+
data=data_ary,
|
|
436
|
+
repeat=2,
|
|
437
|
+
max_key=5,
|
|
438
|
+
min_key=3,
|
|
439
|
+
between=True
|
|
440
|
+
)
|
|
441
|
+
c_section2 = _c_section2['3<=<=5']
|
|
442
|
+
print(f'main_section : {c_section1}')
|
|
443
|
+
print(f'sub_section : {c_section2}')
|
|
444
|
+
union_section = rpu.section_union(
|
|
445
|
+
main_section=c_section1,
|
|
446
|
+
sub_section=c_section2,
|
|
447
|
+
mode='-'
|
|
448
|
+
)
|
|
449
|
+
print(f'union - : {union_section}')
|
|
450
|
+
union_section = rpu.section_union(
|
|
451
|
+
main_section=c_section1,
|
|
452
|
+
sub_section=c_section2,
|
|
453
|
+
mode='+'
|
|
454
|
+
)
|
|
455
|
+
print(f'union + : {union_section}')
|
|
456
|
+
union_section = rpu.section_union(
|
|
457
|
+
main_section=c_section1,
|
|
458
|
+
sub_section=c_section2,
|
|
459
|
+
mode='&'
|
|
460
|
+
)
|
|
461
|
+
print(f'union & : {union_section}')
|
|
462
|
+
|
|
423
463
|
if __name__ == '__main__':
|
|
424
464
|
|
|
425
465
|
# from utilskit import logutils as lu
|
|
@@ -431,4 +471,4 @@ if __name__ == '__main__':
|
|
|
431
471
|
# lu.log_sort(
|
|
432
472
|
# log_path='./log3'
|
|
433
473
|
# )
|
|
434
|
-
|
|
474
|
+
main18()
|