xython 3.0.2__tar.gz → 3.0.3__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 (30) hide show
  1. xython-3.0.3/PKG-INFO +197 -0
  2. xython-3.0.3/README.md +181 -0
  3. {xython-3.0.2 → xython-3.0.3}/setup.py +2 -2
  4. {xython-3.0.2 → xython-3.0.3}/src/xython/__init__.py +1 -1
  5. {xython-3.0.2 → xython-3.0.3}/src/xython/pyclick.py +2 -125
  6. xython-3.0.3/src/xython.egg-info/PKG-INFO +197 -0
  7. {xython-3.0.2 → xython-3.0.3}/src/xython.egg-info/SOURCES.txt +1 -1
  8. xython-3.0.3/src/xython.egg-info/requires.txt +13 -0
  9. xython-3.0.2/PKG-INFO +0 -277
  10. xython-3.0.2/README.md +0 -262
  11. xython-3.0.2/src/xython/mygrid.py +0 -3791
  12. xython-3.0.2/src/xython.egg-info/PKG-INFO +0 -277
  13. {xython-3.0.2 → xython-3.0.3}/MANIFEST.in +0 -0
  14. {xython-3.0.2 → xython-3.0.3}/requirements.txt +0 -0
  15. {xython-3.0.2 → xython-3.0.3}/setup.cfg +0 -0
  16. {xython-3.0.2 → xython-3.0.3}/src/xython/anydb.py +0 -0
  17. {xython-3.0.2 → xython-3.0.3}/src/xython/basic_data.py +0 -0
  18. {xython-3.0.2 → xython-3.0.3}/src/xython/ganada.py +0 -0
  19. {xython-3.0.2 → xython-3.0.3}/src/xython/han.py +0 -0
  20. {xython-3.0.2 → xython-3.0.3}/src/xython/jfinder.py +0 -0
  21. {xython-3.0.2 → xython-3.0.3}/src/xython/mailmail.py +0 -0
  22. {xython-3.0.2 → xython-3.0.3}/src/xython/pcell.py +0 -0
  23. {xython-3.0.2 → xython-3.0.3}/src/xython/pcell_event.py +0 -0
  24. {xython-3.0.2 → xython-3.0.3}/src/xython/pynal.py +0 -0
  25. {xython-3.0.2 → xython-3.0.3}/src/xython/scolor.py +0 -0
  26. {xython-3.0.2 → xython-3.0.3}/src/xython/xy_list.py +0 -0
  27. {xython-3.0.2 → xython-3.0.3}/src/xython/youtil.py +0 -0
  28. {xython-3.0.2 → xython-3.0.3}/src/xython.egg-info/dependency_links.txt +0 -0
  29. {xython-3.0.2 → xython-3.0.3}/src/xython.egg-info/not-zip-safe +0 -0
  30. {xython-3.0.2 → xython-3.0.3}/src/xython.egg-info/top_level.txt +0 -0
xython-3.0.3/PKG-INFO ADDED
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.1
2
+ Name: xython
3
+ Version: 3.0.3
4
+ Summary: EXCEL, WORD, OUTLOOK, REGEX, COLORING, HWP BY PYTHON
5
+ Home-page: https://www.xython.co.kr
6
+ Author: sjpkorea
7
+ Author-email: sjpkorea@naver.com
8
+ License: UNKNOWN
9
+ Download-URL: https://github.com/sjpark/xython/archive/v3.0.2.tar.gz
10
+ Project-URL: Documentation, https://sjpkorea.github.io/xython.github.io/
11
+ Project-URL: Link 1, https://www.xython.co.kr
12
+ Description: ## About xython module / 개요
13
+ Functional Programming for Excel, Hwp, Word, Outlook, Color, Etc by win32com<br>
14
+ win32com으로 만든 함수프로그램 (함수들을 사용해서 업무자동화를 위한 방법)
15
+
16
+ ### Manual / 사용법
17
+ oficial document : https://sjpkorea.github.io/xython.github.io/ <br>
18
+ oficial website : www.xython.co.kr (Korean base) <br>
19
+
20
+ ### Components / 구성은
21
+
22
+ - anydb : for Database / sqlite와 pandas 를 좀더 쉽게 사용할수있도록 만든것
23
+ - basic_data : xython package for general enum / xython패키지에서 사용되는 전반적인 공유 자료들을 저장하는 곳
24
+ - ganada : for Word / 워드를 다루기위해 만든 것
25
+ - han : for hwp / 아래아 한글을 다루기위해 만든 것 (*** New)
26
+ - jfinder : for Regex / 정규표현식을 좀더 편하게 사용하도록 만든 것
27
+ - mailmail : for outlook / outlook을 다루는것
28
+ - pcell : for Excel / 엑셀을 다루는 것
29
+ - pcell_event : for Excel Event / 엑셀의 이벤트를 다루는것
30
+ - pyclick : for KEyboard & Mouse control / 키보드와 마우스를 다루는 모듈
31
+ - pynal : for Date & Time / 시간과 날짜를 다루는것
32
+ - scolor : for Color / 색의 RGB값을 편하게 사용가능하도록 만든 것
33
+ - xy_list : New List Type / 1부터 시작하는 List 자료형
34
+ - youtil : utilities / 이러저런 문장이나 시간등을 변환하는데 도움이되는 것
35
+
36
+ ### Brief / 개괄적인 설명
37
+ this is target for easy RPA system of office work<br>
38
+ It composed of several python files, and basic concept is function style<br>
39
+ total over the 2500 functions in this package<br>
40
+ please see how to use for this package in xython.co.kr<br>
41
+ now under making GUI toolkit for easy & no installing for python for this package<br>
42
+
43
+ 이모듈은 업무용으로 많이 사용하는 엑셀 , 색, 정규표현식, 등에 대하여 Python과 win32com을 기본으로 사용하여 각기 새롭게 모듈을 만들어서 좀더 쉽고 편하게 사용하고 만들자는 것입니다
44
+ 자동화는 각자의 사용에 대한<br>
45
+ 만든 이유는 우리가 업무등을 하는 입장에서, 손으로 작업하기에는 양이 많고, 그렇다고
46
+ 계속 반복적으로 일어나는 일은 아니며, VBA등을 만들어서 사용하기에는 어렵고 힘든 부분에 대해서<br>
47
+ 파이썬이라는 훌룡한 언어를 위용하여, 좀더 쉽고 간결하게 몇가지 기능만 배워도 20줄안으로 자신만의 코드를
48
+ 만들어 사용할수있는 기준을 만들기 위한 것입니다<br>
49
+ 또한 보통 많이 사용하는 코드들은 첨부된 sample코드를 보시거나 저의 사이트에 와서 비슷한것을 다운 받은후
50
+ 변경해서 사용하시기를 추천 드립니다<br>
51
+ 좀더 편한 업무의 일을 하기위한 것입니다<br>
52
+
53
+ ### 개괄적인 설명
54
+ | |모듈이름| 설명 |
55
+ |------|---|-------------------------------------------|
56
+ |1 |anydb| sqlite와 pandas 를 좀더 쉽게 사용할수있도록 만든것 |
57
+ |2 |basic_data | 패키지에서 사용되는 전반적인 공유 자료들을 저장하는 곳 |
58
+ |3 |ganada | 워드를 다루기위해 만든 것 |
59
+ |4 |jfinder | 정규표현식을 좀더 편하게 사용하도록 만든 것 |
60
+ |5 |mailmail | outlook을 다루는것 |
61
+ |6 |pcell | 엑셀을 다루는 것 |
62
+ |7 |pcell_event | 엑셀의 이벤트를 다루는것 |
63
+ |8 |pyclick | 키보드와 마우스를 다루는 모듈 |
64
+ |9 |pynal | 시간과 날짜를 다루는것 |
65
+ |10|scolor | 색의 RGB값을 편하게 사용가능하도록 만든 것 |
66
+ |11|youtil | 이러저런 문장이나 시간등을 변환하는데 도움이되는 것 |
67
+ <br>
68
+
69
+ ![img_1.png](img_1.png)
70
+ <br>
71
+ ### Version History / 버전 변화
72
+ - 1.15.0 : word를 위한 ganada모듈을 전반적으로 많이 Update함
73
+ - 1.16.0 : applied docstring style for all files
74
+ - 1.17.0 : connected with github document system
75
+ - 1.18.0 : 최적화 진행중, 일부 함수들 추가 및 삭제
76
+ - 1.19.0 : 최적화 진행중
77
+ - 1.20.0 : 최적화 진행중
78
+ - 2.0.0 : 전체적으로 정리 및 고정화
79
+ - 2.1.0 : 전체적으로 변경하였으며, han으로 hwp를 사용하는 새로운 모듈을 만듦
80
+ - 2.2.0 : han과 ganada의 함수이름을 통일 시키는 부분을 변경하고, han을 많이 추가함
81
+ - 3.0.1 : 전체적으로 최적화를 실시 (잘못해서 기존의 자료들을 전부 삭제..ㅠㅠ)
82
+ - 3.0.3 : mygrid를 별도의 패키지(xygrid)로 분리
83
+
84
+
85
+ ### xython은
86
+ 자주 사용하는 대부분의 기능을 함수로 만들고, 함수를 여러 개 사용하여 원하는 기능을 만드는 것
87
+ - 공통의 기준 용어를 사용한다
88
+ - 공통된 함수 이름의 작성기준
89
+ - 엑셀의 VBA는 사용하기 어려워 Python을 이용하여 쉽게 엑셀의 기능을 사용하도록 만들고 싶었다
90
+ - 이런 파이썬의 새로운 모듈을 만들어서 여러사람들이 쉽게 만들 수 있도록 하고 싶었다
91
+ - 또한 엑셀의 메뉴바를 만들어 기능을 쉽게 만들고 싶었다
92
+ - 누군가 만들어 놓은 좋은 코드를 쉽게 공유가 가능하도록 하고 싶었다
93
+ - 공유는 버튼을 누르면 자동으로 실행되도록 하고 싶었다(아직…)
94
+ - 자신만이 사용하고 싶은 코드는 따로 사용이 가능하도록 하고 싶었다
95
+ - 다른나라의 언어로 편하게 사용가능하도록 변경 예정
96
+
97
+ ![img_2.png](img_2.png)
98
+
99
+
100
+
101
+
102
+ ### 이 패키지의 큰 특징은 아래와 같다
103
+ - 업무에 요구되는 코딩들을 함수처럼 사용하게 만들었고,
104
+ - 사용하기 쉬워야 하고
105
+ - 확장가능성도 있으며
106
+ - 코딩에 대하여 아무것도 몰라도, 클릭만으로 필수적인 부분들을 다룰 수 있고
107
+ - 다양한 예제를 갖고 와서 직접 업무에 사용이 가능하고
108
+ - 한글로 설명이 풍부하게 되어있으며
109
+ - 다른 분야에 적용도 가능하도록
110
+
111
+
112
+ ## 기본 사용법
113
+
114
+ ### anydb : 리스트, 사전, sqlite, dataframe의 자료를 서조 편하게 변경하는 것
115
+ 공부를 하던중에 생각보다 자료들을 어딘가에 자료를 저장 해야하는 경우가 많은데, 매번 엑셀에 저장하는 것은 실시간의 자료와 같이, 어쩔수없이 database를 사용해야 하는 경우들이 생긴다
116
+ 이럴때, 우리가 자주 사용하는 자료의 형태들을 쉽게 여러가지 형태로 변경을 할수있도록 만들면 어떨까라고 생각을 해서 만든 것이 anydb모듈입니다
117
+ 제일 많이 사용하는 자료형은 리스트지만 사전으로도 가끔 바꾸고, database로도 바꾸는 형태들이 점점 많아 집니다
118
+ 물론 1차원이나 2차원으로 변경되는 경우들도 있지요. 그러다가 기본 자료형을 다른것으로 바꾸는 공부를 한계기도 되면서, 자주 사용하는 리스트의 자료형의 변경부분을 메소드를 넣어서 사용합니다
119
+
120
+
121
+ ### pcell : 엑셀의 자동화를 쉽게 만든것
122
+ 1. 이름은 기본적으로 3부분으로 만들었으며 각부분은 언더바(_)로 연결했습니다
123
+ 2. 읽을때는 read, 쓸때는 write, 삭제는 delete, 추가는insert등을 사용하였습니다
124
+ 3. 두번째의 이름의 규칙은
125
+ 관련된 부분에 따라 다른것을 사용하며 다음과 같은 것이 사용이 됩니다
126
+ 거진 영역을 나타내는 부분으로 사용하였습니다
127
+ range, workbook, cell, line, column
128
+ 4. 세번째 부분이 어떤 일을 할것인지를 알아보는 것입니다
129
+ 5. 일반사항은 다음과 같습니다
130
+
131
+
132
+ ### han : 아래아 한글의 자동화를 위한것
133
+ 아래아 한글을 사용하기 편하도록 사용하기위해 만들었다.
134
+ 만약 워드나 엑셀의 자료를 서로 옮기는것은 ganada, pcell을 이용하면 된다
135
+
136
+ - 줄이나 단어등을 기준으로 이동이 가능하도록 함
137
+ - 테이블을 만들고, 좌표를 기준으로 Text를 넣을수 잇돌고 함
138
+ - 원하는 위치에 text삽입가능
139
+ - 글자색을 scolor로 이용하여 적용가능
140
+
141
+
142
+ ### scolor : 색을 편하게 사용하기위해 만든것
143
+ 이것은 모든 외부로 들어오고 나가는 것은 전부 RGB형태로 이루어지도록 만든다
144
+
145
+ - 색을 변경하고 관리하는 모듈이며
146
+ - 색의 변화를 잘 사용이 가능하도록 하기위한 것이다
147
+ - 기본 입력 예 : "빨강", "빨강55", "red55", "0155"
148
+ - 기본색 ==> 12색 + (하양, 검정, 회색),
149
+ - 큰변화 ==> 1~9단계, 작은변화 ==> 1~9단계
150
+ - 기본함수 : get_color_rgb("red55"), get_rgb_3input(색, 큰변화, 작은변화)
151
+ - 모든 색의 표현이나 결과는 rgb로 돌려준다
152
+
153
+ ### Jfinder : 정규표현식을 쉽게 사용하기 위해
154
+
155
+ * 아래의 코드들은 정규표현식을 사용하면서, 내가 만든 표현식조차도 다시 읽기가 어려워서, 나름 다른 형태로 만들어 본것인데. 생각보다 가독성이 좋아서 같이 공유해보는것이다
156
+ 또한 만든김에 결과로 돌려주는것도 하나만 받으면 전부 가능하도록 만들어 보았다
157
+ 위에서 언급한 이메일 형식이 맞느지를 보는 것은 상당히 반복적이기 때문에 크게 혼돈은 없다
158
+ 하지만, 실제 코드를 사용하다 보면, 외계어를 해석하는 상태까지 와야할 경우가 있다
159
+
160
+ ([a-zA-Z0-9_.+-]+)@[a-zA-Z0-9_.+-]+\.[a-zA-Z0-9_.+-]+
161
+
162
+ * 이정도만해도 간단한 축에 속한다. 맨처음 만들때는 그나마 이해를 하지만, 다른사람이 만든 것을 이해하는데 상당한 시간이 걸린다는 것이고, 또한 일반적인 사용자들이 이것을 공부하고 이해하는데 어려움이 잇을 것 같으면서 동시에, 정규표현식의 강력함을 사용할수 있도록 생각해 보는 것이다
163
+ 그래서 좀더 간단하게 사용법을 만들고,
164
+
165
+
166
+ [영어&숫자.+-:1~]@[영어&숫자.+-:1~]\.[영어&숫자.+-:1~]
167
+ 이렇게 바꾸면 좀더 읽기가 쉬워진다
168
+
169
+
170
+ ### mailmail : 아웃룩의 이메일을 관리하는 도구
171
+ - 이것의 장점은 엑셀이나 Util과 연동하여 편의성을 더욱 증대하고있읍니다
172
+ - 기본적인 사용법이나 함수의 이름은 같은 형태를 따릅니다
173
+
174
+
175
+ ### pynal : 시간관련된것을 쉽게 사용하는 모듈
176
+ 1) 시간을 다루는 모듈에서 가장 필요한 부분이, 입력된 자료가 시간 비슷한데, 제대로 인식이 되지 않는 형태들이 많습니다. 그럴때 이것을 잘 인식하게 하는 기능이 중요하며
177
+ 2) 두번째는 시간을 내가 원하는 숫자로 쉽게 변경하는 기능입니다
178
+ 3) 시간을 쉽게 이동시키는 기능
179
+ 우리가 지금부터 다루는 대부분의 일들이 바로, 위의 3가지를 혼합하거나 변형하는 기능들입니다
180
+
181
+ ### xy_list : 1부터 시작되는 리스트 자료형을 만든것
182
+ xylist를 만든 목적은 점점 0과 1이 혼돈이 될때가 많아서, 그냥 일반적으로 사용하는 사람들이 알아듣는 물결무늬로 아예 다른 방식으로 표시를 해보면 혼돈이 안될 것 같아서, 만들어 본것이다
183
+
184
+
185
+ ### youtil : xython안의 모든 모듈에 전반적으로 사용가능한 기능
186
+ ![img_5.png](img_5.png)
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+ Platform: UNKNOWN
195
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
196
+ Requires-Python: >=3.8
197
+ Description-Content-Type: text/markdown
xython-3.0.3/README.md ADDED
@@ -0,0 +1,181 @@
1
+ ## About xython module / 개요
2
+ Functional Programming for Excel, Hwp, Word, Outlook, Color, Etc by win32com<br>
3
+ win32com으로 만든 함수프로그램 (함수들을 사용해서 업무자동화를 위한 방법)
4
+
5
+ ### Manual / 사용법
6
+ oficial document : https://sjpkorea.github.io/xython.github.io/ <br>
7
+ oficial website : www.xython.co.kr (Korean base) <br>
8
+
9
+ ### Components / 구성은
10
+
11
+ - anydb : for Database / sqlite와 pandas 를 좀더 쉽게 사용할수있도록 만든것
12
+ - basic_data : xython package for general enum / xython패키지에서 사용되는 전반적인 공유 자료들을 저장하는 곳
13
+ - ganada : for Word / 워드를 다루기위해 만든 것
14
+ - han : for hwp / 아래아 한글을 다루기위해 만든 것 (*** New)
15
+ - jfinder : for Regex / 정규표현식을 좀더 편하게 사용하도록 만든 것
16
+ - mailmail : for outlook / outlook을 다루는것
17
+ - pcell : for Excel / 엑셀을 다루는 것
18
+ - pcell_event : for Excel Event / 엑셀의 이벤트를 다루는것
19
+ - pyclick : for KEyboard & Mouse control / 키보드와 마우스를 다루는 모듈
20
+ - pynal : for Date & Time / 시간과 날짜를 다루는것
21
+ - scolor : for Color / 색의 RGB값을 편하게 사용가능하도록 만든 것
22
+ - xy_list : New List Type / 1부터 시작하는 List 자료형
23
+ - youtil : utilities / 이러저런 문장이나 시간등을 변환하는데 도움이되는 것
24
+
25
+ ### Brief / 개괄적인 설명
26
+ this is target for easy RPA system of office work<br>
27
+ It composed of several python files, and basic concept is function style<br>
28
+ total over the 2500 functions in this package<br>
29
+ please see how to use for this package in xython.co.kr<br>
30
+ now under making GUI toolkit for easy & no installing for python for this package<br>
31
+
32
+ 이모듈은 업무용으로 많이 사용하는 엑셀 , 색, 정규표현식, 등에 대하여 Python과 win32com을 기본으로 사용하여 각기 새롭게 모듈을 만들어서 좀더 쉽고 편하게 사용하고 만들자는 것입니다
33
+ 자동화는 각자의 사용에 대한<br>
34
+ 만든 이유는 우리가 업무등을 하는 입장에서, 손으로 작업하기에는 양이 많고, 그렇다고
35
+ 계속 반복적으로 일어나는 일은 아니며, VBA등을 만들어서 사용하기에는 어렵고 힘든 부분에 대해서<br>
36
+ 파이썬이라는 훌룡한 언어를 위용하여, 좀더 쉽고 간결하게 몇가지 기능만 배워도 20줄안으로 자신만의 코드를
37
+ 만들어 사용할수있는 기준을 만들기 위한 것입니다<br>
38
+ 또한 보통 많이 사용하는 코드들은 첨부된 sample코드를 보시거나 저의 사이트에 와서 비슷한것을 다운 받은후
39
+ 변경해서 사용하시기를 추천 드립니다<br>
40
+ 좀더 편한 업무의 일을 하기위한 것입니다<br>
41
+
42
+ ### 개괄적인 설명
43
+ | |모듈이름| 설명 |
44
+ |------|---|-------------------------------------------|
45
+ |1 |anydb| sqlite와 pandas 를 좀더 쉽게 사용할수있도록 만든것 |
46
+ |2 |basic_data | 패키지에서 사용되는 전반적인 공유 자료들을 저장하는 곳 |
47
+ |3 |ganada | 워드를 다루기위해 만든 것 |
48
+ |4 |jfinder | 정규표현식을 좀더 편하게 사용하도록 만든 것 |
49
+ |5 |mailmail | outlook을 다루는것 |
50
+ |6 |pcell | 엑셀을 다루는 것 |
51
+ |7 |pcell_event | 엑셀의 이벤트를 다루는것 |
52
+ |8 |pyclick | 키보드와 마우스를 다루는 모듈 |
53
+ |9 |pynal | 시간과 날짜를 다루는것 |
54
+ |10|scolor | 색의 RGB값을 편하게 사용가능하도록 만든 것 |
55
+ |11|youtil | 이러저런 문장이나 시간등을 변환하는데 도움이되는 것 |
56
+ <br>
57
+
58
+ ![img_1.png](img_1.png)
59
+ <br>
60
+ ### Version History / 버전 변화
61
+ - 1.15.0 : word를 위한 ganada모듈을 전반적으로 많이 Update함
62
+ - 1.16.0 : applied docstring style for all files
63
+ - 1.17.0 : connected with github document system
64
+ - 1.18.0 : 최적화 진행중, 일부 함수들 추가 및 삭제
65
+ - 1.19.0 : 최적화 진행중
66
+ - 1.20.0 : 최적화 진행중
67
+ - 2.0.0 : 전체적으로 정리 및 고정화
68
+ - 2.1.0 : 전체적으로 변경하였으며, han으로 hwp를 사용하는 새로운 모듈을 만듦
69
+ - 2.2.0 : han과 ganada의 함수이름을 통일 시키는 부분을 변경하고, han을 많이 추가함
70
+ - 3.0.1 : 전체적으로 최적화를 실시 (잘못해서 기존의 자료들을 전부 삭제..ㅠㅠ)
71
+ - 3.0.3 : mygrid를 별도의 패키지(xygrid)로 분리
72
+
73
+
74
+ ### xython은
75
+ 자주 사용하는 대부분의 기능을 함수로 만들고, 함수를 여러 개 사용하여 원하는 기능을 만드는 것
76
+ - 공통의 기준 용어를 사용한다
77
+ - 공통된 함수 이름의 작성기준
78
+ - 엑셀의 VBA는 사용하기 어려워 Python을 이용하여 쉽게 엑셀의 기능을 사용하도록 만들고 싶었다
79
+ - 이런 파이썬의 새로운 모듈을 만들어서 여러사람들이 쉽게 만들 수 있도록 하고 싶었다
80
+ - 또한 엑셀의 메뉴바를 만들어 기능을 쉽게 만들고 싶었다
81
+ - 누군가 만들어 놓은 좋은 코드를 쉽게 공유가 가능하도록 하고 싶었다
82
+ - 공유는 버튼을 누르면 자동으로 실행되도록 하고 싶었다(아직…)
83
+ - 자신만이 사용하고 싶은 코드는 따로 사용이 가능하도록 하고 싶었다
84
+ - 다른나라의 언어로 편하게 사용가능하도록 변경 예정
85
+
86
+ ![img_2.png](img_2.png)
87
+
88
+
89
+
90
+
91
+ ### 이 패키지의 큰 특징은 아래와 같다
92
+ - 업무에 요구되는 코딩들을 함수처럼 사용하게 만들었고,
93
+ - 사용하기 쉬워야 하고
94
+ - 확장가능성도 있으며
95
+ - 코딩에 대하여 아무것도 몰라도, 클릭만으로 필수적인 부분들을 다룰 수 있고
96
+ - 다양한 예제를 갖고 와서 직접 업무에 사용이 가능하고
97
+ - 한글로 설명이 풍부하게 되어있으며
98
+ - 다른 분야에 적용도 가능하도록
99
+
100
+
101
+ ## 기본 사용법
102
+
103
+ ### anydb : 리스트, 사전, sqlite, dataframe의 자료를 서조 편하게 변경하는 것
104
+ 공부를 하던중에 생각보다 자료들을 어딘가에 자료를 저장 해야하는 경우가 많은데, 매번 엑셀에 저장하는 것은 실시간의 자료와 같이, 어쩔수없이 database를 사용해야 하는 경우들이 생긴다
105
+ 이럴때, 우리가 자주 사용하는 자료의 형태들을 쉽게 여러가지 형태로 변경을 할수있도록 만들면 어떨까라고 생각을 해서 만든 것이 anydb모듈입니다
106
+ 제일 많이 사용하는 자료형은 리스트지만 사전으로도 가끔 바꾸고, database로도 바꾸는 형태들이 점점 많아 집니다
107
+ 물론 1차원이나 2차원으로 변경되는 경우들도 있지요. 그러다가 기본 자료형을 다른것으로 바꾸는 공부를 한계기도 되면서, 자주 사용하는 리스트의 자료형의 변경부분을 메소드를 넣어서 사용합니다
108
+
109
+
110
+ ### pcell : 엑셀의 자동화를 쉽게 만든것
111
+ 1. 이름은 기본적으로 3부분으로 만들었으며 각부분은 언더바(_)로 연결했습니다
112
+ 2. 읽을때는 read, 쓸때는 write, 삭제는 delete, 추가는insert등을 사용하였습니다
113
+ 3. 두번째의 이름의 규칙은
114
+ 관련된 부분에 따라 다른것을 사용하며 다음과 같은 것이 사용이 됩니다
115
+ 거진 영역을 나타내는 부분으로 사용하였습니다
116
+ range, workbook, cell, line, column
117
+ 4. 세번째 부분이 어떤 일을 할것인지를 알아보는 것입니다
118
+ 5. 일반사항은 다음과 같습니다
119
+
120
+
121
+ ### han : 아래아 한글의 자동화를 위한것
122
+ 아래아 한글을 사용하기 편하도록 사용하기위해 만들었다.
123
+ 만약 워드나 엑셀의 자료를 서로 옮기는것은 ganada, pcell을 이용하면 된다
124
+
125
+ - 줄이나 단어등을 기준으로 이동이 가능하도록 함
126
+ - 테이블을 만들고, 좌표를 기준으로 Text를 넣을수 잇돌고 함
127
+ - 원하는 위치에 text삽입가능
128
+ - 글자색을 scolor로 이용하여 적용가능
129
+
130
+
131
+ ### scolor : 색을 편하게 사용하기위해 만든것
132
+ 이것은 모든 외부로 들어오고 나가는 것은 전부 RGB형태로 이루어지도록 만든다
133
+
134
+ - 색을 변경하고 관리하는 모듈이며
135
+ - 색의 변화를 잘 사용이 가능하도록 하기위한 것이다
136
+ - 기본 입력 예 : "빨강", "빨강55", "red55", "0155"
137
+ - 기본색 ==> 12색 + (하양, 검정, 회색),
138
+ - 큰변화 ==> 1~9단계, 작은변화 ==> 1~9단계
139
+ - 기본함수 : get_color_rgb("red55"), get_rgb_3input(색, 큰변화, 작은변화)
140
+ - 모든 색의 표현이나 결과는 rgb로 돌려준다
141
+
142
+ ### Jfinder : 정규표현식을 쉽게 사용하기 위해
143
+
144
+ * 아래의 코드들은 정규표현식을 사용하면서, 내가 만든 표현식조차도 다시 읽기가 어려워서, 나름 다른 형태로 만들어 본것인데. 생각보다 가독성이 좋아서 같이 공유해보는것이다
145
+ 또한 만든김에 결과로 돌려주는것도 하나만 받으면 전부 가능하도록 만들어 보았다
146
+ 위에서 언급한 이메일 형식이 맞느지를 보는 것은 상당히 반복적이기 때문에 크게 혼돈은 없다
147
+ 하지만, 실제 코드를 사용하다 보면, 외계어를 해석하는 상태까지 와야할 경우가 있다
148
+
149
+ ([a-zA-Z0-9_.+-]+)@[a-zA-Z0-9_.+-]+\.[a-zA-Z0-9_.+-]+
150
+
151
+ * 이정도만해도 간단한 축에 속한다. 맨처음 만들때는 그나마 이해를 하지만, 다른사람이 만든 것을 이해하는데 상당한 시간이 걸린다는 것이고, 또한 일반적인 사용자들이 이것을 공부하고 이해하는데 어려움이 잇을 것 같으면서 동시에, 정규표현식의 강력함을 사용할수 있도록 생각해 보는 것이다
152
+ 그래서 좀더 간단하게 사용법을 만들고,
153
+
154
+
155
+ [영어&숫자.+-:1~]@[영어&숫자.+-:1~]\.[영어&숫자.+-:1~]
156
+ 이렇게 바꾸면 좀더 읽기가 쉬워진다
157
+
158
+
159
+ ### mailmail : 아웃룩의 이메일을 관리하는 도구
160
+ - 이것의 장점은 엑셀이나 Util과 연동하여 편의성을 더욱 증대하고있읍니다
161
+ - 기본적인 사용법이나 함수의 이름은 같은 형태를 따릅니다
162
+
163
+
164
+ ### pynal : 시간관련된것을 쉽게 사용하는 모듈
165
+ 1) 시간을 다루는 모듈에서 가장 필요한 부분이, 입력된 자료가 시간 비슷한데, 제대로 인식이 되지 않는 형태들이 많습니다. 그럴때 이것을 잘 인식하게 하는 기능이 중요하며
166
+ 2) 두번째는 시간을 내가 원하는 숫자로 쉽게 변경하는 기능입니다
167
+ 3) 시간을 쉽게 이동시키는 기능
168
+ 우리가 지금부터 다루는 대부분의 일들이 바로, 위의 3가지를 혼합하거나 변형하는 기능들입니다
169
+
170
+ ### xy_list : 1부터 시작되는 리스트 자료형을 만든것
171
+ xylist를 만든 목적은 점점 0과 1이 혼돈이 될때가 많아서, 그냥 일반적으로 사용하는 사람들이 알아듣는 물결무늬로 아예 다른 방식으로 표시를 해보면 혼돈이 안될 것 같아서, 만들어 본것이다
172
+
173
+
174
+ ### youtil : xython안의 모든 모듈에 전반적으로 사용가능한 기능
175
+ ![img_5.png](img_5.png)
176
+
177
+
178
+
179
+
180
+
181
+
@@ -9,8 +9,9 @@ with open("README.md", "rt", encoding='UTF8') as fh:
9
9
  long_description = fh.read()
10
10
  setup(
11
11
  name='xython',
12
- version='3.0.2',
12
+ version='3.0.3',
13
13
  url='https://www.xython.co.kr',
14
+ install_requires=['pyperclip', 'pywinauto', 'chardet','pygetwindow','pyautogui','unittest','paho-mqtt','pandas','pywin32','PySide6','korean_lunar_calendar','screeninfo','zipfile','','' ],
14
15
  download_url='https://github.com/sjpark/xython/archive/v3.0.2.tar.gz',
15
16
  author='sjpkorea',
16
17
  author_email='sjpkorea@naver.com',
@@ -23,7 +24,6 @@ setup(
23
24
  },
24
25
  long_description_content_type="text/markdown",
25
26
  long_description=open('README.md', "r", encoding='UTF8').read(),
26
- install_requires=[''],
27
27
  python_requires='>=3.8',
28
28
  zip_safe=False,
29
29
  classifiers=['License :: OSI Approved :: GNU General Public License v3 (GPLv3)'],
@@ -6,7 +6,7 @@ import inspect
6
6
  import os
7
7
  import sys
8
8
 
9
- __version__ = '3.0.2'
9
+ __version__ = '3.0.3'
10
10
  real_path = os.path.dirname(os.path.abspath(__file__)).replace("\\","/")
11
11
  sys.path.append(real_path)
12
12
 
@@ -1,14 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  import time, os #내장모듈
3
- import pyperclip, sys
3
+
4
+ import pyperclip
4
5
  import pywinauto, chardet
5
6
  import win32api, win32gui
6
- import cv2
7
7
  import pygetwindow as gw
8
- import numpy as np
9
8
  import paho.mqtt.client as mqtt
10
- from PIL import ImageFont
11
- from xy_list import xy_list as xylist
12
9
 
13
10
  from unittest.mock import patch
14
11
  with patch("ctypes.windll.user32.SetProcessDPIAware", autospec=True):
@@ -59,14 +56,6 @@ class pyclick:
59
56
  'winright', 'yen',
60
57
  'command', 'option', 'optionleft', 'optionright']
61
58
 
62
- def calculate_pixel_size_for_input_text(self, input_text, font_size, font_name):
63
- """
64
- 폰트와 글자를 주면, 필셀의 크기를 돌려준다
65
- """
66
- font = ImageFont.truetype(font_name, font_size)
67
- size = font.getsize(input_text)
68
- return size
69
-
70
59
  def calculate_pixel_size_for_input_text_2(self, input_text, target_pixel, font_name="malgun.ttf", font_size=12, fill_char=" "):
71
60
  """
72
61
  원하는 길이만큼 텍스트를 근처의 픽셀값으로 만드는것
@@ -325,91 +314,6 @@ class pyclick:
325
314
  result = win32api.GetCursorPos()
326
315
  return result
327
316
 
328
- def get_pxy_for_same_position_for_picture_vs_monitor_screen(self, search_picture="D:/epro_x_button.jpg"):
329
- """
330
- 1) 스크린 캡쳐를 해서, 네이버의 처음 화면을 naver big이란 이름으로 저장
331
- 2) 스크린 캡쳐한것을 흑백화면으로 변경
332
- 3) 찾을 화면 naver_ small_q을 흑백으로 변경
333
- 3-1) 화일이 들중에 하나라도 없으면, 중지
334
- 4) 원본화면이 가로세로의 픽셀이 얼마나 인지를 계산해서, 비교를 하기 위한것이다
335
- 6) 두영상의 같은위치에 존재하는 픽셀값을 더하는것
336
- 7) 두영상을 비교한 결과를 그레이 스케일로 나타내는 것
337
- """
338
- current_screen = "D:/naver_big_1.jpg"
339
- pyautogui.screenshot(current_screen) # 1
340
- current_screen_gray = cv2.imread(current_screen, cv2.IMREAD_GRAYSCALE) # 2
341
- search_screen_gray = cv2.imread(search_picture, cv2.IMREAD_GRAYSCALE) # 3
342
- if current_screen_gray is None or search_screen_gray is None: sys.exit() # 3-1
343
- result_table = np.zeros(current_screen_gray.shape, np.int32) # 4
344
- changed_current_screen = cv2.add(current_screen_gray, result_table, dtype=cv2.CV_8UC3) # 6
345
- match_result = cv2.matchTemplate(changed_current_screen, search_screen_gray, cv2.TM_CCOEFF_NORMED) # 7
346
- _, maxv, _, maxloc = cv2.minMaxLoc(match_result) # 9
347
- cv2.waitKey() # m
348
- cv2.destroyAllWindow()
349
- return [maxloc[0], maxloc[1]]
350
-
351
- def get_pxy_for_same_position_for_picture_vs_monitor_screen_1(self, file_target):
352
- """
353
- 현재 화면에서 같은 그림의 위치를 돌려주는 것
354
-
355
- :param file_target:
356
- :return:
357
- """
358
- pyautogui.screenshot('D:/naver_big_1.jpg')
359
- src = cv2.imread('D:/naver_big_1.jpg', cv2.IMREAD_GRAYSCALE) # 흑백으로 색을 읽어온다
360
- # 에제를 위해서, 네이버의 검색란을 스크린 캡쳐해서 naver_small_q란 이름으로 저장하는 것이다
361
- templ = cv2.imread(file_target, cv2.IMREAD_GRAYSCALE)
362
-
363
- if src is None or templ is None:
364
- print('Image load failed!')
365
- sys.exit()
366
-
367
- noise = np.zeros(src.shape, np.int32) # zeros함수는 만든 갯수만큼 0이 들어간 행렬을 만드는것
368
- cv2.randn(noise, 50, 10)
369
- src = cv2.add(src, noise, dtype=cv2.CV_8UC3)
370
-
371
- res = cv2.matchTemplate(src, templ, cv2.TM_CCOEFF_NORMED) # 여기서 최댓값 찾기
372
- res_norm = cv2.normalize(res, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
373
- _, maxv, _, maxloc = cv2.minMaxLoc(res)
374
-
375
- th, tw = templ.shape[:2]
376
- dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)
377
- cv2.rectangle(dst, maxloc, (maxloc[0] + tw, maxloc[1] + th), (0, 0, 255), 2)
378
-
379
- cv2.waitKey() # msec시간 단위, 공란 또는 0일 경우엔 무한정으로 대기
380
- cv2.destroyAllWindows() # 모든 이미지 창을 닫음
381
-
382
- pyautogui.moveTo(maxloc[0] + 45, maxloc[1] + 15)
383
- pyautogui.mouseDown(button='left')
384
- return [maxloc[0] + 45, maxloc[1] + 15]
385
-
386
- def get_pxy_for_same_position_for_two_image_file(self, img_big, img_small):
387
- """
388
- 그림 두개의 같은 위치를 찾아내는것
389
-
390
- :param img_big:
391
- :param img_small:
392
- :return:
393
- """
394
- src = cv2.imread(img_big, cv2.IMREAD_GRAYSCALE)
395
- templ = cv2.imread(img_small, cv2.IMREAD_GRAYSCALE)
396
-
397
- noise = np.zeros(src.shape, np.int32)
398
- cv2.randn(noise, 50, 10)
399
- src = cv2.add(src, noise, dtype=cv2.CV_8UC3)
400
- res = cv2.matchTemplate(src, templ, cv2.TM_CCOEFF_NORMED)
401
- res_norm = cv2.normalize(res, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
402
- _, maxv, _, maxloc = cv2.minMaxLoc(res)
403
- print('maxv : ', maxv)
404
- print('maxloc : ', maxloc)
405
-
406
- if maxv > 0.85:
407
- print("found")
408
- result = maxloc
409
- else:
410
- pass
411
- result = ""
412
- return result
413
317
 
414
318
  def get_pxy_for_selected_image(self, input_file_name):
415
319
  """
@@ -845,33 +749,6 @@ class pyclick:
845
749
  self.port = port
846
750
  self.qos = qos
847
751
 
848
- def template_matching(self, img_big, img_small):
849
- """
850
- pyclick건
851
-
852
- :param img_big:
853
- :param img_small:
854
- :return:
855
- """
856
- src = cv2.imread(img_big, cv2.IMREAD_GRAYSCALE)
857
- templ = cv2.imread(img_small, cv2.IMREAD_GRAYSCALE)
858
-
859
- noise = np.zeros(src.shape, np.int32)
860
- cv2.randn(noise, 50, 10)
861
- src = cv2.add(src, noise, dtype=cv2.CV_8UC3)
862
- res = cv2.matchTemplate(src, templ, cv2.TM_CCOEFF_NORMED)
863
- res_norm = cv2.normalize(res, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
864
- _, maxv, _, maxloc = cv2.minMaxLoc(res)
865
- print('maxv : ', maxv)
866
- print('maxloc : ', maxloc)
867
-
868
- if maxv > 0.85:
869
- print("found")
870
- result = maxloc
871
- else:
872
- pass
873
- result = ""
874
- return result
875
752
 
876
753
  def type_1000times_delete_key(self):
877
754
  """