wolfhece 2.1.21__py3-none-any.whl → 2.1.23__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.
wolfhece/irm_qdf.py CHANGED
@@ -102,6 +102,8 @@ class MontanaIRM():
102
102
  return rain*dur/60. #to obtains [mm.h^-1] as dur is in [min]
103
103
 
104
104
  def get_hyeto(self,durmax,T,r=0.5):
105
+ """ :param r: Decentration coefficient
106
+ """
105
107
  x = np.arange(10,durmax,1,dtype=np.float64)
106
108
  # y = [self.get_instantrain(curx,T) for curx in x]
107
109
 
@@ -234,7 +236,17 @@ class Qdf_IRM():
234
236
 
235
237
 
236
238
  def importfromwebsite(self,store_path='irm',verbose=False,waitingtime=.01):
237
- """ Import des fichiers Excel pour toutes les communes depuis le site de l'IRM """
239
+ """ Import Excel files for all municipalities from the IRM website
240
+
241
+ :param store_path: Where to store the downloaded data. Directory
242
+ will be created if it doesn't exists.
243
+ :param verbose: If `True`, will print some progress information. If
244
+ `False`, will do nothing. If a callable, then will call it with a
245
+ float in [0, 1]. 0 means nothing downloaded, 1 means everything
246
+ downloaded.
247
+ :param waitingtime: How long to wait (in seconds) betwenn the download
248
+ of each station (will make sure we don't overwhelm IRM's website).
249
+ """
238
250
  import requests
239
251
 
240
252
  if not path.exists(store_path):
@@ -251,7 +263,10 @@ class Qdf_IRM():
251
263
  file.write(response.content)
252
264
  file.close()
253
265
  if verbose:
254
- print(myins)
266
+ if callable(verbose):
267
+ verbose(key/len(self.myloc.inscode2name))
268
+ else:
269
+ print(myins)
255
270
 
256
271
  sleep(waitingtime)
257
272
 
@@ -439,6 +454,8 @@ class Qdf_IRM():
439
454
  fig,ax = self.montana.plot_hyeto(durmax,T,r)
440
455
  ax.set_title(self.name + ' - code : ' + str(self.code))
441
456
 
457
+ return fig
458
+
442
459
  def plot_hyetos(self,durmax,r=.5):
443
460
 
444
461
  fig,ax = self.montana.plot_hyetos(durmax,r)
File without changes
@@ -0,0 +1,248 @@
1
+ import logging
2
+
3
+ WT_PACKET = 0x7FF0
4
+
5
+ # Information categories
6
+ WTI_INTERFACE = 1
7
+ WTI_STATUS = 2
8
+ WTI_DEFCONTEXT = 3
9
+ WTI_DEFSYSCTX = 4
10
+ WTI_DDCTXS = 400
11
+ WTI_DSCTXS = 500
12
+ WTI_DEVICES = 100
13
+ WTI_CURSORS = 200
14
+ WTI_EXTENSIONS = 300
15
+
16
+ # Hardware capabilities
17
+ HWC_INTEGRATED = 0x0001
18
+ HWC_TOUCH = 0x0002
19
+ HWC_HARDPROX = 0x0004
20
+ HWC_PHYSID_CURSORS = 0x0008
21
+
22
+ # Unit specifiers
23
+ TU_NONE = 0
24
+ TU_INCHES = 1
25
+ TU_CENTIMETERS = 2
26
+ TU_CIRCLE = 3
27
+
28
+ # Cursor capabilities
29
+ CRC_MULTIMODE = 0x0001
30
+ CRC_AGGREGATE = 0x0002
31
+ CRC_INVERT = 0x0004
32
+
33
+ # System button assignment values
34
+ SBN_NONE = 0x00
35
+ SBN_LCLICK = 0x01
36
+ SBN_LDBLCLICK = 0x02
37
+ SBN_LDRAG = 0x03
38
+ SBN_RCLICK = 0x04
39
+ SBN_RDBLCLICK = 0x05
40
+ SBN_RDRAG = 0x06
41
+ SBN_MCLICK = 0x07
42
+ SBN_MDBLCLICK = 0x08
43
+ SBN_MDRAG = 0x09
44
+ # for Pen Windows
45
+ SBN_PTCLICK = 0x10
46
+ SBN_PTDBLCLICK = 0x20
47
+ SBN_PTDRAG = 0x30
48
+ SBN_PNCLICK = 0x40
49
+ SBN_PNDBLCLICK = 0x50
50
+ SBN_PNDRAG = 0x60
51
+ SBN_P1CLICK = 0x70
52
+ SBN_P1DBLCLICK = 0x80
53
+ SBN_P1DRAG = 0x90
54
+ SBN_P2CLICK = 0xA0
55
+ SBN_P2DBLCLICK = 0xB0
56
+ SBN_P2DRAG = 0xC0
57
+ SBN_P3CLICK = 0xD0
58
+ SBN_P3DBLCLICK = 0xE0
59
+ SBN_P3DRAG = 0xF0
60
+
61
+ # Context option values
62
+ CXO_SYSTEM = 0x0001
63
+ CXO_PEN = 0x0002
64
+ CXO_MESSAGES = 0x0004
65
+ CXO_MARGIN = 0x8000
66
+ CXO_MGNINSIDE = 0x4000
67
+ CXO_CSRMESSAGES = 0x0008
68
+
69
+ # Context status values
70
+ CXS_DISABLED = 0x0001
71
+ CXS_OBSCURED = 0x0002
72
+ CXS_ONTOP = 0x0004
73
+
74
+ # Context lock values
75
+ CXL_INSIZE = 0x0001
76
+ CXL_INASPECT = 0x0002
77
+ CXL_SENSITIVITY = 0x0004
78
+ CXL_MARGIN = 0x0008
79
+ CXL_SYSOUT = 0x0010
80
+
81
+ # WTPKT bits
82
+ PK_CONTEXT = 0x0001 # reporting context
83
+ PK_STATUS = 0x0002 # status bits
84
+ PK_TIME = 0x0004 # time stamp
85
+ PK_CHANGED = 0x0008 # change bit vector
86
+ PK_SERIAL_NUMBER = 0x0010 # packet serial number
87
+ PK_CURSOR = 0x0020 # reporting cursor
88
+ PK_BUTTONS = 0x0040 # button information
89
+ PK_X = 0x0080 # x axis
90
+ PK_Y = 0x0100 # y axis
91
+ PK_Z = 0x0200 # z axis
92
+ PK_NORMAL_PRESSURE = 0x0400 # normal or tip pressure
93
+ PK_TANGENT_PRESSURE = 0x0800 # tangential or barrel pressure
94
+ PK_ORIENTATION = 0x1000 # orientation info: tilts */
95
+ PK_ROTATION = 0x2000 # rotation info; 1.1
96
+
97
+ # Packet status values
98
+ TPS_PROXIMITY = 0x0001
99
+ TPS_QUEUE_ERR = 0x0002
100
+ TPS_MARGIN = 0x0004
101
+ TPS_GRAB = 0x0008
102
+ TPS_INVERT = 0x0010
103
+
104
+ # Relative buttons
105
+ TBN_NONE = 0
106
+ TBN_UP = 1
107
+ TBN_DOWN = 2
108
+
109
+
110
+ class Wintab():
111
+
112
+ def __init__(self, hwnd):
113
+ import ctypes
114
+ from ctypes import wintypes, c_char, c_int, POINTER
115
+ from ctypes.wintypes import HWND, UINT, DWORD, LONG, HANDLE, BOOL, LPVOID
116
+
117
+ HCTX = HANDLE
118
+ WTPKT = DWORD
119
+ FIX32 = DWORD
120
+ class LOGCONTEXTA(ctypes.Structure):
121
+ _fields_ = [
122
+ ('lcName', 40*c_char),
123
+ ('lcOptions', UINT),
124
+ ('lcStatus', UINT),
125
+ ('lcLocks', UINT),
126
+ ('lcMsgBase', UINT),
127
+ ('lcDevice', UINT),
128
+ ('lcPktRate', UINT),
129
+ ('lcPktData', WTPKT),
130
+ ('lcPktMode', WTPKT),
131
+ ('lcMoveMask', WTPKT),
132
+ ('lcBtnDnMask', DWORD),
133
+ ('lcBtnUpMask', DWORD),
134
+ ('lcInOrgX', LONG),
135
+ ('lcInOrgY', LONG),
136
+ ('lcInOrgZ', LONG),
137
+ ('lcInExtX', LONG),
138
+ ('lcInExtY', LONG),
139
+ ('lcInExtZ', LONG),
140
+ ('lcOutOrgX', LONG),
141
+ ('lcOutOrgY', LONG),
142
+ ('lcOutOrgZ', LONG),
143
+ ('lcOutExtX', LONG),
144
+ ('lcOutExtY', LONG),
145
+ ('lcOutExtZ', LONG),
146
+ ('lcSensX', FIX32),
147
+ ('lcSensY', FIX32),
148
+ ('lcSensZ', FIX32),
149
+ ('lcSysMode', BOOL),
150
+ ('lcSysOrgX', c_int),
151
+ ('lcSysOrgY', c_int),
152
+ ('lcSysExtX', c_int),
153
+ ('lcSysExtY', c_int),
154
+ ('lcSysSensX', FIX32),
155
+ ('lcSysSensY', FIX32)
156
+ ]
157
+
158
+ # PK_CONTEXT = 0x0001 # reporting context */
159
+ # PK_STATUS = 0x0002 # status bits */
160
+ # PK_TIME = 0x0004 # time stamp */
161
+ # PK_CHANGED = 0x0008 # change bit vector */
162
+ # PK_SERIAL_NUMBER = 0x0010 # packet serial number */
163
+ # PK_CURSOR = 0x0020 # reporting cursor */
164
+ # PK_BUTTONS = 0x0040 # button information */
165
+ # PK_X = 0x0080 # x axis */
166
+ # PK_Y = 0x0100 # y axis */
167
+ # PK_Z = 0x0200 # z axis */
168
+ # PK_NORMAL_PRESSURE = 0x0400 # normal or tip pressure */
169
+ # PK_TANGENT_PRESSURE = 0x0800 # tangential or barrel pressure */
170
+ # PK_ORIENTATION = 0x1000 # orientation info: tilts */
171
+ # PK_ROTATION = 0x2000 # rotation info; 1.1 */
172
+
173
+ lcPktData = (PK_CHANGED | PK_CURSOR | PK_BUTTONS | PK_X | PK_Y | PK_NORMAL_PRESSURE)
174
+ lcPktMode = 0
175
+
176
+ class PACKET(ctypes.Structure):
177
+ _fields_ = [
178
+ ('pkChanged', WTPKT),
179
+ ('pkCursor', UINT),
180
+ ('pkButtons', DWORD),
181
+ ('pkX', LONG),
182
+ ('pkY', LONG),
183
+ ('pkNormalPressure', UINT)
184
+ ]
185
+
186
+ # WTI_DEFCONTEXT = 3
187
+
188
+ # CXO_SYSTEM = 0x0001
189
+ # CXO_PEN = 0x0002
190
+ # CXO_MESSAGES = 0x0004
191
+ # CXO_MARGIN = 0x8000
192
+
193
+ try:
194
+ self.dll = ctypes.WinDLL("wintab32.dll")
195
+ self._wintab = True
196
+
197
+ self.dll.WTInfoA.argtypes = [UINT, UINT, POINTER(LOGCONTEXTA)]
198
+ self.dll.WTInfoA.restype = UINT
199
+
200
+ self.dll.WTOpenA.argtypes = [HWND, POINTER(LOGCONTEXTA), BOOL]
201
+ self.dll.WTOpenA.restype = HCTX
202
+
203
+ self.dll.WTClose.argtypes = [HCTX]
204
+ self.dll.WTClose.restype = BOOL
205
+
206
+ self.dll.WTPacketsGet.argtypes = [HCTX, c_int, POINTER(PACKET)]
207
+ self.dll.WTPacketsGet.restype = c_int
208
+
209
+ self.dll.WTPacket.argtypes = [HCTX, UINT, POINTER(PACKET)]
210
+ self.dll.WTPacket.restype = BOOL
211
+
212
+ self.lc = LOGCONTEXTA()
213
+ rslt = self.dll.WTInfoA(WTI_DEFCONTEXT, 0, self.lc)
214
+
215
+ # logging.info(self.lc.lcOptions)
216
+ self.lc.lcPktData = lcPktData
217
+ self.lc.lcPktMode = lcPktMode
218
+ self.lc.lcOptions = (CXO_SYSTEM | CXO_MESSAGES)
219
+ # logging.info(self.lc.lcOptions)
220
+ self.hctx = self.dll.WTOpenA(HWND(hwnd), self.lc, 1)
221
+
222
+ self.buf = (1*PACKET)()
223
+ except:
224
+ self._wintab = False
225
+
226
+
227
+ def get_xypressure(self):
228
+
229
+ if self._wintab:
230
+ n = self.dll.WTPacketsGet(self.hctx, 1, self.buf)
231
+ if n > 0:
232
+ return self.buf[0].pkX, self.buf[0].pkY, self.buf[0].pkNormalPressure
233
+ else:
234
+ return None, None, None
235
+ else:
236
+ return None, None, None
237
+
238
+
239
+ if __name__ == "__main__":
240
+
241
+ loc = Wintab()
242
+
243
+ while True:
244
+ x, y, p = loc.get_xypressure()
245
+ if x is not None:
246
+ print(x, y, p)
247
+ # else:
248
+ # print("No data")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.1.21
3
+ Version: 2.1.23
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  License: AGPL-v3 License
6
6
  Project-URL: Homepage, https://uee.uliege.be/hece
@@ -6,16 +6,16 @@ wolfhece/ManageParams.py,sha256=Wgt5Zh7QBtyiwTAltPHunSLqt4XuVuRH76GTUrXabS4,219
6
6
  wolfhece/Model1D.py,sha256=-cMz-ePSYzrKVVDidiDOz6cojEZ3y6u9gIb7RPwT6Y8,476593
7
7
  wolfhece/PyConfig.py,sha256=oGSL1WsLM9uinlNP4zGBLK3uHPmBfduUi7R-VtWuRFA,8034
8
8
  wolfhece/PyCrosssections.py,sha256=f4dNYRUGZKePruaaBiTcn5vlrw8TFTj9XwTDrdiF_uU,112450
9
- wolfhece/PyDraw.py,sha256=eZCDOZsiZ9dVFtfeg4Cxep_HHMcyo11kGMK7a4xge-E,384933
10
- wolfhece/PyGui.py,sha256=fqy8f3tLt7myJskVvspTQ_ZO7kaiSNKmcfFLrfr4w7M,103174
9
+ wolfhece/PyDraw.py,sha256=WMu6lRmC9JJkcRFoj-pkDpRrkaEWRyOMHer3zwZ42Qs,390207
10
+ wolfhece/PyGui.py,sha256=8UWyaYwiHD9juDbPs__pmCXIDoM8r9_bGKLf29xVGZI,103140
11
11
  wolfhece/PyGuiHydrology.py,sha256=r8kcY2eGAQzSwVtLpyMUiBL5xBpMBsi7ovs0PgStGWw,14648
12
12
  wolfhece/PyHydrographs.py,sha256=GKK8U0byI45H9O_e4LAOOi7Aw0Tg7Q0Lx322stPg5IQ,3453
13
13
  wolfhece/PyPalette.py,sha256=Vl5RrBIC_a5-mZKUtBd5kG0mif946B7OtS3fnehkmOc,25012
14
- wolfhece/PyParams.py,sha256=Aj8kcT044abwBYU_OiEcJWcyNVqxYithNfbzdHyI-QA,97072
14
+ wolfhece/PyParams.py,sha256=R3AWcb7Mhixwnw4iONSN4gk1DOXKcJR2lj7jaIml4B8,97085
15
15
  wolfhece/PyPictures.py,sha256=-mJB0JL2YYiEK3D7_ssDkvYiMWK4ve9kXhozQXNeSx8,2216
16
16
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
17
17
  wolfhece/PyVertex.py,sha256=dHTjyYYTn0F_NWerlAOBKHV79RUzEEtMJMldQtVc1Cs,40092
18
- wolfhece/PyVertexvectors.py,sha256=YcLs8xwmD3UqGDxfjzRedZolLN3SCHotoXxzP2U4HkU,226029
18
+ wolfhece/PyVertexvectors.py,sha256=E82Xz9OMg7_k1IDyTIgR4owLTl2JJGBTCeq7gSYfHPw,228447
19
19
  wolfhece/PyWMS.py,sha256=pV7JdzbreQGXCg3E6PwllchEUYu2YiPZEIua2ppJorA,4304
20
20
  wolfhece/RatingCurve.py,sha256=f6IGLS5aJBJD_t_k903m_yRZ60MzKNKanzD6njXZxa8,22200
21
21
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
@@ -32,7 +32,7 @@ wolfhece/friction_law.py,sha256=vMr6BgVVV2JqhPDjBtZBtosDIZcbykZxw-fKxiJzd4M,5200
32
32
  wolfhece/gpuview.py,sha256=Lq17jV2ytQShUuvi1UE_A1-6Q0IojsKxrKhkYHRf_8w,23437
33
33
  wolfhece/import_ascfiles.py,sha256=jg4urcLdSgFS1Knvh7AVGJqM44qc_uYDNrR568tMh-A,4167
34
34
  wolfhece/ins.py,sha256=0aU1mo4tYbw64Gwzrqbh-NCTH1tukmk0mpPHjRPHZXU,12661
35
- wolfhece/irm_qdf.py,sha256=749SlAXiN1oXp5tfBJoPNJWxydQlY55K0qvIM5YexlM,15436
35
+ wolfhece/irm_qdf.py,sha256=7XeyPxy7fYbR5T4si6huCyBx1_AwoIogzNEOpu9U-xg,16234
36
36
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
37
37
  wolfhece/multiprojects.py,sha256=K40kM09xNkQSjiwANTsA4CpaW7KEkawpBkpoiehk9yo,21251
38
38
  wolfhece/picc.py,sha256=UCWX1Y6Xb-iviI4qF-MgBSDZDWQn_tlKNfKRBUY75ow,8504
@@ -66,7 +66,7 @@ wolfhece/apps/check_install.py,sha256=jrKR-njqnpIh6ZJqvP6KbDUPVCfwTNQj4glQhcyzs9
66
66
  wolfhece/apps/curvedigitizer.py,sha256=avWERHuVxPnJBOD_ibczwW_XG4vAenqWS8W1zjhBox8,4898
67
67
  wolfhece/apps/isocurrent.py,sha256=4XnNWPa8mYUK7V4zdDRFrHFIXNG2AN2og3TqWKKcqjY,3811
68
68
  wolfhece/apps/splashscreen.py,sha256=LkEVMK0eCc84NeCWD3CGja7fuQ_k1PrZdyqD3GQk_8c,2118
69
- wolfhece/apps/version.py,sha256=vzfNBTFSbty1piUlbNtlxS283UUEd8VsyNhwhWSDzS0,388
69
+ wolfhece/apps/version.py,sha256=0SgGx6ma4vpnfiXmyC_QcZXNoArMJdZUfpGhFt_y1y4,388
70
70
  wolfhece/apps/wolf.py,sha256=gqfm-ZaUJqNsfCzmdtemSeqLw-GVdSVix-evg5WArJI,293
71
71
  wolfhece/apps/wolf2D.py,sha256=gWD9ee2-1pw_nUxjgRaJMuSe4kUT-RWhOeoTt_Lh1mM,267
72
72
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -84,6 +84,8 @@ wolfhece/blender/ply.py,sha256=jTRUqRGD_XyGdE865Iv214DE8-m_ZscqlfTJP99lUOE,555
84
84
  wolfhece/blender/quads.py,sha256=gBoXN-BASPivcGhCIlWgsELCaEO-NH0rhywA7BXY_1Q,11704
85
85
  wolfhece/clientserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  wolfhece/clientserver/clientserver.py,sha256=xXKc8gKjEYilIK8o_xeslbVu9Ouklmk4vkR8Ppy3HYM,2500
87
+ wolfhece/coupling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ wolfhece/coupling/hydrology_2d.py,sha256=RN8fiDuJS3hTf9DgaGdqStSHHESR9thRFIfuu5PoxWg,48263
87
89
  wolfhece/eva/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
90
  wolfhece/eva/bootstrap.py,sha256=xHbIAZzFuaKLwiRpgvsLi5OZYqwaxYACqsAU-FnB6Pc,605
89
91
  wolfhece/eva/hydrogramme_mono.py,sha256=uZFIgJJ-JogMFzt7D7OnyVaHvgxCQJPZz9W9FgnuthA,8138
@@ -270,8 +272,10 @@ wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,11
270
272
  wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
271
273
  wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
272
274
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
273
- wolfhece-2.1.21.dist-info/METADATA,sha256=ANQmVNuOvZofxG3nqK3bG02bjcuvPb9e1KhL1pqroUQ,2307
274
- wolfhece-2.1.21.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
275
- wolfhece-2.1.21.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
276
- wolfhece-2.1.21.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
277
- wolfhece-2.1.21.dist-info/RECORD,,
275
+ wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
276
+ wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
277
+ wolfhece-2.1.23.dist-info/METADATA,sha256=U_Lk5vtUoLriGYNkAHjpnEBEH6lFGzSMBrJ8D-PjIyM,2307
278
+ wolfhece-2.1.23.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
279
+ wolfhece-2.1.23.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
280
+ wolfhece-2.1.23.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
281
+ wolfhece-2.1.23.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.2.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5