@agent-webui/ai-desk-python-win32-x64 1.0.29-beta1

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 (3340) hide show
  1. package/README.md +3 -0
  2. package/package.json +20 -0
  3. package/python/DLLs/_asyncio.pdb +0 -0
  4. package/python/DLLs/_asyncio.pyd +0 -0
  5. package/python/DLLs/_bz2.pdb +0 -0
  6. package/python/DLLs/_bz2.pyd +0 -0
  7. package/python/DLLs/_ctypes.pdb +0 -0
  8. package/python/DLLs/_ctypes.pyd +0 -0
  9. package/python/DLLs/_ctypes_test.pdb +0 -0
  10. package/python/DLLs/_ctypes_test.pyd +0 -0
  11. package/python/DLLs/_decimal.pdb +0 -0
  12. package/python/DLLs/_decimal.pyd +0 -0
  13. package/python/DLLs/_elementtree.pdb +0 -0
  14. package/python/DLLs/_elementtree.pyd +0 -0
  15. package/python/DLLs/_hashlib.pdb +0 -0
  16. package/python/DLLs/_hashlib.pyd +0 -0
  17. package/python/DLLs/_lzma.pdb +0 -0
  18. package/python/DLLs/_lzma.pyd +0 -0
  19. package/python/DLLs/_multiprocessing.pdb +0 -0
  20. package/python/DLLs/_multiprocessing.pyd +0 -0
  21. package/python/DLLs/_overlapped.pdb +0 -0
  22. package/python/DLLs/_overlapped.pyd +0 -0
  23. package/python/DLLs/_queue.pdb +0 -0
  24. package/python/DLLs/_queue.pyd +0 -0
  25. package/python/DLLs/_socket.pdb +0 -0
  26. package/python/DLLs/_socket.pyd +0 -0
  27. package/python/DLLs/_sqlite3.pdb +0 -0
  28. package/python/DLLs/_sqlite3.pyd +0 -0
  29. package/python/DLLs/_ssl.pdb +0 -0
  30. package/python/DLLs/_ssl.pyd +0 -0
  31. package/python/DLLs/_testbuffer.pdb +0 -0
  32. package/python/DLLs/_testbuffer.pyd +0 -0
  33. package/python/DLLs/_testcapi.pdb +0 -0
  34. package/python/DLLs/_testcapi.pyd +0 -0
  35. package/python/DLLs/_testclinic.pdb +0 -0
  36. package/python/DLLs/_testclinic.pyd +0 -0
  37. package/python/DLLs/_testclinic_limited.pdb +0 -0
  38. package/python/DLLs/_testclinic_limited.pyd +0 -0
  39. package/python/DLLs/_testconsole.pdb +0 -0
  40. package/python/DLLs/_testconsole.pyd +0 -0
  41. package/python/DLLs/_testimportmultiple.pdb +0 -0
  42. package/python/DLLs/_testimportmultiple.pyd +0 -0
  43. package/python/DLLs/_testinternalcapi.pdb +0 -0
  44. package/python/DLLs/_testinternalcapi.pyd +0 -0
  45. package/python/DLLs/_testlimitedcapi.pdb +0 -0
  46. package/python/DLLs/_testlimitedcapi.pyd +0 -0
  47. package/python/DLLs/_testmultiphase.pdb +0 -0
  48. package/python/DLLs/_testmultiphase.pyd +0 -0
  49. package/python/DLLs/_testsinglephase.pdb +0 -0
  50. package/python/DLLs/_testsinglephase.pyd +0 -0
  51. package/python/DLLs/_tkinter.pdb +0 -0
  52. package/python/DLLs/_tkinter.pyd +0 -0
  53. package/python/DLLs/_uuid.pdb +0 -0
  54. package/python/DLLs/_uuid.pyd +0 -0
  55. package/python/DLLs/_wmi.pdb +0 -0
  56. package/python/DLLs/_wmi.pyd +0 -0
  57. package/python/DLLs/_zoneinfo.pdb +0 -0
  58. package/python/DLLs/_zoneinfo.pyd +0 -0
  59. package/python/DLLs/libcrypto-3-x64.dll +0 -0
  60. package/python/DLLs/libcrypto-3-x64.pdb +0 -0
  61. package/python/DLLs/libffi-8.dll +0 -0
  62. package/python/DLLs/libssl-3-x64.dll +0 -0
  63. package/python/DLLs/libssl-3-x64.pdb +0 -0
  64. package/python/DLLs/pyexpat.pdb +0 -0
  65. package/python/DLLs/pyexpat.pyd +0 -0
  66. package/python/DLLs/select.pdb +0 -0
  67. package/python/DLLs/select.pyd +0 -0
  68. package/python/DLLs/sqlite3.dll +0 -0
  69. package/python/DLLs/sqlite3.pdb +0 -0
  70. package/python/DLLs/tcl86t.dll +0 -0
  71. package/python/DLLs/tk86t.dll +0 -0
  72. package/python/DLLs/unicodedata.pdb +0 -0
  73. package/python/DLLs/unicodedata.pyd +0 -0
  74. package/python/DLLs/winsound.pdb +0 -0
  75. package/python/DLLs/winsound.pyd +0 -0
  76. package/python/LICENSE.txt +445 -0
  77. package/python/Lib/__future__.py +147 -0
  78. package/python/Lib/__hello__.py +16 -0
  79. package/python/Lib/__phello__/__init__.py +7 -0
  80. package/python/Lib/__phello__/ham/__init__.py +0 -0
  81. package/python/Lib/__phello__/ham/eggs.py +0 -0
  82. package/python/Lib/__phello__/spam.py +7 -0
  83. package/python/Lib/__pycache__/__future__.cpython-313.pyc +0 -0
  84. package/python/Lib/__pycache__/_colorize.cpython-313.pyc +0 -0
  85. package/python/Lib/__pycache__/_compat_pickle.cpython-313.pyc +0 -0
  86. package/python/Lib/__pycache__/_compression.cpython-313.pyc +0 -0
  87. package/python/Lib/__pycache__/_markupbase.cpython-313.pyc +0 -0
  88. package/python/Lib/__pycache__/_opcode_metadata.cpython-313.pyc +0 -0
  89. package/python/Lib/__pycache__/_weakrefset.cpython-313.pyc +0 -0
  90. package/python/Lib/__pycache__/ast.cpython-313.pyc +0 -0
  91. package/python/Lib/__pycache__/base64.cpython-313.pyc +0 -0
  92. package/python/Lib/__pycache__/bisect.cpython-313.pyc +0 -0
  93. package/python/Lib/__pycache__/bz2.cpython-313.pyc +0 -0
  94. package/python/Lib/__pycache__/calendar.cpython-313.pyc +0 -0
  95. package/python/Lib/__pycache__/colorsys.cpython-313.pyc +0 -0
  96. package/python/Lib/__pycache__/compileall.cpython-313.pyc +0 -0
  97. package/python/Lib/__pycache__/configparser.cpython-313.pyc +0 -0
  98. package/python/Lib/__pycache__/contextlib.cpython-313.pyc +0 -0
  99. package/python/Lib/__pycache__/copy.cpython-313.pyc +0 -0
  100. package/python/Lib/__pycache__/copyreg.cpython-313.pyc +0 -0
  101. package/python/Lib/__pycache__/csv.cpython-313.pyc +0 -0
  102. package/python/Lib/__pycache__/dataclasses.cpython-313.pyc +0 -0
  103. package/python/Lib/__pycache__/datetime.cpython-313.pyc +0 -0
  104. package/python/Lib/__pycache__/decimal.cpython-313.pyc +0 -0
  105. package/python/Lib/__pycache__/dis.cpython-313.pyc +0 -0
  106. package/python/Lib/__pycache__/enum.cpython-313.pyc +0 -0
  107. package/python/Lib/__pycache__/filecmp.cpython-313.pyc +0 -0
  108. package/python/Lib/__pycache__/fnmatch.cpython-313.pyc +0 -0
  109. package/python/Lib/__pycache__/fractions.cpython-313.pyc +0 -0
  110. package/python/Lib/__pycache__/functools.cpython-313.pyc +0 -0
  111. package/python/Lib/__pycache__/getpass.cpython-313.pyc +0 -0
  112. package/python/Lib/__pycache__/gettext.cpython-313.pyc +0 -0
  113. package/python/Lib/__pycache__/glob.cpython-313.pyc +0 -0
  114. package/python/Lib/__pycache__/gzip.cpython-313.pyc +0 -0
  115. package/python/Lib/__pycache__/hashlib.cpython-313.pyc +0 -0
  116. package/python/Lib/__pycache__/heapq.cpython-313.pyc +0 -0
  117. package/python/Lib/__pycache__/hmac.cpython-313.pyc +0 -0
  118. package/python/Lib/__pycache__/inspect.cpython-313.pyc +0 -0
  119. package/python/Lib/__pycache__/ipaddress.cpython-313.pyc +0 -0
  120. package/python/Lib/__pycache__/keyword.cpython-313.pyc +0 -0
  121. package/python/Lib/__pycache__/linecache.cpython-313.pyc +0 -0
  122. package/python/Lib/__pycache__/locale.cpython-313.pyc +0 -0
  123. package/python/Lib/__pycache__/lzma.cpython-313.pyc +0 -0
  124. package/python/Lib/__pycache__/mimetypes.cpython-313.pyc +0 -0
  125. package/python/Lib/__pycache__/nturl2path.cpython-313.pyc +0 -0
  126. package/python/Lib/__pycache__/numbers.cpython-313.pyc +0 -0
  127. package/python/Lib/__pycache__/opcode.cpython-313.pyc +0 -0
  128. package/python/Lib/__pycache__/operator.cpython-313.pyc +0 -0
  129. package/python/Lib/__pycache__/optparse.cpython-313.pyc +0 -0
  130. package/python/Lib/__pycache__/pickle.cpython-313.pyc +0 -0
  131. package/python/Lib/__pycache__/pkgutil.cpython-313.pyc +0 -0
  132. package/python/Lib/__pycache__/platform.cpython-313.pyc +0 -0
  133. package/python/Lib/__pycache__/py_compile.cpython-313.pyc +0 -0
  134. package/python/Lib/__pycache__/queue.cpython-313.pyc +0 -0
  135. package/python/Lib/__pycache__/quopri.cpython-313.pyc +0 -0
  136. package/python/Lib/__pycache__/random.cpython-313.pyc +0 -0
  137. package/python/Lib/__pycache__/reprlib.cpython-313.pyc +0 -0
  138. package/python/Lib/__pycache__/selectors.cpython-313.pyc +0 -0
  139. package/python/Lib/__pycache__/shlex.cpython-313.pyc +0 -0
  140. package/python/Lib/__pycache__/shutil.cpython-313.pyc +0 -0
  141. package/python/Lib/__pycache__/signal.cpython-313.pyc +0 -0
  142. package/python/Lib/__pycache__/socket.cpython-313.pyc +0 -0
  143. package/python/Lib/__pycache__/socketserver.cpython-313.pyc +0 -0
  144. package/python/Lib/__pycache__/ssl.cpython-313.pyc +0 -0
  145. package/python/Lib/__pycache__/string.cpython-313.pyc +0 -0
  146. package/python/Lib/__pycache__/stringprep.cpython-313.pyc +0 -0
  147. package/python/Lib/__pycache__/struct.cpython-313.pyc +0 -0
  148. package/python/Lib/__pycache__/subprocess.cpython-313.pyc +0 -0
  149. package/python/Lib/__pycache__/tarfile.cpython-313.pyc +0 -0
  150. package/python/Lib/__pycache__/tempfile.cpython-313.pyc +0 -0
  151. package/python/Lib/__pycache__/textwrap.cpython-313.pyc +0 -0
  152. package/python/Lib/__pycache__/threading.cpython-313.pyc +0 -0
  153. package/python/Lib/__pycache__/token.cpython-313.pyc +0 -0
  154. package/python/Lib/__pycache__/tokenize.cpython-313.pyc +0 -0
  155. package/python/Lib/__pycache__/traceback.cpython-313.pyc +0 -0
  156. package/python/Lib/__pycache__/types.cpython-313.pyc +0 -0
  157. package/python/Lib/__pycache__/typing.cpython-313.pyc +0 -0
  158. package/python/Lib/__pycache__/uuid.cpython-313.pyc +0 -0
  159. package/python/Lib/__pycache__/warnings.cpython-313.pyc +0 -0
  160. package/python/Lib/__pycache__/weakref.cpython-313.pyc +0 -0
  161. package/python/Lib/_aix_support.py +108 -0
  162. package/python/Lib/_android_support.py +192 -0
  163. package/python/Lib/_apple_support.py +66 -0
  164. package/python/Lib/_collections_abc.py +1182 -0
  165. package/python/Lib/_colorize.py +119 -0
  166. package/python/Lib/_compat_pickle.py +251 -0
  167. package/python/Lib/_compression.py +162 -0
  168. package/python/Lib/_ios_support.py +71 -0
  169. package/python/Lib/_markupbase.py +396 -0
  170. package/python/Lib/_opcode_metadata.py +343 -0
  171. package/python/Lib/_osx_support.py +579 -0
  172. package/python/Lib/_py_abc.py +147 -0
  173. package/python/Lib/_pydatetime.py +2639 -0
  174. package/python/Lib/_pydecimal.py +6351 -0
  175. package/python/Lib/_pyio.py +2704 -0
  176. package/python/Lib/_pylong.py +363 -0
  177. package/python/Lib/_pyrepl/__init__.py +19 -0
  178. package/python/Lib/_pyrepl/__main__.py +10 -0
  179. package/python/Lib/_pyrepl/_minimal_curses.py +68 -0
  180. package/python/Lib/_pyrepl/_threading_handler.py +74 -0
  181. package/python/Lib/_pyrepl/base_eventqueue.py +110 -0
  182. package/python/Lib/_pyrepl/commands.py +492 -0
  183. package/python/Lib/_pyrepl/completing_reader.py +295 -0
  184. package/python/Lib/_pyrepl/console.py +229 -0
  185. package/python/Lib/_pyrepl/curses.py +33 -0
  186. package/python/Lib/_pyrepl/fancy_termios.py +82 -0
  187. package/python/Lib/_pyrepl/historical_reader.py +419 -0
  188. package/python/Lib/_pyrepl/input.py +114 -0
  189. package/python/Lib/_pyrepl/keymap.py +213 -0
  190. package/python/Lib/_pyrepl/main.py +59 -0
  191. package/python/Lib/_pyrepl/mypy.ini +29 -0
  192. package/python/Lib/_pyrepl/pager.py +175 -0
  193. package/python/Lib/_pyrepl/reader.py +764 -0
  194. package/python/Lib/_pyrepl/readline.py +599 -0
  195. package/python/Lib/_pyrepl/simple_interact.py +180 -0
  196. package/python/Lib/_pyrepl/trace.py +21 -0
  197. package/python/Lib/_pyrepl/types.py +10 -0
  198. package/python/Lib/_pyrepl/unix_console.py +852 -0
  199. package/python/Lib/_pyrepl/unix_eventqueue.py +76 -0
  200. package/python/Lib/_pyrepl/utils.py +83 -0
  201. package/python/Lib/_pyrepl/windows_console.py +692 -0
  202. package/python/Lib/_pyrepl/windows_eventqueue.py +42 -0
  203. package/python/Lib/_sitebuiltins.py +91 -0
  204. package/python/Lib/_strptime.py +800 -0
  205. package/python/Lib/_threading_local.py +120 -0
  206. package/python/Lib/_weakrefset.py +205 -0
  207. package/python/Lib/abc.py +188 -0
  208. package/python/Lib/antigravity.py +17 -0
  209. package/python/Lib/argparse.py +2690 -0
  210. package/python/Lib/ast.py +1865 -0
  211. package/python/Lib/asyncio/__init__.py +47 -0
  212. package/python/Lib/asyncio/__main__.py +207 -0
  213. package/python/Lib/asyncio/base_events.py +2075 -0
  214. package/python/Lib/asyncio/base_futures.py +67 -0
  215. package/python/Lib/asyncio/base_subprocess.py +319 -0
  216. package/python/Lib/asyncio/base_tasks.py +94 -0
  217. package/python/Lib/asyncio/constants.py +41 -0
  218. package/python/Lib/asyncio/coroutines.py +109 -0
  219. package/python/Lib/asyncio/events.py +882 -0
  220. package/python/Lib/asyncio/exceptions.py +62 -0
  221. package/python/Lib/asyncio/format_helpers.py +84 -0
  222. package/python/Lib/asyncio/futures.py +425 -0
  223. package/python/Lib/asyncio/locks.py +617 -0
  224. package/python/Lib/asyncio/log.py +7 -0
  225. package/python/Lib/asyncio/mixins.py +21 -0
  226. package/python/Lib/asyncio/proactor_events.py +896 -0
  227. package/python/Lib/asyncio/protocols.py +216 -0
  228. package/python/Lib/asyncio/queues.py +307 -0
  229. package/python/Lib/asyncio/runners.py +216 -0
  230. package/python/Lib/asyncio/selector_events.py +1326 -0
  231. package/python/Lib/asyncio/sslproto.py +929 -0
  232. package/python/Lib/asyncio/staggered.py +174 -0
  233. package/python/Lib/asyncio/streams.py +787 -0
  234. package/python/Lib/asyncio/subprocess.py +229 -0
  235. package/python/Lib/asyncio/taskgroups.py +278 -0
  236. package/python/Lib/asyncio/tasks.py +1118 -0
  237. package/python/Lib/asyncio/threads.py +25 -0
  238. package/python/Lib/asyncio/timeouts.py +184 -0
  239. package/python/Lib/asyncio/transports.py +337 -0
  240. package/python/Lib/asyncio/trsock.py +98 -0
  241. package/python/Lib/asyncio/unix_events.py +1536 -0
  242. package/python/Lib/asyncio/windows_events.py +903 -0
  243. package/python/Lib/asyncio/windows_utils.py +173 -0
  244. package/python/Lib/base64.py +621 -0
  245. package/python/Lib/bdb.py +973 -0
  246. package/python/Lib/bisect.py +118 -0
  247. package/python/Lib/bz2.py +352 -0
  248. package/python/Lib/cProfile.py +197 -0
  249. package/python/Lib/calendar.py +813 -0
  250. package/python/Lib/cmd.py +409 -0
  251. package/python/Lib/code.py +386 -0
  252. package/python/Lib/codecs.py +1132 -0
  253. package/python/Lib/codeop.py +155 -0
  254. package/python/Lib/collections/__init__.py +1600 -0
  255. package/python/Lib/collections/__pycache__/__init__.cpython-313.pyc +0 -0
  256. package/python/Lib/colorsys.py +166 -0
  257. package/python/Lib/compileall.py +470 -0
  258. package/python/Lib/concurrent/__init__.py +1 -0
  259. package/python/Lib/concurrent/futures/__init__.py +54 -0
  260. package/python/Lib/concurrent/futures/_base.py +654 -0
  261. package/python/Lib/concurrent/futures/process.py +862 -0
  262. package/python/Lib/concurrent/futures/thread.py +240 -0
  263. package/python/Lib/configparser.py +1387 -0
  264. package/python/Lib/contextlib.py +814 -0
  265. package/python/Lib/contextvars.py +4 -0
  266. package/python/Lib/copy.py +306 -0
  267. package/python/Lib/copyreg.py +217 -0
  268. package/python/Lib/csv.py +513 -0
  269. package/python/Lib/ctypes/__init__.py +600 -0
  270. package/python/Lib/ctypes/__pycache__/__init__.cpython-313.pyc +0 -0
  271. package/python/Lib/ctypes/__pycache__/_endian.cpython-313.pyc +0 -0
  272. package/python/Lib/ctypes/__pycache__/wintypes.cpython-313.pyc +0 -0
  273. package/python/Lib/ctypes/_aix.py +327 -0
  274. package/python/Lib/ctypes/_endian.py +78 -0
  275. package/python/Lib/ctypes/macholib/README.ctypes +7 -0
  276. package/python/Lib/ctypes/macholib/__init__.py +9 -0
  277. package/python/Lib/ctypes/macholib/dyld.py +165 -0
  278. package/python/Lib/ctypes/macholib/dylib.py +42 -0
  279. package/python/Lib/ctypes/macholib/fetch_macholib +2 -0
  280. package/python/Lib/ctypes/macholib/fetch_macholib.bat +1 -0
  281. package/python/Lib/ctypes/macholib/framework.py +42 -0
  282. package/python/Lib/ctypes/util.py +388 -0
  283. package/python/Lib/ctypes/wintypes.py +202 -0
  284. package/python/Lib/curses/__init__.py +101 -0
  285. package/python/Lib/curses/ascii.py +99 -0
  286. package/python/Lib/curses/has_key.py +192 -0
  287. package/python/Lib/curses/panel.py +6 -0
  288. package/python/Lib/curses/textpad.py +204 -0
  289. package/python/Lib/dataclasses.py +1630 -0
  290. package/python/Lib/datetime.py +9 -0
  291. package/python/Lib/dbm/__init__.py +194 -0
  292. package/python/Lib/dbm/dumb.py +319 -0
  293. package/python/Lib/dbm/gnu.py +3 -0
  294. package/python/Lib/dbm/ndbm.py +3 -0
  295. package/python/Lib/dbm/sqlite3.py +144 -0
  296. package/python/Lib/decimal.py +109 -0
  297. package/python/Lib/difflib.py +2056 -0
  298. package/python/Lib/dis.py +1075 -0
  299. package/python/Lib/doctest.py +2919 -0
  300. package/python/Lib/email/__init__.py +61 -0
  301. package/python/Lib/email/__pycache__/__init__.cpython-313.pyc +0 -0
  302. package/python/Lib/email/__pycache__/_encoded_words.cpython-313.pyc +0 -0
  303. package/python/Lib/email/__pycache__/_parseaddr.cpython-313.pyc +0 -0
  304. package/python/Lib/email/__pycache__/_policybase.cpython-313.pyc +0 -0
  305. package/python/Lib/email/__pycache__/base64mime.cpython-313.pyc +0 -0
  306. package/python/Lib/email/__pycache__/charset.cpython-313.pyc +0 -0
  307. package/python/Lib/email/__pycache__/encoders.cpython-313.pyc +0 -0
  308. package/python/Lib/email/__pycache__/errors.cpython-313.pyc +0 -0
  309. package/python/Lib/email/__pycache__/feedparser.cpython-313.pyc +0 -0
  310. package/python/Lib/email/__pycache__/header.cpython-313.pyc +0 -0
  311. package/python/Lib/email/__pycache__/iterators.cpython-313.pyc +0 -0
  312. package/python/Lib/email/__pycache__/message.cpython-313.pyc +0 -0
  313. package/python/Lib/email/__pycache__/parser.cpython-313.pyc +0 -0
  314. package/python/Lib/email/__pycache__/quoprimime.cpython-313.pyc +0 -0
  315. package/python/Lib/email/__pycache__/utils.cpython-313.pyc +0 -0
  316. package/python/Lib/email/_encoded_words.py +233 -0
  317. package/python/Lib/email/_header_value_parser.py +3145 -0
  318. package/python/Lib/email/_parseaddr.py +563 -0
  319. package/python/Lib/email/_policybase.py +382 -0
  320. package/python/Lib/email/architecture.rst +216 -0
  321. package/python/Lib/email/base64mime.py +115 -0
  322. package/python/Lib/email/charset.py +398 -0
  323. package/python/Lib/email/contentmanager.py +253 -0
  324. package/python/Lib/email/encoders.py +65 -0
  325. package/python/Lib/email/errors.py +117 -0
  326. package/python/Lib/email/feedparser.py +536 -0
  327. package/python/Lib/email/generator.py +530 -0
  328. package/python/Lib/email/header.py +582 -0
  329. package/python/Lib/email/headerregistry.py +618 -0
  330. package/python/Lib/email/iterators.py +68 -0
  331. package/python/Lib/email/message.py +1217 -0
  332. package/python/Lib/email/mime/__init__.py +0 -0
  333. package/python/Lib/email/mime/application.py +37 -0
  334. package/python/Lib/email/mime/audio.py +97 -0
  335. package/python/Lib/email/mime/base.py +29 -0
  336. package/python/Lib/email/mime/image.py +152 -0
  337. package/python/Lib/email/mime/message.py +33 -0
  338. package/python/Lib/email/mime/multipart.py +47 -0
  339. package/python/Lib/email/mime/nonmultipart.py +21 -0
  340. package/python/Lib/email/mime/text.py +40 -0
  341. package/python/Lib/email/parser.py +127 -0
  342. package/python/Lib/email/policy.py +232 -0
  343. package/python/Lib/email/quoprimime.py +300 -0
  344. package/python/Lib/email/utils.py +494 -0
  345. package/python/Lib/encodings/__init__.py +174 -0
  346. package/python/Lib/encodings/__pycache__/__init__.cpython-313.pyc +0 -0
  347. package/python/Lib/encodings/__pycache__/aliases.cpython-313.pyc +0 -0
  348. package/python/Lib/encodings/__pycache__/cp1252.cpython-313.pyc +0 -0
  349. package/python/Lib/encodings/__pycache__/cp437.cpython-313.pyc +0 -0
  350. package/python/Lib/encodings/__pycache__/hex_codec.cpython-313.pyc +0 -0
  351. package/python/Lib/encodings/__pycache__/idna.cpython-313.pyc +0 -0
  352. package/python/Lib/encodings/__pycache__/utf_8.cpython-313.pyc +0 -0
  353. package/python/Lib/encodings/aliases.py +552 -0
  354. package/python/Lib/encodings/ascii.py +50 -0
  355. package/python/Lib/encodings/base64_codec.py +55 -0
  356. package/python/Lib/encodings/big5.py +39 -0
  357. package/python/Lib/encodings/big5hkscs.py +39 -0
  358. package/python/Lib/encodings/bz2_codec.py +78 -0
  359. package/python/Lib/encodings/charmap.py +69 -0
  360. package/python/Lib/encodings/cp037.py +307 -0
  361. package/python/Lib/encodings/cp1006.py +307 -0
  362. package/python/Lib/encodings/cp1026.py +307 -0
  363. package/python/Lib/encodings/cp1125.py +698 -0
  364. package/python/Lib/encodings/cp1140.py +307 -0
  365. package/python/Lib/encodings/cp1250.py +307 -0
  366. package/python/Lib/encodings/cp1251.py +307 -0
  367. package/python/Lib/encodings/cp1252.py +307 -0
  368. package/python/Lib/encodings/cp1253.py +307 -0
  369. package/python/Lib/encodings/cp1254.py +307 -0
  370. package/python/Lib/encodings/cp1255.py +307 -0
  371. package/python/Lib/encodings/cp1256.py +307 -0
  372. package/python/Lib/encodings/cp1257.py +307 -0
  373. package/python/Lib/encodings/cp1258.py +307 -0
  374. package/python/Lib/encodings/cp273.py +307 -0
  375. package/python/Lib/encodings/cp424.py +307 -0
  376. package/python/Lib/encodings/cp437.py +698 -0
  377. package/python/Lib/encodings/cp500.py +307 -0
  378. package/python/Lib/encodings/cp720.py +309 -0
  379. package/python/Lib/encodings/cp737.py +698 -0
  380. package/python/Lib/encodings/cp775.py +697 -0
  381. package/python/Lib/encodings/cp850.py +698 -0
  382. package/python/Lib/encodings/cp852.py +698 -0
  383. package/python/Lib/encodings/cp855.py +698 -0
  384. package/python/Lib/encodings/cp856.py +307 -0
  385. package/python/Lib/encodings/cp857.py +694 -0
  386. package/python/Lib/encodings/cp858.py +698 -0
  387. package/python/Lib/encodings/cp860.py +698 -0
  388. package/python/Lib/encodings/cp861.py +698 -0
  389. package/python/Lib/encodings/cp862.py +698 -0
  390. package/python/Lib/encodings/cp863.py +698 -0
  391. package/python/Lib/encodings/cp864.py +690 -0
  392. package/python/Lib/encodings/cp865.py +698 -0
  393. package/python/Lib/encodings/cp866.py +698 -0
  394. package/python/Lib/encodings/cp869.py +689 -0
  395. package/python/Lib/encodings/cp874.py +307 -0
  396. package/python/Lib/encodings/cp875.py +307 -0
  397. package/python/Lib/encodings/cp932.py +39 -0
  398. package/python/Lib/encodings/cp949.py +39 -0
  399. package/python/Lib/encodings/cp950.py +39 -0
  400. package/python/Lib/encodings/euc_jis_2004.py +39 -0
  401. package/python/Lib/encodings/euc_jisx0213.py +39 -0
  402. package/python/Lib/encodings/euc_jp.py +39 -0
  403. package/python/Lib/encodings/euc_kr.py +39 -0
  404. package/python/Lib/encodings/gb18030.py +39 -0
  405. package/python/Lib/encodings/gb2312.py +39 -0
  406. package/python/Lib/encodings/gbk.py +39 -0
  407. package/python/Lib/encodings/hex_codec.py +55 -0
  408. package/python/Lib/encodings/hp_roman8.py +314 -0
  409. package/python/Lib/encodings/hz.py +39 -0
  410. package/python/Lib/encodings/idna.py +387 -0
  411. package/python/Lib/encodings/iso2022_jp.py +39 -0
  412. package/python/Lib/encodings/iso2022_jp_1.py +39 -0
  413. package/python/Lib/encodings/iso2022_jp_2.py +39 -0
  414. package/python/Lib/encodings/iso2022_jp_2004.py +39 -0
  415. package/python/Lib/encodings/iso2022_jp_3.py +39 -0
  416. package/python/Lib/encodings/iso2022_jp_ext.py +39 -0
  417. package/python/Lib/encodings/iso2022_kr.py +39 -0
  418. package/python/Lib/encodings/iso8859_1.py +307 -0
  419. package/python/Lib/encodings/iso8859_10.py +307 -0
  420. package/python/Lib/encodings/iso8859_11.py +307 -0
  421. package/python/Lib/encodings/iso8859_13.py +307 -0
  422. package/python/Lib/encodings/iso8859_14.py +307 -0
  423. package/python/Lib/encodings/iso8859_15.py +307 -0
  424. package/python/Lib/encodings/iso8859_16.py +307 -0
  425. package/python/Lib/encodings/iso8859_2.py +307 -0
  426. package/python/Lib/encodings/iso8859_3.py +307 -0
  427. package/python/Lib/encodings/iso8859_4.py +307 -0
  428. package/python/Lib/encodings/iso8859_5.py +307 -0
  429. package/python/Lib/encodings/iso8859_6.py +307 -0
  430. package/python/Lib/encodings/iso8859_7.py +307 -0
  431. package/python/Lib/encodings/iso8859_8.py +307 -0
  432. package/python/Lib/encodings/iso8859_9.py +307 -0
  433. package/python/Lib/encodings/johab.py +39 -0
  434. package/python/Lib/encodings/koi8_r.py +307 -0
  435. package/python/Lib/encodings/koi8_t.py +308 -0
  436. package/python/Lib/encodings/koi8_u.py +307 -0
  437. package/python/Lib/encodings/kz1048.py +307 -0
  438. package/python/Lib/encodings/latin_1.py +50 -0
  439. package/python/Lib/encodings/mac_arabic.py +698 -0
  440. package/python/Lib/encodings/mac_croatian.py +307 -0
  441. package/python/Lib/encodings/mac_cyrillic.py +307 -0
  442. package/python/Lib/encodings/mac_farsi.py +307 -0
  443. package/python/Lib/encodings/mac_greek.py +307 -0
  444. package/python/Lib/encodings/mac_iceland.py +307 -0
  445. package/python/Lib/encodings/mac_latin2.py +312 -0
  446. package/python/Lib/encodings/mac_roman.py +307 -0
  447. package/python/Lib/encodings/mac_romanian.py +307 -0
  448. package/python/Lib/encodings/mac_turkish.py +307 -0
  449. package/python/Lib/encodings/mbcs.py +47 -0
  450. package/python/Lib/encodings/oem.py +41 -0
  451. package/python/Lib/encodings/palmos.py +308 -0
  452. package/python/Lib/encodings/ptcp154.py +312 -0
  453. package/python/Lib/encodings/punycode.py +253 -0
  454. package/python/Lib/encodings/quopri_codec.py +56 -0
  455. package/python/Lib/encodings/raw_unicode_escape.py +46 -0
  456. package/python/Lib/encodings/rot_13.py +113 -0
  457. package/python/Lib/encodings/shift_jis.py +39 -0
  458. package/python/Lib/encodings/shift_jis_2004.py +39 -0
  459. package/python/Lib/encodings/shift_jisx0213.py +39 -0
  460. package/python/Lib/encodings/tis_620.py +307 -0
  461. package/python/Lib/encodings/undefined.py +49 -0
  462. package/python/Lib/encodings/unicode_escape.py +46 -0
  463. package/python/Lib/encodings/utf_16.py +155 -0
  464. package/python/Lib/encodings/utf_16_be.py +42 -0
  465. package/python/Lib/encodings/utf_16_le.py +42 -0
  466. package/python/Lib/encodings/utf_32.py +150 -0
  467. package/python/Lib/encodings/utf_32_be.py +37 -0
  468. package/python/Lib/encodings/utf_32_le.py +37 -0
  469. package/python/Lib/encodings/utf_7.py +38 -0
  470. package/python/Lib/encodings/utf_8.py +42 -0
  471. package/python/Lib/encodings/utf_8_sig.py +130 -0
  472. package/python/Lib/encodings/uu_codec.py +103 -0
  473. package/python/Lib/encodings/zlib_codec.py +77 -0
  474. package/python/Lib/ensurepip/__init__.py +264 -0
  475. package/python/Lib/ensurepip/__main__.py +5 -0
  476. package/python/Lib/ensurepip/_bundled/pip-25.3-py3-none-any.whl +0 -0
  477. package/python/Lib/ensurepip/_uninstall.py +31 -0
  478. package/python/Lib/enum.py +2182 -0
  479. package/python/Lib/filecmp.py +320 -0
  480. package/python/Lib/fileinput.py +442 -0
  481. package/python/Lib/fnmatch.py +192 -0
  482. package/python/Lib/fractions.py +1043 -0
  483. package/python/Lib/ftplib.py +966 -0
  484. package/python/Lib/functools.py +1036 -0
  485. package/python/Lib/genericpath.py +200 -0
  486. package/python/Lib/getopt.py +215 -0
  487. package/python/Lib/getpass.py +192 -0
  488. package/python/Lib/gettext.py +657 -0
  489. package/python/Lib/glob.py +551 -0
  490. package/python/Lib/graphlib.py +250 -0
  491. package/python/Lib/gzip.py +691 -0
  492. package/python/Lib/hashlib.py +255 -0
  493. package/python/Lib/heapq.py +603 -0
  494. package/python/Lib/hmac.py +220 -0
  495. package/python/Lib/html/__init__.py +132 -0
  496. package/python/Lib/html/__pycache__/__init__.cpython-313.pyc +0 -0
  497. package/python/Lib/html/__pycache__/entities.cpython-313.pyc +0 -0
  498. package/python/Lib/html/__pycache__/parser.cpython-313.pyc +0 -0
  499. package/python/Lib/html/entities.py +2513 -0
  500. package/python/Lib/html/parser.py +553 -0
  501. package/python/Lib/http/__init__.py +202 -0
  502. package/python/Lib/http/__pycache__/__init__.cpython-313.pyc +0 -0
  503. package/python/Lib/http/__pycache__/client.cpython-313.pyc +0 -0
  504. package/python/Lib/http/__pycache__/cookiejar.cpython-313.pyc +0 -0
  505. package/python/Lib/http/__pycache__/cookies.cpython-313.pyc +0 -0
  506. package/python/Lib/http/client.py +1570 -0
  507. package/python/Lib/http/cookiejar.py +2122 -0
  508. package/python/Lib/http/cookies.py +615 -0
  509. package/python/Lib/http/server.py +1351 -0
  510. package/python/Lib/idlelib/CREDITS.txt +48 -0
  511. package/python/Lib/idlelib/ChangeLog +1591 -0
  512. package/python/Lib/idlelib/HISTORY.txt +296 -0
  513. package/python/Lib/idlelib/Icons/README.txt +51 -0
  514. package/python/Lib/idlelib/Icons/folder.gif +0 -0
  515. package/python/Lib/idlelib/Icons/idle.ico +0 -0
  516. package/python/Lib/idlelib/Icons/idle_16.gif +0 -0
  517. package/python/Lib/idlelib/Icons/idle_16.png +0 -0
  518. package/python/Lib/idlelib/Icons/idle_256.png +0 -0
  519. package/python/Lib/idlelib/Icons/idle_32.gif +0 -0
  520. package/python/Lib/idlelib/Icons/idle_32.png +0 -0
  521. package/python/Lib/idlelib/Icons/idle_48.gif +0 -0
  522. package/python/Lib/idlelib/Icons/idle_48.png +0 -0
  523. package/python/Lib/idlelib/Icons/minusnode.gif +0 -0
  524. package/python/Lib/idlelib/Icons/openfolder.gif +0 -0
  525. package/python/Lib/idlelib/Icons/plusnode.gif +0 -0
  526. package/python/Lib/idlelib/Icons/python.gif +0 -0
  527. package/python/Lib/idlelib/Icons/tk.gif +0 -0
  528. package/python/Lib/idlelib/NEWS2x.txt +660 -0
  529. package/python/Lib/idlelib/News3.txt +1407 -0
  530. package/python/Lib/idlelib/README.txt +290 -0
  531. package/python/Lib/idlelib/TODO.txt +210 -0
  532. package/python/Lib/idlelib/__init__.py +10 -0
  533. package/python/Lib/idlelib/__main__.py +7 -0
  534. package/python/Lib/idlelib/autocomplete.py +228 -0
  535. package/python/Lib/idlelib/autocomplete_w.py +498 -0
  536. package/python/Lib/idlelib/autoexpand.py +96 -0
  537. package/python/Lib/idlelib/browser.py +260 -0
  538. package/python/Lib/idlelib/calltip.py +205 -0
  539. package/python/Lib/idlelib/calltip_w.py +202 -0
  540. package/python/Lib/idlelib/codecontext.py +270 -0
  541. package/python/Lib/idlelib/colorizer.py +384 -0
  542. package/python/Lib/idlelib/config-extensions.def +62 -0
  543. package/python/Lib/idlelib/config-highlight.def +105 -0
  544. package/python/Lib/idlelib/config-keys.def +309 -0
  545. package/python/Lib/idlelib/config-main.def +92 -0
  546. package/python/Lib/idlelib/config.py +917 -0
  547. package/python/Lib/idlelib/config_key.py +354 -0
  548. package/python/Lib/idlelib/configdialog.py +2408 -0
  549. package/python/Lib/idlelib/debugger.py +602 -0
  550. package/python/Lib/idlelib/debugger_r.py +390 -0
  551. package/python/Lib/idlelib/debugobj.py +146 -0
  552. package/python/Lib/idlelib/debugobj_r.py +41 -0
  553. package/python/Lib/idlelib/delegator.py +34 -0
  554. package/python/Lib/idlelib/dynoption.py +57 -0
  555. package/python/Lib/idlelib/editor.py +1721 -0
  556. package/python/Lib/idlelib/extend.txt +83 -0
  557. package/python/Lib/idlelib/filelist.py +132 -0
  558. package/python/Lib/idlelib/format.py +426 -0
  559. package/python/Lib/idlelib/grep.py +223 -0
  560. package/python/Lib/idlelib/help.html +865 -0
  561. package/python/Lib/idlelib/help.py +343 -0
  562. package/python/Lib/idlelib/help_about.py +211 -0
  563. package/python/Lib/idlelib/history.py +106 -0
  564. package/python/Lib/idlelib/hyperparser.py +312 -0
  565. package/python/Lib/idlelib/idle.bat +4 -0
  566. package/python/Lib/idlelib/idle.py +14 -0
  567. package/python/Lib/idlelib/idle.pyw +17 -0
  568. package/python/Lib/idlelib/iomenu.py +441 -0
  569. package/python/Lib/idlelib/macosx.py +278 -0
  570. package/python/Lib/idlelib/mainmenu.py +126 -0
  571. package/python/Lib/idlelib/multicall.py +451 -0
  572. package/python/Lib/idlelib/outwin.py +188 -0
  573. package/python/Lib/idlelib/parenmatch.py +183 -0
  574. package/python/Lib/idlelib/pathbrowser.py +107 -0
  575. package/python/Lib/idlelib/percolator.py +120 -0
  576. package/python/Lib/idlelib/pyparse.py +589 -0
  577. package/python/Lib/idlelib/pyshell.py +1699 -0
  578. package/python/Lib/idlelib/query.py +390 -0
  579. package/python/Lib/idlelib/redirector.py +174 -0
  580. package/python/Lib/idlelib/replace.py +299 -0
  581. package/python/Lib/idlelib/rpc.py +635 -0
  582. package/python/Lib/idlelib/run.py +653 -0
  583. package/python/Lib/idlelib/runscript.py +213 -0
  584. package/python/Lib/idlelib/scrolledlist.py +151 -0
  585. package/python/Lib/idlelib/search.py +165 -0
  586. package/python/Lib/idlelib/searchbase.py +210 -0
  587. package/python/Lib/idlelib/searchengine.py +234 -0
  588. package/python/Lib/idlelib/sidebar.py +543 -0
  589. package/python/Lib/idlelib/squeezer.py +345 -0
  590. package/python/Lib/idlelib/stackviewer.py +134 -0
  591. package/python/Lib/idlelib/statusbar.py +52 -0
  592. package/python/Lib/idlelib/textview.py +193 -0
  593. package/python/Lib/idlelib/tooltip.py +190 -0
  594. package/python/Lib/idlelib/tree.py +509 -0
  595. package/python/Lib/idlelib/undo.py +367 -0
  596. package/python/Lib/idlelib/util.py +37 -0
  597. package/python/Lib/idlelib/window.py +98 -0
  598. package/python/Lib/idlelib/zoomheight.py +124 -0
  599. package/python/Lib/idlelib/zzdummy.py +73 -0
  600. package/python/Lib/imaplib.py +1651 -0
  601. package/python/Lib/importlib/__init__.py +136 -0
  602. package/python/Lib/importlib/__pycache__/__init__.cpython-313.pyc +0 -0
  603. package/python/Lib/importlib/__pycache__/_abc.cpython-313.pyc +0 -0
  604. package/python/Lib/importlib/__pycache__/abc.cpython-313.pyc +0 -0
  605. package/python/Lib/importlib/__pycache__/readers.cpython-313.pyc +0 -0
  606. package/python/Lib/importlib/_abc.py +39 -0
  607. package/python/Lib/importlib/_bootstrap.py +1551 -0
  608. package/python/Lib/importlib/_bootstrap_external.py +1826 -0
  609. package/python/Lib/importlib/abc.py +243 -0
  610. package/python/Lib/importlib/machinery.py +21 -0
  611. package/python/Lib/importlib/metadata/__init__.py +1093 -0
  612. package/python/Lib/importlib/metadata/__pycache__/__init__.cpython-313.pyc +0 -0
  613. package/python/Lib/importlib/metadata/__pycache__/_adapters.cpython-313.pyc +0 -0
  614. package/python/Lib/importlib/metadata/__pycache__/_collections.cpython-313.pyc +0 -0
  615. package/python/Lib/importlib/metadata/__pycache__/_functools.cpython-313.pyc +0 -0
  616. package/python/Lib/importlib/metadata/__pycache__/_itertools.cpython-313.pyc +0 -0
  617. package/python/Lib/importlib/metadata/__pycache__/_meta.cpython-313.pyc +0 -0
  618. package/python/Lib/importlib/metadata/__pycache__/_text.cpython-313.pyc +0 -0
  619. package/python/Lib/importlib/metadata/_adapters.py +89 -0
  620. package/python/Lib/importlib/metadata/_collections.py +30 -0
  621. package/python/Lib/importlib/metadata/_functools.py +104 -0
  622. package/python/Lib/importlib/metadata/_itertools.py +73 -0
  623. package/python/Lib/importlib/metadata/_meta.py +67 -0
  624. package/python/Lib/importlib/metadata/_text.py +99 -0
  625. package/python/Lib/importlib/metadata/diagnose.py +21 -0
  626. package/python/Lib/importlib/readers.py +12 -0
  627. package/python/Lib/importlib/resources/__init__.py +43 -0
  628. package/python/Lib/importlib/resources/__pycache__/__init__.cpython-313.pyc +0 -0
  629. package/python/Lib/importlib/resources/__pycache__/_adapters.cpython-313.pyc +0 -0
  630. package/python/Lib/importlib/resources/__pycache__/_common.cpython-313.pyc +0 -0
  631. package/python/Lib/importlib/resources/__pycache__/_functional.cpython-313.pyc +0 -0
  632. package/python/Lib/importlib/resources/__pycache__/_itertools.cpython-313.pyc +0 -0
  633. package/python/Lib/importlib/resources/__pycache__/abc.cpython-313.pyc +0 -0
  634. package/python/Lib/importlib/resources/__pycache__/readers.cpython-313.pyc +0 -0
  635. package/python/Lib/importlib/resources/_adapters.py +168 -0
  636. package/python/Lib/importlib/resources/_common.py +211 -0
  637. package/python/Lib/importlib/resources/_functional.py +81 -0
  638. package/python/Lib/importlib/resources/_itertools.py +38 -0
  639. package/python/Lib/importlib/resources/abc.py +173 -0
  640. package/python/Lib/importlib/resources/readers.py +203 -0
  641. package/python/Lib/importlib/resources/simple.py +106 -0
  642. package/python/Lib/importlib/simple.py +14 -0
  643. package/python/Lib/importlib/util.py +274 -0
  644. package/python/Lib/inspect.py +3471 -0
  645. package/python/Lib/io.py +99 -0
  646. package/python/Lib/ipaddress.py +2440 -0
  647. package/python/Lib/json/__init__.py +365 -0
  648. package/python/Lib/json/__pycache__/__init__.cpython-313.pyc +0 -0
  649. package/python/Lib/json/__pycache__/decoder.cpython-313.pyc +0 -0
  650. package/python/Lib/json/__pycache__/encoder.cpython-313.pyc +0 -0
  651. package/python/Lib/json/__pycache__/scanner.cpython-313.pyc +0 -0
  652. package/python/Lib/json/decoder.py +364 -0
  653. package/python/Lib/json/encoder.py +446 -0
  654. package/python/Lib/json/scanner.py +73 -0
  655. package/python/Lib/json/tool.py +89 -0
  656. package/python/Lib/keyword.py +64 -0
  657. package/python/Lib/linecache.py +236 -0
  658. package/python/Lib/locale.py +1778 -0
  659. package/python/Lib/logging/__init__.py +2326 -0
  660. package/python/Lib/logging/__pycache__/__init__.cpython-313.pyc +0 -0
  661. package/python/Lib/logging/__pycache__/config.cpython-313.pyc +0 -0
  662. package/python/Lib/logging/__pycache__/handlers.cpython-313.pyc +0 -0
  663. package/python/Lib/logging/config.py +1065 -0
  664. package/python/Lib/logging/handlers.py +1629 -0
  665. package/python/Lib/lzma.py +364 -0
  666. package/python/Lib/mailbox.py +2219 -0
  667. package/python/Lib/mimetypes.py +679 -0
  668. package/python/Lib/modulefinder.py +671 -0
  669. package/python/Lib/multiprocessing/__init__.py +37 -0
  670. package/python/Lib/multiprocessing/connection.py +1190 -0
  671. package/python/Lib/multiprocessing/context.py +377 -0
  672. package/python/Lib/multiprocessing/dummy/__init__.py +126 -0
  673. package/python/Lib/multiprocessing/dummy/connection.py +75 -0
  674. package/python/Lib/multiprocessing/forkserver.py +364 -0
  675. package/python/Lib/multiprocessing/heap.py +337 -0
  676. package/python/Lib/multiprocessing/managers.py +1397 -0
  677. package/python/Lib/multiprocessing/pool.py +957 -0
  678. package/python/Lib/multiprocessing/popen_fork.py +87 -0
  679. package/python/Lib/multiprocessing/popen_forkserver.py +74 -0
  680. package/python/Lib/multiprocessing/popen_spawn_posix.py +76 -0
  681. package/python/Lib/multiprocessing/popen_spawn_win32.py +147 -0
  682. package/python/Lib/multiprocessing/process.py +436 -0
  683. package/python/Lib/multiprocessing/queues.py +399 -0
  684. package/python/Lib/multiprocessing/reduction.py +281 -0
  685. package/python/Lib/multiprocessing/resource_sharer.py +154 -0
  686. package/python/Lib/multiprocessing/resource_tracker.py +420 -0
  687. package/python/Lib/multiprocessing/shared_memory.py +544 -0
  688. package/python/Lib/multiprocessing/sharedctypes.py +240 -0
  689. package/python/Lib/multiprocessing/spawn.py +307 -0
  690. package/python/Lib/multiprocessing/synchronize.py +404 -0
  691. package/python/Lib/multiprocessing/util.py +562 -0
  692. package/python/Lib/netrc.py +199 -0
  693. package/python/Lib/ntpath.py +870 -0
  694. package/python/Lib/nturl2path.py +69 -0
  695. package/python/Lib/numbers.py +427 -0
  696. package/python/Lib/opcode.py +115 -0
  697. package/python/Lib/operator.py +467 -0
  698. package/python/Lib/optparse.py +1681 -0
  699. package/python/Lib/os.py +1184 -0
  700. package/python/Lib/pathlib/__init__.py +12 -0
  701. package/python/Lib/pathlib/__pycache__/__init__.cpython-313.pyc +0 -0
  702. package/python/Lib/pathlib/__pycache__/_abc.cpython-313.pyc +0 -0
  703. package/python/Lib/pathlib/__pycache__/_local.cpython-313.pyc +0 -0
  704. package/python/Lib/pathlib/_abc.py +930 -0
  705. package/python/Lib/pathlib/_local.py +861 -0
  706. package/python/Lib/pdb.py +2550 -0
  707. package/python/Lib/pickle.py +1866 -0
  708. package/python/Lib/pickletools.py +2904 -0
  709. package/python/Lib/pkgutil.py +529 -0
  710. package/python/Lib/platform.py +1454 -0
  711. package/python/Lib/plistlib.py +948 -0
  712. package/python/Lib/poplib.py +477 -0
  713. package/python/Lib/posixpath.py +578 -0
  714. package/python/Lib/pprint.py +658 -0
  715. package/python/Lib/profile.py +616 -0
  716. package/python/Lib/pstats.py +778 -0
  717. package/python/Lib/pty.py +211 -0
  718. package/python/Lib/py_compile.py +212 -0
  719. package/python/Lib/pyclbr.py +314 -0
  720. package/python/Lib/pydoc.py +2859 -0
  721. package/python/Lib/pydoc_data/__init__.py +0 -0
  722. package/python/Lib/pydoc_data/_pydoc.css +112 -0
  723. package/python/Lib/pydoc_data/module_docs.py +314 -0
  724. package/python/Lib/pydoc_data/topics.py +13000 -0
  725. package/python/Lib/queue.py +383 -0
  726. package/python/Lib/quopri.py +237 -0
  727. package/python/Lib/random.py +1070 -0
  728. package/python/Lib/re/__init__.py +428 -0
  729. package/python/Lib/re/__pycache__/__init__.cpython-313.pyc +0 -0
  730. package/python/Lib/re/__pycache__/_casefix.cpython-313.pyc +0 -0
  731. package/python/Lib/re/__pycache__/_compiler.cpython-313.pyc +0 -0
  732. package/python/Lib/re/__pycache__/_constants.cpython-313.pyc +0 -0
  733. package/python/Lib/re/__pycache__/_parser.cpython-313.pyc +0 -0
  734. package/python/Lib/re/_casefix.py +106 -0
  735. package/python/Lib/re/_compiler.py +768 -0
  736. package/python/Lib/re/_constants.py +222 -0
  737. package/python/Lib/re/_parser.py +1081 -0
  738. package/python/Lib/reprlib.py +230 -0
  739. package/python/Lib/rlcompleter.py +221 -0
  740. package/python/Lib/runpy.py +319 -0
  741. package/python/Lib/sched.py +167 -0
  742. package/python/Lib/secrets.py +71 -0
  743. package/python/Lib/selectors.py +603 -0
  744. package/python/Lib/shelve.py +250 -0
  745. package/python/Lib/shlex.py +345 -0
  746. package/python/Lib/shutil.py +1583 -0
  747. package/python/Lib/signal.py +94 -0
  748. package/python/Lib/site-packages/README.txt +2 -0
  749. package/python/Lib/site-packages/pip/__init__.py +13 -0
  750. package/python/Lib/site-packages/pip/__main__.py +24 -0
  751. package/python/Lib/site-packages/pip/__pip-runner__.py +50 -0
  752. package/python/Lib/site-packages/pip/__pycache__/__init__.cpython-313.pyc +0 -0
  753. package/python/Lib/site-packages/pip/__pycache__/__main__.cpython-313.pyc +0 -0
  754. package/python/Lib/site-packages/pip/__pycache__/__pip-runner__.cpython-313.pyc +0 -0
  755. package/python/Lib/site-packages/pip/_internal/__init__.py +18 -0
  756. package/python/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-313.pyc +0 -0
  757. package/python/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-313.pyc +0 -0
  758. package/python/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-313.pyc +0 -0
  759. package/python/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-313.pyc +0 -0
  760. package/python/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-313.pyc +0 -0
  761. package/python/Lib/site-packages/pip/_internal/__pycache__/main.cpython-313.pyc +0 -0
  762. package/python/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-313.pyc +0 -0
  763. package/python/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-313.pyc +0 -0
  764. package/python/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-313.pyc +0 -0
  765. package/python/Lib/site-packages/pip/_internal/build_env.py +606 -0
  766. package/python/Lib/site-packages/pip/_internal/cache.py +291 -0
  767. package/python/Lib/site-packages/pip/_internal/cli/__init__.py +3 -0
  768. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  769. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-313.pyc +0 -0
  770. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-313.pyc +0 -0
  771. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-313.pyc +0 -0
  772. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-313.pyc +0 -0
  773. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-313.pyc +0 -0
  774. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-313.pyc +0 -0
  775. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-313.pyc +0 -0
  776. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-313.pyc +0 -0
  777. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-313.pyc +0 -0
  778. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-313.pyc +0 -0
  779. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-313.pyc +0 -0
  780. package/python/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-313.pyc +0 -0
  781. package/python/Lib/site-packages/pip/_internal/cli/autocompletion.py +184 -0
  782. package/python/Lib/site-packages/pip/_internal/cli/base_command.py +255 -0
  783. package/python/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1267 -0
  784. package/python/Lib/site-packages/pip/_internal/cli/command_context.py +28 -0
  785. package/python/Lib/site-packages/pip/_internal/cli/index_command.py +195 -0
  786. package/python/Lib/site-packages/pip/_internal/cli/main.py +85 -0
  787. package/python/Lib/site-packages/pip/_internal/cli/main_parser.py +136 -0
  788. package/python/Lib/site-packages/pip/_internal/cli/parser.py +358 -0
  789. package/python/Lib/site-packages/pip/_internal/cli/progress_bars.py +153 -0
  790. package/python/Lib/site-packages/pip/_internal/cli/req_command.py +447 -0
  791. package/python/Lib/site-packages/pip/_internal/cli/spinners.py +235 -0
  792. package/python/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
  793. package/python/Lib/site-packages/pip/_internal/commands/__init__.py +139 -0
  794. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-313.pyc +0 -0
  795. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-313.pyc +0 -0
  796. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-313.pyc +0 -0
  797. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-313.pyc +0 -0
  798. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-313.pyc +0 -0
  799. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-313.pyc +0 -0
  800. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-313.pyc +0 -0
  801. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-313.pyc +0 -0
  802. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-313.pyc +0 -0
  803. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-313.pyc +0 -0
  804. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/index.cpython-313.pyc +0 -0
  805. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-313.pyc +0 -0
  806. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-313.pyc +0 -0
  807. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-313.pyc +0 -0
  808. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/lock.cpython-313.pyc +0 -0
  809. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-313.pyc +0 -0
  810. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-313.pyc +0 -0
  811. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-313.pyc +0 -0
  812. package/python/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-313.pyc +0 -0
  813. package/python/Lib/site-packages/pip/_internal/commands/cache.py +255 -0
  814. package/python/Lib/site-packages/pip/_internal/commands/check.py +66 -0
  815. package/python/Lib/site-packages/pip/_internal/commands/completion.py +136 -0
  816. package/python/Lib/site-packages/pip/_internal/commands/configuration.py +288 -0
  817. package/python/Lib/site-packages/pip/_internal/commands/debug.py +203 -0
  818. package/python/Lib/site-packages/pip/_internal/commands/download.py +146 -0
  819. package/python/Lib/site-packages/pip/_internal/commands/freeze.py +107 -0
  820. package/python/Lib/site-packages/pip/_internal/commands/hash.py +58 -0
  821. package/python/Lib/site-packages/pip/_internal/commands/help.py +40 -0
  822. package/python/Lib/site-packages/pip/_internal/commands/index.py +166 -0
  823. package/python/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
  824. package/python/Lib/site-packages/pip/_internal/commands/install.py +810 -0
  825. package/python/Lib/site-packages/pip/_internal/commands/list.py +398 -0
  826. package/python/Lib/site-packages/pip/_internal/commands/lock.py +175 -0
  827. package/python/Lib/site-packages/pip/_internal/commands/search.py +178 -0
  828. package/python/Lib/site-packages/pip/_internal/commands/show.py +231 -0
  829. package/python/Lib/site-packages/pip/_internal/commands/uninstall.py +113 -0
  830. package/python/Lib/site-packages/pip/_internal/commands/wheel.py +171 -0
  831. package/python/Lib/site-packages/pip/_internal/configuration.py +396 -0
  832. package/python/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
  833. package/python/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-313.pyc +0 -0
  834. package/python/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-313.pyc +0 -0
  835. package/python/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-313.pyc +0 -0
  836. package/python/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-313.pyc +0 -0
  837. package/python/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-313.pyc +0 -0
  838. package/python/Lib/site-packages/pip/_internal/distributions/base.py +55 -0
  839. package/python/Lib/site-packages/pip/_internal/distributions/installed.py +33 -0
  840. package/python/Lib/site-packages/pip/_internal/distributions/sdist.py +164 -0
  841. package/python/Lib/site-packages/pip/_internal/distributions/wheel.py +44 -0
  842. package/python/Lib/site-packages/pip/_internal/exceptions.py +971 -0
  843. package/python/Lib/site-packages/pip/_internal/index/__init__.py +1 -0
  844. package/python/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-313.pyc +0 -0
  845. package/python/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-313.pyc +0 -0
  846. package/python/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-313.pyc +0 -0
  847. package/python/Lib/site-packages/pip/_internal/index/__pycache__/sources.cpython-313.pyc +0 -0
  848. package/python/Lib/site-packages/pip/_internal/index/collector.py +488 -0
  849. package/python/Lib/site-packages/pip/_internal/index/package_finder.py +1125 -0
  850. package/python/Lib/site-packages/pip/_internal/index/sources.py +287 -0
  851. package/python/Lib/site-packages/pip/_internal/locations/__init__.py +440 -0
  852. package/python/Lib/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-313.pyc +0 -0
  853. package/python/Lib/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-313.pyc +0 -0
  854. package/python/Lib/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-313.pyc +0 -0
  855. package/python/Lib/site-packages/pip/_internal/locations/__pycache__/base.cpython-313.pyc +0 -0
  856. package/python/Lib/site-packages/pip/_internal/locations/_distutils.py +173 -0
  857. package/python/Lib/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
  858. package/python/Lib/site-packages/pip/_internal/locations/base.py +82 -0
  859. package/python/Lib/site-packages/pip/_internal/main.py +12 -0
  860. package/python/Lib/site-packages/pip/_internal/metadata/__init__.py +169 -0
  861. package/python/Lib/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-313.pyc +0 -0
  862. package/python/Lib/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-313.pyc +0 -0
  863. package/python/Lib/site-packages/pip/_internal/metadata/__pycache__/base.cpython-313.pyc +0 -0
  864. package/python/Lib/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-313.pyc +0 -0
  865. package/python/Lib/site-packages/pip/_internal/metadata/_json.py +87 -0
  866. package/python/Lib/site-packages/pip/_internal/metadata/base.py +685 -0
  867. package/python/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  868. package/python/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-313.pyc +0 -0
  869. package/python/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-313.pyc +0 -0
  870. package/python/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-313.pyc +0 -0
  871. package/python/Lib/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-313.pyc +0 -0
  872. package/python/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
  873. package/python/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
  874. package/python/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
  875. package/python/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
  876. package/python/Lib/site-packages/pip/_internal/models/__init__.py +1 -0
  877. package/python/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-313.pyc +0 -0
  878. package/python/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-313.pyc +0 -0
  879. package/python/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-313.pyc +0 -0
  880. package/python/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-313.pyc +0 -0
  881. package/python/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-313.pyc +0 -0
  882. package/python/Lib/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-313.pyc +0 -0
  883. package/python/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-313.pyc +0 -0
  884. package/python/Lib/site-packages/pip/_internal/models/__pycache__/release_control.cpython-313.pyc +0 -0
  885. package/python/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-313.pyc +0 -0
  886. package/python/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-313.pyc +0 -0
  887. package/python/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-313.pyc +0 -0
  888. package/python/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-313.pyc +0 -0
  889. package/python/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-313.pyc +0 -0
  890. package/python/Lib/site-packages/pip/_internal/models/candidate.py +25 -0
  891. package/python/Lib/site-packages/pip/_internal/models/direct_url.py +227 -0
  892. package/python/Lib/site-packages/pip/_internal/models/format_control.py +78 -0
  893. package/python/Lib/site-packages/pip/_internal/models/index.py +28 -0
  894. package/python/Lib/site-packages/pip/_internal/models/installation_report.py +57 -0
  895. package/python/Lib/site-packages/pip/_internal/models/link.py +617 -0
  896. package/python/Lib/site-packages/pip/_internal/models/release_control.py +92 -0
  897. package/python/Lib/site-packages/pip/_internal/models/scheme.py +25 -0
  898. package/python/Lib/site-packages/pip/_internal/models/search_scope.py +126 -0
  899. package/python/Lib/site-packages/pip/_internal/models/selection_prefs.py +56 -0
  900. package/python/Lib/site-packages/pip/_internal/models/target_python.py +122 -0
  901. package/python/Lib/site-packages/pip/_internal/models/wheel.py +80 -0
  902. package/python/Lib/site-packages/pip/_internal/network/__init__.py +1 -0
  903. package/python/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-313.pyc +0 -0
  904. package/python/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-313.pyc +0 -0
  905. package/python/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-313.pyc +0 -0
  906. package/python/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-313.pyc +0 -0
  907. package/python/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-313.pyc +0 -0
  908. package/python/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-313.pyc +0 -0
  909. package/python/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-313.pyc +0 -0
  910. package/python/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-313.pyc +0 -0
  911. package/python/Lib/site-packages/pip/_internal/network/auth.py +568 -0
  912. package/python/Lib/site-packages/pip/_internal/network/cache.py +128 -0
  913. package/python/Lib/site-packages/pip/_internal/network/download.py +341 -0
  914. package/python/Lib/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
  915. package/python/Lib/site-packages/pip/_internal/network/session.py +532 -0
  916. package/python/Lib/site-packages/pip/_internal/network/utils.py +98 -0
  917. package/python/Lib/site-packages/pip/_internal/network/xmlrpc.py +61 -0
  918. package/python/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  919. package/python/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-313.pyc +0 -0
  920. package/python/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-313.pyc +0 -0
  921. package/python/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-313.pyc +0 -0
  922. package/python/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-313.pyc +0 -0
  923. package/python/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  924. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-313.pyc +0 -0
  925. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-313.pyc +0 -0
  926. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-313.pyc +0 -0
  927. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-313.pyc +0 -0
  928. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-313.pyc +0 -0
  929. package/python/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-313.pyc +0 -0
  930. package/python/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
  931. package/python/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  932. package/python/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  933. package/python/Lib/site-packages/pip/_internal/operations/build/wheel.py +38 -0
  934. package/python/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
  935. package/python/Lib/site-packages/pip/_internal/operations/check.py +175 -0
  936. package/python/Lib/site-packages/pip/_internal/operations/freeze.py +259 -0
  937. package/python/Lib/site-packages/pip/_internal/operations/install/__init__.py +1 -0
  938. package/python/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-313.pyc +0 -0
  939. package/python/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-313.pyc +0 -0
  940. package/python/Lib/site-packages/pip/_internal/operations/install/wheel.py +745 -0
  941. package/python/Lib/site-packages/pip/_internal/operations/prepare.py +747 -0
  942. package/python/Lib/site-packages/pip/_internal/pyproject.py +123 -0
  943. package/python/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
  944. package/python/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-313.pyc +0 -0
  945. package/python/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-313.pyc +0 -0
  946. package/python/Lib/site-packages/pip/_internal/req/__pycache__/pep723.cpython-313.pyc +0 -0
  947. package/python/Lib/site-packages/pip/_internal/req/__pycache__/req_dependency_group.cpython-313.pyc +0 -0
  948. package/python/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-313.pyc +0 -0
  949. package/python/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-313.pyc +0 -0
  950. package/python/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-313.pyc +0 -0
  951. package/python/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-313.pyc +0 -0
  952. package/python/Lib/site-packages/pip/_internal/req/constructors.py +568 -0
  953. package/python/Lib/site-packages/pip/_internal/req/pep723.py +41 -0
  954. package/python/Lib/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
  955. package/python/Lib/site-packages/pip/_internal/req/req_file.py +631 -0
  956. package/python/Lib/site-packages/pip/_internal/req/req_install.py +828 -0
  957. package/python/Lib/site-packages/pip/_internal/req/req_set.py +81 -0
  958. package/python/Lib/site-packages/pip/_internal/req/req_uninstall.py +639 -0
  959. package/python/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  960. package/python/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-313.pyc +0 -0
  961. package/python/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-313.pyc +0 -0
  962. package/python/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
  963. package/python/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  964. package/python/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-313.pyc +0 -0
  965. package/python/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-313.pyc +0 -0
  966. package/python/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
  967. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  968. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-313.pyc +0 -0
  969. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-313.pyc +0 -0
  970. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-313.pyc +0 -0
  971. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-313.pyc +0 -0
  972. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-313.pyc +0 -0
  973. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-313.pyc +0 -0
  974. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-313.pyc +0 -0
  975. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-313.pyc +0 -0
  976. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-313.pyc +0 -0
  977. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
  978. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
  979. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +856 -0
  980. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
  981. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
  982. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
  983. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
  984. package/python/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
  985. package/python/Lib/site-packages/pip/_internal/self_outdated_check.py +255 -0
  986. package/python/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  987. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-313.pyc +0 -0
  988. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-313.pyc +0 -0
  989. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/_log.cpython-313.pyc +0 -0
  990. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-313.pyc +0 -0
  991. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-313.pyc +0 -0
  992. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-313.pyc +0 -0
  993. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-313.pyc +0 -0
  994. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-313.pyc +0 -0
  995. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-313.pyc +0 -0
  996. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-313.pyc +0 -0
  997. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-313.pyc +0 -0
  998. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-313.pyc +0 -0
  999. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-313.pyc +0 -0
  1000. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-313.pyc +0 -0
  1001. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-313.pyc +0 -0
  1002. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-313.pyc +0 -0
  1003. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-313.pyc +0 -0
  1004. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-313.pyc +0 -0
  1005. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/pylock.cpython-313.pyc +0 -0
  1006. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/retry.cpython-313.pyc +0 -0
  1007. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-313.pyc +0 -0
  1008. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-313.pyc +0 -0
  1009. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-313.pyc +0 -0
  1010. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-313.pyc +0 -0
  1011. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-313.pyc +0 -0
  1012. package/python/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-313.pyc +0 -0
  1013. package/python/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  1014. package/python/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
  1015. package/python/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
  1016. package/python/Lib/site-packages/pip/_internal/utils/compat.py +85 -0
  1017. package/python/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
  1018. package/python/Lib/site-packages/pip/_internal/utils/datetime.py +28 -0
  1019. package/python/Lib/site-packages/pip/_internal/utils/deprecation.py +126 -0
  1020. package/python/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  1021. package/python/Lib/site-packages/pip/_internal/utils/egg_link.py +81 -0
  1022. package/python/Lib/site-packages/pip/_internal/utils/entrypoints.py +88 -0
  1023. package/python/Lib/site-packages/pip/_internal/utils/filesystem.py +203 -0
  1024. package/python/Lib/site-packages/pip/_internal/utils/filetypes.py +24 -0
  1025. package/python/Lib/site-packages/pip/_internal/utils/glibc.py +102 -0
  1026. package/python/Lib/site-packages/pip/_internal/utils/hashes.py +150 -0
  1027. package/python/Lib/site-packages/pip/_internal/utils/logging.py +396 -0
  1028. package/python/Lib/site-packages/pip/_internal/utils/misc.py +771 -0
  1029. package/python/Lib/site-packages/pip/_internal/utils/packaging.py +44 -0
  1030. package/python/Lib/site-packages/pip/_internal/utils/pylock.py +116 -0
  1031. package/python/Lib/site-packages/pip/_internal/utils/retry.py +45 -0
  1032. package/python/Lib/site-packages/pip/_internal/utils/subprocess.py +248 -0
  1033. package/python/Lib/site-packages/pip/_internal/utils/temp_dir.py +294 -0
  1034. package/python/Lib/site-packages/pip/_internal/utils/unpacking.py +362 -0
  1035. package/python/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  1036. package/python/Lib/site-packages/pip/_internal/utils/virtualenv.py +105 -0
  1037. package/python/Lib/site-packages/pip/_internal/utils/wheel.py +132 -0
  1038. package/python/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  1039. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-313.pyc +0 -0
  1040. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-313.pyc +0 -0
  1041. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-313.pyc +0 -0
  1042. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-313.pyc +0 -0
  1043. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-313.pyc +0 -0
  1044. package/python/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-313.pyc +0 -0
  1045. package/python/Lib/site-packages/pip/_internal/vcs/bazaar.py +130 -0
  1046. package/python/Lib/site-packages/pip/_internal/vcs/git.py +571 -0
  1047. package/python/Lib/site-packages/pip/_internal/vcs/mercurial.py +186 -0
  1048. package/python/Lib/site-packages/pip/_internal/vcs/subversion.py +335 -0
  1049. package/python/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
  1050. package/python/Lib/site-packages/pip/_internal/wheel_builder.py +261 -0
  1051. package/python/Lib/site-packages/pip/_vendor/README.rst +180 -0
  1052. package/python/Lib/site-packages/pip/_vendor/__init__.py +117 -0
  1053. package/python/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-313.pyc +0 -0
  1054. package/python/Lib/site-packages/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  1055. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
  1056. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-313.pyc +0 -0
  1057. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-313.pyc +0 -0
  1058. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-313.pyc +0 -0
  1059. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-313.pyc +0 -0
  1060. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-313.pyc +0 -0
  1061. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-313.pyc +0 -0
  1062. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-313.pyc +0 -0
  1063. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-313.pyc +0 -0
  1064. package/python/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-313.pyc +0 -0
  1065. package/python/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  1066. package/python/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
  1067. package/python/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
  1068. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  1069. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-313.pyc +0 -0
  1070. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-313.pyc +0 -0
  1071. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-313.pyc +0 -0
  1072. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
  1073. package/python/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  1074. package/python/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
  1075. package/python/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
  1076. package/python/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
  1077. package/python/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  1078. package/python/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  1079. package/python/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  1080. package/python/Lib/site-packages/pip/_vendor/certifi/LICENSE +20 -0
  1081. package/python/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  1082. package/python/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  1083. package/python/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-313.pyc +0 -0
  1084. package/python/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-313.pyc +0 -0
  1085. package/python/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-313.pyc +0 -0
  1086. package/python/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4468 -0
  1087. package/python/Lib/site-packages/pip/_vendor/certifi/core.py +83 -0
  1088. package/python/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
  1089. package/python/Lib/site-packages/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  1090. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
  1091. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
  1092. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/__init__.cpython-313.pyc +0 -0
  1093. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/__main__.cpython-313.pyc +0 -0
  1094. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/_implementation.cpython-313.pyc +0 -0
  1095. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/_lint_dependency_groups.cpython-313.pyc +0 -0
  1096. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/_pip_wrapper.cpython-313.pyc +0 -0
  1097. package/python/Lib/site-packages/pip/_vendor/dependency_groups/__pycache__/_toml_compat.cpython-313.pyc +0 -0
  1098. package/python/Lib/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
  1099. package/python/Lib/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
  1100. package/python/Lib/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
  1101. package/python/Lib/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
  1102. package/python/Lib/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
  1103. package/python/Lib/site-packages/pip/_vendor/distlib/LICENSE.txt +284 -0
  1104. package/python/Lib/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  1105. package/python/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-313.pyc +0 -0
  1106. package/python/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-313.pyc +0 -0
  1107. package/python/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-313.pyc +0 -0
  1108. package/python/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-313.pyc +0 -0
  1109. package/python/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-313.pyc +0 -0
  1110. package/python/Lib/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  1111. package/python/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
  1112. package/python/Lib/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  1113. package/python/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  1114. package/python/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
  1115. package/python/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  1116. package/python/Lib/site-packages/pip/_vendor/distlib/util.py +1984 -0
  1117. package/python/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  1118. package/python/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
  1119. package/python/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  1120. package/python/Lib/site-packages/pip/_vendor/distro/LICENSE +202 -0
  1121. package/python/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
  1122. package/python/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
  1123. package/python/Lib/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-313.pyc +0 -0
  1124. package/python/Lib/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-313.pyc +0 -0
  1125. package/python/Lib/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-313.pyc +0 -0
  1126. package/python/Lib/site-packages/pip/_vendor/distro/distro.py +1403 -0
  1127. package/python/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
  1128. package/python/Lib/site-packages/pip/_vendor/idna/LICENSE.md +31 -0
  1129. package/python/Lib/site-packages/pip/_vendor/idna/__init__.py +45 -0
  1130. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-313.pyc +0 -0
  1131. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-313.pyc +0 -0
  1132. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-313.pyc +0 -0
  1133. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-313.pyc +0 -0
  1134. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-313.pyc +0 -0
  1135. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-313.pyc +0 -0
  1136. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-313.pyc +0 -0
  1137. package/python/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-313.pyc +0 -0
  1138. package/python/Lib/site-packages/pip/_vendor/idna/codec.py +122 -0
  1139. package/python/Lib/site-packages/pip/_vendor/idna/compat.py +15 -0
  1140. package/python/Lib/site-packages/pip/_vendor/idna/core.py +437 -0
  1141. package/python/Lib/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
  1142. package/python/Lib/site-packages/pip/_vendor/idna/intranges.py +57 -0
  1143. package/python/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -0
  1144. package/python/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
  1145. package/python/Lib/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
  1146. package/python/Lib/site-packages/pip/_vendor/msgpack/COPYING +14 -0
  1147. package/python/Lib/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  1148. package/python/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-313.pyc +0 -0
  1149. package/python/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-313.pyc +0 -0
  1150. package/python/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-313.pyc +0 -0
  1151. package/python/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-313.pyc +0 -0
  1152. package/python/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  1153. package/python/Lib/site-packages/pip/_vendor/msgpack/ext.py +170 -0
  1154. package/python/Lib/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
  1155. package/python/Lib/site-packages/pip/_vendor/packaging/LICENSE +3 -0
  1156. package/python/Lib/site-packages/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1157. package/python/Lib/site-packages/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1158. package/python/Lib/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  1159. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-313.pyc +0 -0
  1160. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_elffile.cpython-313.pyc +0 -0
  1161. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-313.pyc +0 -0
  1162. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-313.pyc +0 -0
  1163. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-313.pyc +0 -0
  1164. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-313.pyc +0 -0
  1165. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-313.pyc +0 -0
  1166. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-313.pyc +0 -0
  1167. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/metadata.cpython-313.pyc +0 -0
  1168. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/pylock.cpython-313.pyc +0 -0
  1169. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-313.pyc +0 -0
  1170. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-313.pyc +0 -0
  1171. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-313.pyc +0 -0
  1172. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-313.pyc +0 -0
  1173. package/python/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-313.pyc +0 -0
  1174. package/python/Lib/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
  1175. package/python/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  1176. package/python/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  1177. package/python/Lib/site-packages/pip/_vendor/packaging/_parser.py +365 -0
  1178. package/python/Lib/site-packages/pip/_vendor/packaging/_structures.py +69 -0
  1179. package/python/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
  1180. package/python/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py +147 -0
  1181. package/python/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-313.pyc +0 -0
  1182. package/python/Lib/site-packages/pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-313.pyc +0 -0
  1183. package/python/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
  1184. package/python/Lib/site-packages/pip/_vendor/packaging/markers.py +388 -0
  1185. package/python/Lib/site-packages/pip/_vendor/packaging/metadata.py +978 -0
  1186. package/python/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
  1187. package/python/Lib/site-packages/pip/_vendor/packaging/pylock.py +635 -0
  1188. package/python/Lib/site-packages/pip/_vendor/packaging/requirements.py +86 -0
  1189. package/python/Lib/site-packages/pip/_vendor/packaging/specifiers.py +1068 -0
  1190. package/python/Lib/site-packages/pip/_vendor/packaging/tags.py +651 -0
  1191. package/python/Lib/site-packages/pip/_vendor/packaging/utils.py +158 -0
  1192. package/python/Lib/site-packages/pip/_vendor/packaging/version.py +792 -0
  1193. package/python/Lib/site-packages/pip/_vendor/pkg_resources/LICENSE +17 -0
  1194. package/python/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  1195. package/python/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-313.pyc +0 -0
  1196. package/python/Lib/site-packages/pip/_vendor/platformdirs/LICENSE +21 -0
  1197. package/python/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
  1198. package/python/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  1199. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-313.pyc +0 -0
  1200. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-313.pyc +0 -0
  1201. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-313.pyc +0 -0
  1202. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-313.pyc +0 -0
  1203. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-313.pyc +0 -0
  1204. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-313.pyc +0 -0
  1205. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-313.pyc +0 -0
  1206. package/python/Lib/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-313.pyc +0 -0
  1207. package/python/Lib/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  1208. package/python/Lib/site-packages/pip/_vendor/platformdirs/api.py +299 -0
  1209. package/python/Lib/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
  1210. package/python/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  1211. package/python/Lib/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
  1212. package/python/Lib/site-packages/pip/_vendor/platformdirs/version.py +34 -0
  1213. package/python/Lib/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
  1214. package/python/Lib/site-packages/pip/_vendor/pygments/LICENSE +25 -0
  1215. package/python/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  1216. package/python/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  1217. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-313.pyc +0 -0
  1218. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-313.pyc +0 -0
  1219. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-313.pyc +0 -0
  1220. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-313.pyc +0 -0
  1221. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-313.pyc +0 -0
  1222. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-313.pyc +0 -0
  1223. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-313.pyc +0 -0
  1224. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-313.pyc +0 -0
  1225. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-313.pyc +0 -0
  1226. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-313.pyc +0 -0
  1227. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-313.pyc +0 -0
  1228. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-313.pyc +0 -0
  1229. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-313.pyc +0 -0
  1230. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-313.pyc +0 -0
  1231. package/python/Lib/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-313.pyc +0 -0
  1232. package/python/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
  1233. package/python/Lib/site-packages/pip/_vendor/pygments/filter.py +70 -0
  1234. package/python/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  1235. package/python/Lib/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-313.pyc +0 -0
  1236. package/python/Lib/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  1237. package/python/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  1238. package/python/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-313.pyc +0 -0
  1239. package/python/Lib/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-313.pyc +0 -0
  1240. package/python/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  1241. package/python/Lib/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  1242. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  1243. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-313.pyc +0 -0
  1244. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-313.pyc +0 -0
  1245. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-313.pyc +0 -0
  1246. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
  1247. package/python/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
  1248. package/python/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  1249. package/python/Lib/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  1250. package/python/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  1251. package/python/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  1252. package/python/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  1253. package/python/Lib/site-packages/pip/_vendor/pygments/style.py +203 -0
  1254. package/python/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  1255. package/python/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-313.pyc +0 -0
  1256. package/python/Lib/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-313.pyc +0 -0
  1257. package/python/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  1258. package/python/Lib/site-packages/pip/_vendor/pygments/token.py +214 -0
  1259. package/python/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  1260. package/python/Lib/site-packages/pip/_vendor/pygments/util.py +324 -0
  1261. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1262. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
  1263. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  1264. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-313.pyc +0 -0
  1265. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
  1266. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
  1267. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-313.pyc +0 -0
  1268. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-313.pyc +0 -0
  1269. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
  1270. package/python/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
  1271. package/python/Lib/site-packages/pip/_vendor/requests/LICENSE +175 -0
  1272. package/python/Lib/site-packages/pip/_vendor/requests/__init__.py +179 -0
  1273. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-313.pyc +0 -0
  1274. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-313.pyc +0 -0
  1275. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-313.pyc +0 -0
  1276. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-313.pyc +0 -0
  1277. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-313.pyc +0 -0
  1278. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-313.pyc +0 -0
  1279. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-313.pyc +0 -0
  1280. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-313.pyc +0 -0
  1281. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-313.pyc +0 -0
  1282. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-313.pyc +0 -0
  1283. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-313.pyc +0 -0
  1284. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-313.pyc +0 -0
  1285. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-313.pyc +0 -0
  1286. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-313.pyc +0 -0
  1287. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-313.pyc +0 -0
  1288. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-313.pyc +0 -0
  1289. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-313.pyc +0 -0
  1290. package/python/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-313.pyc +0 -0
  1291. package/python/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  1292. package/python/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
  1293. package/python/Lib/site-packages/pip/_vendor/requests/adapters.py +696 -0
  1294. package/python/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
  1295. package/python/Lib/site-packages/pip/_vendor/requests/auth.py +314 -0
  1296. package/python/Lib/site-packages/pip/_vendor/requests/certs.py +17 -0
  1297. package/python/Lib/site-packages/pip/_vendor/requests/compat.py +90 -0
  1298. package/python/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
  1299. package/python/Lib/site-packages/pip/_vendor/requests/exceptions.py +151 -0
  1300. package/python/Lib/site-packages/pip/_vendor/requests/help.py +127 -0
  1301. package/python/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
  1302. package/python/Lib/site-packages/pip/_vendor/requests/models.py +1039 -0
  1303. package/python/Lib/site-packages/pip/_vendor/requests/packages.py +25 -0
  1304. package/python/Lib/site-packages/pip/_vendor/requests/sessions.py +831 -0
  1305. package/python/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  1306. package/python/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
  1307. package/python/Lib/site-packages/pip/_vendor/requests/utils.py +1086 -0
  1308. package/python/Lib/site-packages/pip/_vendor/resolvelib/LICENSE +13 -0
  1309. package/python/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
  1310. package/python/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-313.pyc +0 -0
  1311. package/python/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-313.pyc +0 -0
  1312. package/python/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-313.pyc +0 -0
  1313. package/python/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-313.pyc +0 -0
  1314. package/python/Lib/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
  1315. package/python/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  1316. package/python/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
  1317. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
  1318. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/__init__.cpython-313.pyc +0 -0
  1319. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/abstract.cpython-313.pyc +0 -0
  1320. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/criterion.cpython-313.pyc +0 -0
  1321. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/exceptions.cpython-313.pyc +0 -0
  1322. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__pycache__/resolution.cpython-313.pyc +0 -0
  1323. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
  1324. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
  1325. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
  1326. package/python/Lib/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
  1327. package/python/Lib/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
  1328. package/python/Lib/site-packages/pip/_vendor/rich/LICENSE +19 -0
  1329. package/python/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
  1330. package/python/Lib/site-packages/pip/_vendor/rich/__main__.py +245 -0
  1331. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-313.pyc +0 -0
  1332. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-313.pyc +0 -0
  1333. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-313.pyc +0 -0
  1334. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-313.pyc +0 -0
  1335. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-313.pyc +0 -0
  1336. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-313.pyc +0 -0
  1337. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-313.pyc +0 -0
  1338. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-313.pyc +0 -0
  1339. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-313.pyc +0 -0
  1340. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-313.pyc +0 -0
  1341. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-313.pyc +0 -0
  1342. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-313.pyc +0 -0
  1343. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-313.pyc +0 -0
  1344. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-313.pyc +0 -0
  1345. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-313.pyc +0 -0
  1346. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-313.pyc +0 -0
  1347. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-313.pyc +0 -0
  1348. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-313.pyc +0 -0
  1349. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-313.pyc +0 -0
  1350. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-313.pyc +0 -0
  1351. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-313.pyc +0 -0
  1352. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-313.pyc +0 -0
  1353. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-313.pyc +0 -0
  1354. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/align.cpython-313.pyc +0 -0
  1355. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-313.pyc +0 -0
  1356. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-313.pyc +0 -0
  1357. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/box.cpython-313.pyc +0 -0
  1358. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-313.pyc +0 -0
  1359. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/color.cpython-313.pyc +0 -0
  1360. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-313.pyc +0 -0
  1361. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-313.pyc +0 -0
  1362. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/console.cpython-313.pyc +0 -0
  1363. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-313.pyc +0 -0
  1364. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-313.pyc +0 -0
  1365. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/control.cpython-313.pyc +0 -0
  1366. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-313.pyc +0 -0
  1367. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-313.pyc +0 -0
  1368. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-313.pyc +0 -0
  1369. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-313.pyc +0 -0
  1370. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-313.pyc +0 -0
  1371. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-313.pyc +0 -0
  1372. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-313.pyc +0 -0
  1373. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/json.cpython-313.pyc +0 -0
  1374. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-313.pyc +0 -0
  1375. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-313.pyc +0 -0
  1376. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/live.cpython-313.pyc +0 -0
  1377. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-313.pyc +0 -0
  1378. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-313.pyc +0 -0
  1379. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-313.pyc +0 -0
  1380. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-313.pyc +0 -0
  1381. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-313.pyc +0 -0
  1382. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-313.pyc +0 -0
  1383. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-313.pyc +0 -0
  1384. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-313.pyc +0 -0
  1385. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-313.pyc +0 -0
  1386. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-313.pyc +0 -0
  1387. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-313.pyc +0 -0
  1388. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-313.pyc +0 -0
  1389. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-313.pyc +0 -0
  1390. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/region.cpython-313.pyc +0 -0
  1391. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-313.pyc +0 -0
  1392. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-313.pyc +0 -0
  1393. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-313.pyc +0 -0
  1394. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-313.pyc +0 -0
  1395. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-313.pyc +0 -0
  1396. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-313.pyc +0 -0
  1397. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/status.cpython-313.pyc +0 -0
  1398. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/style.cpython-313.pyc +0 -0
  1399. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-313.pyc +0 -0
  1400. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-313.pyc +0 -0
  1401. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/table.cpython-313.pyc +0 -0
  1402. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-313.pyc +0 -0
  1403. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/text.cpython-313.pyc +0 -0
  1404. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-313.pyc +0 -0
  1405. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-313.pyc +0 -0
  1406. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-313.pyc +0 -0
  1407. package/python/Lib/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-313.pyc +0 -0
  1408. package/python/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  1409. package/python/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  1410. package/python/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  1411. package/python/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  1412. package/python/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
  1413. package/python/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  1414. package/python/Lib/site-packages/pip/_vendor/rich/_inspect.py +268 -0
  1415. package/python/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  1416. package/python/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
  1417. package/python/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  1418. package/python/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  1419. package/python/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
  1420. package/python/Lib/site-packages/pip/_vendor/rich/_ratio.py +153 -0
  1421. package/python/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  1422. package/python/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
  1423. package/python/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
  1424. package/python/Lib/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
  1425. package/python/Lib/site-packages/pip/_vendor/rich/_windows.py +71 -0
  1426. package/python/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  1427. package/python/Lib/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  1428. package/python/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
  1429. package/python/Lib/site-packages/pip/_vendor/rich/align.py +306 -0
  1430. package/python/Lib/site-packages/pip/_vendor/rich/ansi.py +241 -0
  1431. package/python/Lib/site-packages/pip/_vendor/rich/bar.py +93 -0
  1432. package/python/Lib/site-packages/pip/_vendor/rich/box.py +474 -0
  1433. package/python/Lib/site-packages/pip/_vendor/rich/cells.py +174 -0
  1434. package/python/Lib/site-packages/pip/_vendor/rich/color.py +621 -0
  1435. package/python/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  1436. package/python/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
  1437. package/python/Lib/site-packages/pip/_vendor/rich/console.py +2680 -0
  1438. package/python/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
  1439. package/python/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
  1440. package/python/Lib/site-packages/pip/_vendor/rich/control.py +219 -0
  1441. package/python/Lib/site-packages/pip/_vendor/rich/default_styles.py +193 -0
  1442. package/python/Lib/site-packages/pip/_vendor/rich/diagnose.py +39 -0
  1443. package/python/Lib/site-packages/pip/_vendor/rich/emoji.py +91 -0
  1444. package/python/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
  1445. package/python/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  1446. package/python/Lib/site-packages/pip/_vendor/rich/filesize.py +88 -0
  1447. package/python/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  1448. package/python/Lib/site-packages/pip/_vendor/rich/json.py +139 -0
  1449. package/python/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  1450. package/python/Lib/site-packages/pip/_vendor/rich/layout.py +442 -0
  1451. package/python/Lib/site-packages/pip/_vendor/rich/live.py +400 -0
  1452. package/python/Lib/site-packages/pip/_vendor/rich/live_render.py +106 -0
  1453. package/python/Lib/site-packages/pip/_vendor/rich/logging.py +297 -0
  1454. package/python/Lib/site-packages/pip/_vendor/rich/markup.py +251 -0
  1455. package/python/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
  1456. package/python/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
  1457. package/python/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
  1458. package/python/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
  1459. package/python/Lib/site-packages/pip/_vendor/rich/panel.py +317 -0
  1460. package/python/Lib/site-packages/pip/_vendor/rich/pretty.py +1016 -0
  1461. package/python/Lib/site-packages/pip/_vendor/rich/progress.py +1715 -0
  1462. package/python/Lib/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  1463. package/python/Lib/site-packages/pip/_vendor/rich/prompt.py +400 -0
  1464. package/python/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
  1465. package/python/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
  1466. package/python/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
  1467. package/python/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
  1468. package/python/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
  1469. package/python/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
  1470. package/python/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
  1471. package/python/Lib/site-packages/pip/_vendor/rich/segment.py +752 -0
  1472. package/python/Lib/site-packages/pip/_vendor/rich/spinner.py +132 -0
  1473. package/python/Lib/site-packages/pip/_vendor/rich/status.py +131 -0
  1474. package/python/Lib/site-packages/pip/_vendor/rich/style.py +792 -0
  1475. package/python/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
  1476. package/python/Lib/site-packages/pip/_vendor/rich/syntax.py +985 -0
  1477. package/python/Lib/site-packages/pip/_vendor/rich/table.py +1006 -0
  1478. package/python/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  1479. package/python/Lib/site-packages/pip/_vendor/rich/text.py +1361 -0
  1480. package/python/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
  1481. package/python/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
  1482. package/python/Lib/site-packages/pip/_vendor/rich/traceback.py +899 -0
  1483. package/python/Lib/site-packages/pip/_vendor/rich/tree.py +257 -0
  1484. package/python/Lib/site-packages/pip/_vendor/tomli/LICENSE +21 -0
  1485. package/python/Lib/site-packages/pip/_vendor/tomli/__init__.py +8 -0
  1486. package/python/Lib/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-313.pyc +0 -0
  1487. package/python/Lib/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-313.pyc +0 -0
  1488. package/python/Lib/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-313.pyc +0 -0
  1489. package/python/Lib/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-313.pyc +0 -0
  1490. package/python/Lib/site-packages/pip/_vendor/tomli/_parser.py +777 -0
  1491. package/python/Lib/site-packages/pip/_vendor/tomli/_re.py +115 -0
  1492. package/python/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
  1493. package/python/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
  1494. package/python/Lib/site-packages/pip/_vendor/tomli_w/LICENSE +21 -0
  1495. package/python/Lib/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
  1496. package/python/Lib/site-packages/pip/_vendor/tomli_w/__pycache__/__init__.cpython-313.pyc +0 -0
  1497. package/python/Lib/site-packages/pip/_vendor/tomli_w/__pycache__/_writer.cpython-313.pyc +0 -0
  1498. package/python/Lib/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
  1499. package/python/Lib/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
  1500. package/python/Lib/site-packages/pip/_vendor/truststore/LICENSE +21 -0
  1501. package/python/Lib/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  1502. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-313.pyc +0 -0
  1503. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-313.pyc +0 -0
  1504. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-313.pyc +0 -0
  1505. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-313.pyc +0 -0
  1506. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-313.pyc +0 -0
  1507. package/python/Lib/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-313.pyc +0 -0
  1508. package/python/Lib/site-packages/pip/_vendor/truststore/_api.py +341 -0
  1509. package/python/Lib/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  1510. package/python/Lib/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
  1511. package/python/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  1512. package/python/Lib/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  1513. package/python/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
  1514. package/python/Lib/site-packages/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1515. package/python/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
  1516. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-313.pyc +0 -0
  1517. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-313.pyc +0 -0
  1518. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-313.pyc +0 -0
  1519. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-313.pyc +0 -0
  1520. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-313.pyc +0 -0
  1521. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-313.pyc +0 -0
  1522. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-313.pyc +0 -0
  1523. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-313.pyc +0 -0
  1524. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-313.pyc +0 -0
  1525. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-313.pyc +0 -0
  1526. package/python/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-313.pyc +0 -0
  1527. package/python/Lib/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  1528. package/python/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  1529. package/python/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
  1530. package/python/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
  1531. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  1532. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-313.pyc +0 -0
  1533. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-313.pyc +0 -0
  1534. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-313.pyc +0 -0
  1535. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-313.pyc +0 -0
  1536. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-313.pyc +0 -0
  1537. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-313.pyc +0 -0
  1538. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-313.pyc +0 -0
  1539. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  1540. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  1541. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-313.pyc +0 -0
  1542. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-313.pyc +0 -0
  1543. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-313.pyc +0 -0
  1544. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  1545. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  1546. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  1547. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  1548. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
  1549. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  1550. package/python/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  1551. package/python/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  1552. package/python/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  1553. package/python/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  1554. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  1555. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-313.pyc +0 -0
  1556. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-313.pyc +0 -0
  1557. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  1558. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-313.pyc +0 -0
  1559. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-313.pyc +0 -0
  1560. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-313.pyc +0 -0
  1561. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  1562. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
  1563. package/python/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
  1564. package/python/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
  1565. package/python/Lib/site-packages/pip/_vendor/urllib3/request.py +191 -0
  1566. package/python/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
  1567. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  1568. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-313.pyc +0 -0
  1569. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-313.pyc +0 -0
  1570. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-313.pyc +0 -0
  1571. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-313.pyc +0 -0
  1572. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-313.pyc +0 -0
  1573. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-313.pyc +0 -0
  1574. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-313.pyc +0 -0
  1575. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-313.pyc +0 -0
  1576. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-313.pyc +0 -0
  1577. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-313.pyc +0 -0
  1578. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-313.pyc +0 -0
  1579. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-313.pyc +0 -0
  1580. package/python/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-313.pyc +0 -0
  1581. package/python/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  1582. package/python/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  1583. package/python/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  1584. package/python/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
  1585. package/python/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  1586. package/python/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  1587. package/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
  1588. package/python/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  1589. package/python/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  1590. package/python/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
  1591. package/python/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
  1592. package/python/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
  1593. package/python/Lib/site-packages/pip/_vendor/vendor.txt +19 -0
  1594. package/python/Lib/site-packages/pip/py.typed +4 -0
  1595. package/python/Lib/site-packages/pip-26.0.1.dist-info/INSTALLER +1 -0
  1596. package/python/Lib/site-packages/pip-26.0.1.dist-info/METADATA +111 -0
  1597. package/python/Lib/site-packages/pip-26.0.1.dist-info/RECORD +879 -0
  1598. package/python/Lib/site-packages/pip-26.0.1.dist-info/REQUESTED +0 -0
  1599. package/python/Lib/site-packages/pip-26.0.1.dist-info/WHEEL +4 -0
  1600. package/python/Lib/site-packages/pip-26.0.1.dist-info/direct_url.json +1 -0
  1601. package/python/Lib/site-packages/pip-26.0.1.dist-info/entry_points.txt +4 -0
  1602. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/AUTHORS.txt +860 -0
  1603. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/LICENSE.txt +20 -0
  1604. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
  1605. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
  1606. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
  1607. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
  1608. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
  1609. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
  1610. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
  1611. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
  1612. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
  1613. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
  1614. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
  1615. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
  1616. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
  1617. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
  1618. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
  1619. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
  1620. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
  1621. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
  1622. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
  1623. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
  1624. package/python/Lib/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
  1625. package/python/Lib/site.py +773 -0
  1626. package/python/Lib/smtplib.py +1123 -0
  1627. package/python/Lib/socket.py +982 -0
  1628. package/python/Lib/socketserver.py +863 -0
  1629. package/python/Lib/sqlite3/__init__.py +70 -0
  1630. package/python/Lib/sqlite3/__main__.py +139 -0
  1631. package/python/Lib/sqlite3/dbapi2.py +108 -0
  1632. package/python/Lib/sqlite3/dump.py +113 -0
  1633. package/python/Lib/sre_compile.py +7 -0
  1634. package/python/Lib/sre_constants.py +7 -0
  1635. package/python/Lib/sre_parse.py +7 -0
  1636. package/python/Lib/ssl.py +1529 -0
  1637. package/python/Lib/stat.py +212 -0
  1638. package/python/Lib/statistics.py +1817 -0
  1639. package/python/Lib/string.py +309 -0
  1640. package/python/Lib/stringprep.py +272 -0
  1641. package/python/Lib/struct.py +15 -0
  1642. package/python/Lib/subprocess.py +2258 -0
  1643. package/python/Lib/symtable.py +414 -0
  1644. package/python/Lib/sysconfig/__init__.py +726 -0
  1645. package/python/Lib/sysconfig/__main__.py +248 -0
  1646. package/python/Lib/sysconfig/__pycache__/__init__.cpython-313.pyc +0 -0
  1647. package/python/Lib/tabnanny.py +340 -0
  1648. package/python/Lib/tarfile.py +3070 -0
  1649. package/python/Lib/tempfile.py +957 -0
  1650. package/python/Lib/textwrap.py +497 -0
  1651. package/python/Lib/this.py +28 -0
  1652. package/python/Lib/threading.py +1602 -0
  1653. package/python/Lib/timeit.py +381 -0
  1654. package/python/Lib/tkinter/__init__.py +5002 -0
  1655. package/python/Lib/tkinter/__main__.py +7 -0
  1656. package/python/Lib/tkinter/colorchooser.py +86 -0
  1657. package/python/Lib/tkinter/commondialog.py +53 -0
  1658. package/python/Lib/tkinter/constants.py +110 -0
  1659. package/python/Lib/tkinter/dialog.py +49 -0
  1660. package/python/Lib/tkinter/dnd.py +324 -0
  1661. package/python/Lib/tkinter/filedialog.py +492 -0
  1662. package/python/Lib/tkinter/font.py +239 -0
  1663. package/python/Lib/tkinter/messagebox.py +146 -0
  1664. package/python/Lib/tkinter/scrolledtext.py +56 -0
  1665. package/python/Lib/tkinter/simpledialog.py +441 -0
  1666. package/python/Lib/tkinter/ttk.py +1647 -0
  1667. package/python/Lib/token.py +141 -0
  1668. package/python/Lib/tokenize.py +592 -0
  1669. package/python/Lib/tomllib/__init__.py +10 -0
  1670. package/python/Lib/tomllib/__pycache__/__init__.cpython-313.pyc +0 -0
  1671. package/python/Lib/tomllib/__pycache__/_parser.cpython-313.pyc +0 -0
  1672. package/python/Lib/tomllib/__pycache__/_re.cpython-313.pyc +0 -0
  1673. package/python/Lib/tomllib/__pycache__/_types.cpython-313.pyc +0 -0
  1674. package/python/Lib/tomllib/_parser.py +691 -0
  1675. package/python/Lib/tomllib/_re.py +107 -0
  1676. package/python/Lib/tomllib/_types.py +10 -0
  1677. package/python/Lib/tomllib/mypy.ini +17 -0
  1678. package/python/Lib/trace.py +754 -0
  1679. package/python/Lib/traceback.py +1638 -0
  1680. package/python/Lib/tracemalloc.py +560 -0
  1681. package/python/Lib/tty.py +73 -0
  1682. package/python/Lib/turtle.py +4199 -0
  1683. package/python/Lib/turtledemo/__init__.py +14 -0
  1684. package/python/Lib/turtledemo/__main__.py +401 -0
  1685. package/python/Lib/turtledemo/bytedesign.py +161 -0
  1686. package/python/Lib/turtledemo/chaos.py +59 -0
  1687. package/python/Lib/turtledemo/clock.py +138 -0
  1688. package/python/Lib/turtledemo/colormixer.py +58 -0
  1689. package/python/Lib/turtledemo/forest.py +108 -0
  1690. package/python/Lib/turtledemo/fractalcurves.py +138 -0
  1691. package/python/Lib/turtledemo/lindenmayer.py +119 -0
  1692. package/python/Lib/turtledemo/minimal_hanoi.py +79 -0
  1693. package/python/Lib/turtledemo/nim.py +226 -0
  1694. package/python/Lib/turtledemo/paint.py +54 -0
  1695. package/python/Lib/turtledemo/peace.py +61 -0
  1696. package/python/Lib/turtledemo/penrose.py +175 -0
  1697. package/python/Lib/turtledemo/planet_and_moon.py +111 -0
  1698. package/python/Lib/turtledemo/rosette.py +65 -0
  1699. package/python/Lib/turtledemo/round_dance.py +86 -0
  1700. package/python/Lib/turtledemo/sorting_animate.py +204 -0
  1701. package/python/Lib/turtledemo/tree.py +62 -0
  1702. package/python/Lib/turtledemo/turtle.cfg +10 -0
  1703. package/python/Lib/turtledemo/two_canvases.py +54 -0
  1704. package/python/Lib/turtledemo/yinyang.py +49 -0
  1705. package/python/Lib/types.py +345 -0
  1706. package/python/Lib/typing.py +3831 -0
  1707. package/python/Lib/unittest/__init__.py +80 -0
  1708. package/python/Lib/unittest/__main__.py +18 -0
  1709. package/python/Lib/unittest/_log.py +86 -0
  1710. package/python/Lib/unittest/async_case.py +146 -0
  1711. package/python/Lib/unittest/case.py +1478 -0
  1712. package/python/Lib/unittest/loader.py +453 -0
  1713. package/python/Lib/unittest/main.py +280 -0
  1714. package/python/Lib/unittest/mock.py +3179 -0
  1715. package/python/Lib/unittest/result.py +256 -0
  1716. package/python/Lib/unittest/runner.py +292 -0
  1717. package/python/Lib/unittest/signals.py +71 -0
  1718. package/python/Lib/unittest/suite.py +379 -0
  1719. package/python/Lib/unittest/util.py +170 -0
  1720. package/python/Lib/urllib/__init__.py +0 -0
  1721. package/python/Lib/urllib/__pycache__/__init__.cpython-313.pyc +0 -0
  1722. package/python/Lib/urllib/__pycache__/error.cpython-313.pyc +0 -0
  1723. package/python/Lib/urllib/__pycache__/parse.cpython-313.pyc +0 -0
  1724. package/python/Lib/urllib/__pycache__/request.cpython-313.pyc +0 -0
  1725. package/python/Lib/urllib/__pycache__/response.cpython-313.pyc +0 -0
  1726. package/python/Lib/urllib/error.py +74 -0
  1727. package/python/Lib/urllib/parse.py +1262 -0
  1728. package/python/Lib/urllib/request.py +2797 -0
  1729. package/python/Lib/urllib/response.py +84 -0
  1730. package/python/Lib/urllib/robotparser.py +286 -0
  1731. package/python/Lib/uuid.py +784 -0
  1732. package/python/Lib/venv/__init__.py +687 -0
  1733. package/python/Lib/venv/__main__.py +10 -0
  1734. package/python/Lib/venv/scripts/common/Activate.ps1 +248 -0
  1735. package/python/Lib/venv/scripts/common/activate +76 -0
  1736. package/python/Lib/venv/scripts/common/activate.fish +69 -0
  1737. package/python/Lib/venv/scripts/nt/activate.bat +34 -0
  1738. package/python/Lib/venv/scripts/nt/deactivate.bat +22 -0
  1739. package/python/Lib/venv/scripts/nt/venvlauncher.exe +0 -0
  1740. package/python/Lib/venv/scripts/nt/venvlauncher.pdb +0 -0
  1741. package/python/Lib/venv/scripts/nt/venvwlauncher.exe +0 -0
  1742. package/python/Lib/venv/scripts/nt/venvwlauncher.pdb +0 -0
  1743. package/python/Lib/venv/scripts/posix/activate.csh +27 -0
  1744. package/python/Lib/warnings.py +735 -0
  1745. package/python/Lib/wave.py +665 -0
  1746. package/python/Lib/weakref.py +674 -0
  1747. package/python/Lib/webbrowser.py +710 -0
  1748. package/python/Lib/wsgiref/__init__.py +25 -0
  1749. package/python/Lib/wsgiref/handlers.py +573 -0
  1750. package/python/Lib/wsgiref/headers.py +187 -0
  1751. package/python/Lib/wsgiref/simple_server.py +161 -0
  1752. package/python/Lib/wsgiref/types.py +54 -0
  1753. package/python/Lib/wsgiref/util.py +159 -0
  1754. package/python/Lib/wsgiref/validate.py +438 -0
  1755. package/python/Lib/xml/__init__.py +20 -0
  1756. package/python/Lib/xml/__pycache__/__init__.cpython-313.pyc +0 -0
  1757. package/python/Lib/xml/dom/NodeFilter.py +27 -0
  1758. package/python/Lib/xml/dom/__init__.py +140 -0
  1759. package/python/Lib/xml/dom/domreg.py +99 -0
  1760. package/python/Lib/xml/dom/expatbuilder.py +962 -0
  1761. package/python/Lib/xml/dom/minicompat.py +109 -0
  1762. package/python/Lib/xml/dom/minidom.py +2024 -0
  1763. package/python/Lib/xml/dom/pulldom.py +336 -0
  1764. package/python/Lib/xml/dom/xmlbuilder.py +389 -0
  1765. package/python/Lib/xml/etree/ElementInclude.py +186 -0
  1766. package/python/Lib/xml/etree/ElementPath.py +423 -0
  1767. package/python/Lib/xml/etree/ElementTree.py +2098 -0
  1768. package/python/Lib/xml/etree/__init__.py +33 -0
  1769. package/python/Lib/xml/etree/cElementTree.py +3 -0
  1770. package/python/Lib/xml/parsers/__init__.py +8 -0
  1771. package/python/Lib/xml/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  1772. package/python/Lib/xml/parsers/__pycache__/expat.cpython-313.pyc +0 -0
  1773. package/python/Lib/xml/parsers/expat.py +8 -0
  1774. package/python/Lib/xml/sax/__init__.py +94 -0
  1775. package/python/Lib/xml/sax/_exceptions.py +127 -0
  1776. package/python/Lib/xml/sax/expatreader.py +454 -0
  1777. package/python/Lib/xml/sax/handler.py +387 -0
  1778. package/python/Lib/xml/sax/saxutils.py +369 -0
  1779. package/python/Lib/xml/sax/xmlreader.py +378 -0
  1780. package/python/Lib/xmlrpc/__init__.py +1 -0
  1781. package/python/Lib/xmlrpc/__pycache__/__init__.cpython-313.pyc +0 -0
  1782. package/python/Lib/xmlrpc/__pycache__/client.cpython-313.pyc +0 -0
  1783. package/python/Lib/xmlrpc/client.py +1503 -0
  1784. package/python/Lib/xmlrpc/server.py +1002 -0
  1785. package/python/Lib/zipapp.py +229 -0
  1786. package/python/Lib/zipfile/__init__.py +2375 -0
  1787. package/python/Lib/zipfile/__main__.py +4 -0
  1788. package/python/Lib/zipfile/__pycache__/__init__.cpython-313.pyc +0 -0
  1789. package/python/Lib/zipfile/_path/__init__.py +452 -0
  1790. package/python/Lib/zipfile/_path/__pycache__/__init__.cpython-313.pyc +0 -0
  1791. package/python/Lib/zipfile/_path/__pycache__/glob.cpython-313.pyc +0 -0
  1792. package/python/Lib/zipfile/_path/glob.py +113 -0
  1793. package/python/Lib/zipimport.py +803 -0
  1794. package/python/Lib/zoneinfo/__init__.py +34 -0
  1795. package/python/Lib/zoneinfo/_common.py +168 -0
  1796. package/python/Lib/zoneinfo/_tzpath.py +189 -0
  1797. package/python/Lib/zoneinfo/_zoneinfo.py +772 -0
  1798. package/python/Scripts/.empty +0 -0
  1799. package/python/include/Python.h +140 -0
  1800. package/python/include/abstract.h +921 -0
  1801. package/python/include/bltinmodule.h +14 -0
  1802. package/python/include/boolobject.h +54 -0
  1803. package/python/include/bytearrayobject.h +44 -0
  1804. package/python/include/bytesobject.h +66 -0
  1805. package/python/include/ceval.h +145 -0
  1806. package/python/include/codecs.h +176 -0
  1807. package/python/include/compile.h +22 -0
  1808. package/python/include/complexobject.h +30 -0
  1809. package/python/include/cpython/abstract.h +87 -0
  1810. package/python/include/cpython/bytearrayobject.h +34 -0
  1811. package/python/include/cpython/bytesobject.h +37 -0
  1812. package/python/include/cpython/cellobject.h +44 -0
  1813. package/python/include/cpython/ceval.h +25 -0
  1814. package/python/include/cpython/classobject.h +71 -0
  1815. package/python/include/cpython/code.h +358 -0
  1816. package/python/include/cpython/compile.h +50 -0
  1817. package/python/include/cpython/complexobject.h +33 -0
  1818. package/python/include/cpython/context.h +74 -0
  1819. package/python/include/cpython/critical_section.h +134 -0
  1820. package/python/include/cpython/descrobject.h +62 -0
  1821. package/python/include/cpython/dictobject.h +102 -0
  1822. package/python/include/cpython/fileobject.h +16 -0
  1823. package/python/include/cpython/fileutils.h +8 -0
  1824. package/python/include/cpython/floatobject.h +27 -0
  1825. package/python/include/cpython/frameobject.h +35 -0
  1826. package/python/include/cpython/funcobject.h +184 -0
  1827. package/python/include/cpython/genobject.h +83 -0
  1828. package/python/include/cpython/import.h +25 -0
  1829. package/python/include/cpython/initconfig.h +274 -0
  1830. package/python/include/cpython/listobject.h +53 -0
  1831. package/python/include/cpython/lock.h +63 -0
  1832. package/python/include/cpython/longintrepr.h +146 -0
  1833. package/python/include/cpython/longobject.h +116 -0
  1834. package/python/include/cpython/memoryobject.h +50 -0
  1835. package/python/include/cpython/methodobject.h +66 -0
  1836. package/python/include/cpython/modsupport.h +26 -0
  1837. package/python/include/cpython/monitoring.h +250 -0
  1838. package/python/include/cpython/object.h +535 -0
  1839. package/python/include/cpython/objimpl.h +104 -0
  1840. package/python/include/cpython/odictobject.h +43 -0
  1841. package/python/include/cpython/picklebufobject.h +31 -0
  1842. package/python/include/cpython/pthread_stubs.h +105 -0
  1843. package/python/include/cpython/pyatomic.h +569 -0
  1844. package/python/include/cpython/pyatomic_gcc.h +551 -0
  1845. package/python/include/cpython/pyatomic_msc.h +1095 -0
  1846. package/python/include/cpython/pyatomic_std.h +976 -0
  1847. package/python/include/cpython/pyctype.h +39 -0
  1848. package/python/include/cpython/pydebug.h +38 -0
  1849. package/python/include/cpython/pyerrors.h +132 -0
  1850. package/python/include/cpython/pyfpe.h +15 -0
  1851. package/python/include/cpython/pyframe.h +45 -0
  1852. package/python/include/cpython/pyhash.h +47 -0
  1853. package/python/include/cpython/pylifecycle.h +92 -0
  1854. package/python/include/cpython/pymem.h +84 -0
  1855. package/python/include/cpython/pystate.h +277 -0
  1856. package/python/include/cpython/pystats.h +175 -0
  1857. package/python/include/cpython/pythonrun.h +96 -0
  1858. package/python/include/cpython/pythread.h +43 -0
  1859. package/python/include/cpython/pytime.h +27 -0
  1860. package/python/include/cpython/setobject.h +71 -0
  1861. package/python/include/cpython/sysmodule.h +22 -0
  1862. package/python/include/cpython/traceback.h +13 -0
  1863. package/python/include/cpython/tracemalloc.h +32 -0
  1864. package/python/include/cpython/tupleobject.h +38 -0
  1865. package/python/include/cpython/unicodeobject.h +703 -0
  1866. package/python/include/cpython/warnings.h +20 -0
  1867. package/python/include/cpython/weakrefobject.h +63 -0
  1868. package/python/include/critical_section.h +16 -0
  1869. package/python/include/datetime.h +267 -0
  1870. package/python/include/descrobject.h +100 -0
  1871. package/python/include/dictobject.h +108 -0
  1872. package/python/include/dynamic_annotations.h +499 -0
  1873. package/python/include/enumobject.h +17 -0
  1874. package/python/include/errcode.h +45 -0
  1875. package/python/include/exports.h +108 -0
  1876. package/python/include/fileobject.h +41 -0
  1877. package/python/include/fileutils.h +62 -0
  1878. package/python/include/floatobject.h +54 -0
  1879. package/python/include/frameobject.h +20 -0
  1880. package/python/include/genericaliasobject.h +14 -0
  1881. package/python/include/import.h +103 -0
  1882. package/python/include/internal/mimalloc/mimalloc/atomic.h +392 -0
  1883. package/python/include/internal/mimalloc/mimalloc/internal.h +969 -0
  1884. package/python/include/internal/mimalloc/mimalloc/prim.h +329 -0
  1885. package/python/include/internal/mimalloc/mimalloc/track.h +147 -0
  1886. package/python/include/internal/mimalloc/mimalloc/types.h +721 -0
  1887. package/python/include/internal/mimalloc/mimalloc.h +565 -0
  1888. package/python/include/internal/pycore_abstract.h +61 -0
  1889. package/python/include/internal/pycore_asdl.h +112 -0
  1890. package/python/include/internal/pycore_ast.h +926 -0
  1891. package/python/include/internal/pycore_ast_state.h +268 -0
  1892. package/python/include/internal/pycore_atexit.h +67 -0
  1893. package/python/include/internal/pycore_backoff.h +145 -0
  1894. package/python/include/internal/pycore_bitutils.h +186 -0
  1895. package/python/include/internal/pycore_blocks_output_buffer.h +321 -0
  1896. package/python/include/internal/pycore_brc.h +74 -0
  1897. package/python/include/internal/pycore_bytes_methods.h +82 -0
  1898. package/python/include/internal/pycore_bytesobject.h +152 -0
  1899. package/python/include/internal/pycore_call.h +205 -0
  1900. package/python/include/internal/pycore_capsule.h +17 -0
  1901. package/python/include/internal/pycore_cell.h +48 -0
  1902. package/python/include/internal/pycore_ceval.h +305 -0
  1903. package/python/include/internal/pycore_ceval_state.h +137 -0
  1904. package/python/include/internal/pycore_code.h +603 -0
  1905. package/python/include/internal/pycore_codecs.h +86 -0
  1906. package/python/include/internal/pycore_compile.h +118 -0
  1907. package/python/include/internal/pycore_complexobject.h +25 -0
  1908. package/python/include/internal/pycore_condvar.h +93 -0
  1909. package/python/include/internal/pycore_context.h +61 -0
  1910. package/python/include/internal/pycore_critical_section.h +233 -0
  1911. package/python/include/internal/pycore_crossinterp.h +340 -0
  1912. package/python/include/internal/pycore_descrobject.h +28 -0
  1913. package/python/include/internal/pycore_dict.h +340 -0
  1914. package/python/include/internal/pycore_dict_state.h +32 -0
  1915. package/python/include/internal/pycore_dtoa.h +75 -0
  1916. package/python/include/internal/pycore_emscripten_signal.h +30 -0
  1917. package/python/include/internal/pycore_emscripten_trampoline.h +81 -0
  1918. package/python/include/internal/pycore_exceptions.h +40 -0
  1919. package/python/include/internal/pycore_faulthandler.h +99 -0
  1920. package/python/include/internal/pycore_fileutils.h +335 -0
  1921. package/python/include/internal/pycore_fileutils_windows.h +98 -0
  1922. package/python/include/internal/pycore_floatobject.h +62 -0
  1923. package/python/include/internal/pycore_flowgraph.h +40 -0
  1924. package/python/include/internal/pycore_format.h +27 -0
  1925. package/python/include/internal/pycore_frame.h +370 -0
  1926. package/python/include/internal/pycore_freelist.h +153 -0
  1927. package/python/include/internal/pycore_function.h +55 -0
  1928. package/python/include/internal/pycore_gc.h +365 -0
  1929. package/python/include/internal/pycore_genobject.h +32 -0
  1930. package/python/include/internal/pycore_getopt.h +22 -0
  1931. package/python/include/internal/pycore_gil.h +66 -0
  1932. package/python/include/internal/pycore_global_objects.h +105 -0
  1933. package/python/include/internal/pycore_global_objects_fini_generated.h +1554 -0
  1934. package/python/include/internal/pycore_global_strings.h +814 -0
  1935. package/python/include/internal/pycore_hamt.h +134 -0
  1936. package/python/include/internal/pycore_hashtable.h +150 -0
  1937. package/python/include/internal/pycore_identifier.h +20 -0
  1938. package/python/include/internal/pycore_import.h +213 -0
  1939. package/python/include/internal/pycore_importdl.h +139 -0
  1940. package/python/include/internal/pycore_initconfig.h +200 -0
  1941. package/python/include/internal/pycore_instruction_sequence.h +73 -0
  1942. package/python/include/internal/pycore_instruments.h +75 -0
  1943. package/python/include/internal/pycore_interp.h +423 -0
  1944. package/python/include/internal/pycore_intrinsics.h +51 -0
  1945. package/python/include/internal/pycore_jit.h +25 -0
  1946. package/python/include/internal/pycore_list.h +66 -0
  1947. package/python/include/internal/pycore_llist.h +106 -0
  1948. package/python/include/internal/pycore_lock.h +241 -0
  1949. package/python/include/internal/pycore_long.h +310 -0
  1950. package/python/include/internal/pycore_memoryobject.h +20 -0
  1951. package/python/include/internal/pycore_mimalloc.h +69 -0
  1952. package/python/include/internal/pycore_modsupport.h +107 -0
  1953. package/python/include/internal/pycore_moduleobject.h +56 -0
  1954. package/python/include/internal/pycore_namespace.h +21 -0
  1955. package/python/include/internal/pycore_object.h +867 -0
  1956. package/python/include/internal/pycore_object_alloc.h +71 -0
  1957. package/python/include/internal/pycore_object_stack.h +97 -0
  1958. package/python/include/internal/pycore_object_state.h +41 -0
  1959. package/python/include/internal/pycore_obmalloc.h +702 -0
  1960. package/python/include/internal/pycore_obmalloc_init.h +66 -0
  1961. package/python/include/internal/pycore_opcode_metadata.h +1922 -0
  1962. package/python/include/internal/pycore_opcode_utils.h +73 -0
  1963. package/python/include/internal/pycore_optimizer.h +272 -0
  1964. package/python/include/internal/pycore_parking_lot.h +97 -0
  1965. package/python/include/internal/pycore_parser.h +95 -0
  1966. package/python/include/internal/pycore_pathconfig.h +26 -0
  1967. package/python/include/internal/pycore_pyarena.h +68 -0
  1968. package/python/include/internal/pycore_pyatomic_ft_wrappers.h +165 -0
  1969. package/python/include/internal/pycore_pybuffer.h +21 -0
  1970. package/python/include/internal/pycore_pyerrors.h +190 -0
  1971. package/python/include/internal/pycore_pyhash.h +107 -0
  1972. package/python/include/internal/pycore_pylifecycle.h +136 -0
  1973. package/python/include/internal/pycore_pymath.h +205 -0
  1974. package/python/include/internal/pycore_pymem.h +161 -0
  1975. package/python/include/internal/pycore_pymem_init.h +103 -0
  1976. package/python/include/internal/pycore_pystate.h +299 -0
  1977. package/python/include/internal/pycore_pystats.h +21 -0
  1978. package/python/include/internal/pycore_pythonrun.h +39 -0
  1979. package/python/include/internal/pycore_pythread.h +172 -0
  1980. package/python/include/internal/pycore_qsbr.h +173 -0
  1981. package/python/include/internal/pycore_range.h +21 -0
  1982. package/python/include/internal/pycore_runtime.h +410 -0
  1983. package/python/include/internal/pycore_runtime_init.h +329 -0
  1984. package/python/include/internal/pycore_runtime_init_generated.h +1551 -0
  1985. package/python/include/internal/pycore_semaphore.h +67 -0
  1986. package/python/include/internal/pycore_setobject.h +39 -0
  1987. package/python/include/internal/pycore_signal.h +108 -0
  1988. package/python/include/internal/pycore_sliceobject.h +20 -0
  1989. package/python/include/internal/pycore_stackref.h +195 -0
  1990. package/python/include/internal/pycore_strhex.h +39 -0
  1991. package/python/include/internal/pycore_structseq.h +40 -0
  1992. package/python/include/internal/pycore_symtable.h +204 -0
  1993. package/python/include/internal/pycore_sysmodule.h +38 -0
  1994. package/python/include/internal/pycore_time.h +337 -0
  1995. package/python/include/internal/pycore_token.h +106 -0
  1996. package/python/include/internal/pycore_traceback.h +106 -0
  1997. package/python/include/internal/pycore_tracemalloc.h +170 -0
  1998. package/python/include/internal/pycore_tstate.h +46 -0
  1999. package/python/include/internal/pycore_tuple.h +35 -0
  2000. package/python/include/internal/pycore_typeobject.h +245 -0
  2001. package/python/include/internal/pycore_typevarobject.h +27 -0
  2002. package/python/include/internal/pycore_ucnhash.h +36 -0
  2003. package/python/include/internal/pycore_unicodeobject.h +351 -0
  2004. package/python/include/internal/pycore_unicodeobject_generated.h +2980 -0
  2005. package/python/include/internal/pycore_unionobject.h +25 -0
  2006. package/python/include/internal/pycore_uop_ids.h +295 -0
  2007. package/python/include/internal/pycore_uop_metadata.h +1010 -0
  2008. package/python/include/internal/pycore_warnings.h +31 -0
  2009. package/python/include/internal/pycore_weakref.h +133 -0
  2010. package/python/include/intrcheck.h +23 -0
  2011. package/python/include/iterobject.h +24 -0
  2012. package/python/include/listobject.h +55 -0
  2013. package/python/include/lock.h +16 -0
  2014. package/python/include/longobject.h +114 -0
  2015. package/python/include/marshal.h +31 -0
  2016. package/python/include/memoryobject.h +34 -0
  2017. package/python/include/methodobject.h +137 -0
  2018. package/python/include/modsupport.h +146 -0
  2019. package/python/include/moduleobject.h +122 -0
  2020. package/python/include/monitoring.h +18 -0
  2021. package/python/include/object.h +1280 -0
  2022. package/python/include/objimpl.h +211 -0
  2023. package/python/include/opcode.h +42 -0
  2024. package/python/include/opcode_ids.h +244 -0
  2025. package/python/include/osdefs.h +57 -0
  2026. package/python/include/osmodule.h +17 -0
  2027. package/python/include/patchlevel.h +35 -0
  2028. package/python/include/py_curses.h +117 -0
  2029. package/python/include/pyatomic.h +16 -0
  2030. package/python/include/pybuffer.h +145 -0
  2031. package/python/include/pycapsule.h +58 -0
  2032. package/python/include/pyconfig.h +759 -0
  2033. package/python/include/pydtrace.h +59 -0
  2034. package/python/include/pyerrors.h +335 -0
  2035. package/python/include/pyexpat.h +62 -0
  2036. package/python/include/pyframe.h +26 -0
  2037. package/python/include/pyhash.h +59 -0
  2038. package/python/include/pylifecycle.h +80 -0
  2039. package/python/include/pymacconfig.h +91 -0
  2040. package/python/include/pymacro.h +199 -0
  2041. package/python/include/pymath.h +62 -0
  2042. package/python/include/pymem.h +110 -0
  2043. package/python/include/pyport.h +633 -0
  2044. package/python/include/pystate.h +132 -0
  2045. package/python/include/pystats.h +26 -0
  2046. package/python/include/pystrcmp.h +23 -0
  2047. package/python/include/pystrtod.h +37 -0
  2048. package/python/include/pythonrun.h +49 -0
  2049. package/python/include/pythread.h +131 -0
  2050. package/python/include/pytypedefs.h +30 -0
  2051. package/python/include/rangeobject.h +27 -0
  2052. package/python/include/setobject.h +49 -0
  2053. package/python/include/sliceobject.h +69 -0
  2054. package/python/include/structmember.h +56 -0
  2055. package/python/include/structseq.h +46 -0
  2056. package/python/include/sysmodule.h +44 -0
  2057. package/python/include/traceback.h +26 -0
  2058. package/python/include/tupleobject.h +46 -0
  2059. package/python/include/typeslots.h +88 -0
  2060. package/python/include/unicodeobject.h +1021 -0
  2061. package/python/include/warnings.h +45 -0
  2062. package/python/include/weakrefobject.h +46 -0
  2063. package/python/libs/python3.lib +0 -0
  2064. package/python/libs/python313.lib +0 -0
  2065. package/python/python.exe +0 -0
  2066. package/python/python.pdb +0 -0
  2067. package/python/python3.dll +0 -0
  2068. package/python/python3.pdb +0 -0
  2069. package/python/python313.dll +0 -0
  2070. package/python/python313.pdb +0 -0
  2071. package/python/pythonw.exe +0 -0
  2072. package/python/pythonw.pdb +0 -0
  2073. package/python/tcl/dde1.4/pkgIndex.tcl +12 -0
  2074. package/python/tcl/dde1.4/tcldde14.dll +0 -0
  2075. package/python/tcl/nmake/nmakehlp.c +815 -0
  2076. package/python/tcl/nmake/rules.vc +1869 -0
  2077. package/python/tcl/nmake/targets.vc +98 -0
  2078. package/python/tcl/nmake/tcl.nmake +4 -0
  2079. package/python/tcl/reg1.3/pkgIndex.tcl +9 -0
  2080. package/python/tcl/reg1.3/tclreg13.dll +0 -0
  2081. package/python/tcl/tcl8/8.4/platform/shell-1.1.4.tm +241 -0
  2082. package/python/tcl/tcl8/8.4/platform-1.0.18.tm +439 -0
  2083. package/python/tcl/tcl8/8.5/msgcat-1.6.1.tm +1210 -0
  2084. package/python/tcl/tcl8/8.5/tcltest-2.5.3.tm +3515 -0
  2085. package/python/tcl/tcl8/8.6/http-2.9.5.tm +3506 -0
  2086. package/python/tcl/tcl8.6/auto.tcl +648 -0
  2087. package/python/tcl/tcl8.6/clock.tcl +4546 -0
  2088. package/python/tcl/tcl8.6/encoding/ascii.enc +20 -0
  2089. package/python/tcl/tcl8.6/encoding/big5.enc +1516 -0
  2090. package/python/tcl/tcl8.6/encoding/cns11643.enc +1584 -0
  2091. package/python/tcl/tcl8.6/encoding/cp1250.enc +20 -0
  2092. package/python/tcl/tcl8.6/encoding/cp1251.enc +20 -0
  2093. package/python/tcl/tcl8.6/encoding/cp1252.enc +20 -0
  2094. package/python/tcl/tcl8.6/encoding/cp1253.enc +20 -0
  2095. package/python/tcl/tcl8.6/encoding/cp1254.enc +20 -0
  2096. package/python/tcl/tcl8.6/encoding/cp1255.enc +20 -0
  2097. package/python/tcl/tcl8.6/encoding/cp1256.enc +20 -0
  2098. package/python/tcl/tcl8.6/encoding/cp1257.enc +20 -0
  2099. package/python/tcl/tcl8.6/encoding/cp1258.enc +20 -0
  2100. package/python/tcl/tcl8.6/encoding/cp437.enc +20 -0
  2101. package/python/tcl/tcl8.6/encoding/cp737.enc +20 -0
  2102. package/python/tcl/tcl8.6/encoding/cp775.enc +20 -0
  2103. package/python/tcl/tcl8.6/encoding/cp850.enc +20 -0
  2104. package/python/tcl/tcl8.6/encoding/cp852.enc +20 -0
  2105. package/python/tcl/tcl8.6/encoding/cp855.enc +20 -0
  2106. package/python/tcl/tcl8.6/encoding/cp857.enc +20 -0
  2107. package/python/tcl/tcl8.6/encoding/cp860.enc +20 -0
  2108. package/python/tcl/tcl8.6/encoding/cp861.enc +20 -0
  2109. package/python/tcl/tcl8.6/encoding/cp862.enc +20 -0
  2110. package/python/tcl/tcl8.6/encoding/cp863.enc +20 -0
  2111. package/python/tcl/tcl8.6/encoding/cp864.enc +20 -0
  2112. package/python/tcl/tcl8.6/encoding/cp865.enc +20 -0
  2113. package/python/tcl/tcl8.6/encoding/cp866.enc +20 -0
  2114. package/python/tcl/tcl8.6/encoding/cp869.enc +20 -0
  2115. package/python/tcl/tcl8.6/encoding/cp874.enc +20 -0
  2116. package/python/tcl/tcl8.6/encoding/cp932.enc +801 -0
  2117. package/python/tcl/tcl8.6/encoding/cp936.enc +2162 -0
  2118. package/python/tcl/tcl8.6/encoding/cp949.enc +2128 -0
  2119. package/python/tcl/tcl8.6/encoding/cp950.enc +1499 -0
  2120. package/python/tcl/tcl8.6/encoding/dingbats.enc +20 -0
  2121. package/python/tcl/tcl8.6/encoding/ebcdic.enc +19 -0
  2122. package/python/tcl/tcl8.6/encoding/euc-cn.enc +1397 -0
  2123. package/python/tcl/tcl8.6/encoding/euc-jp.enc +1353 -0
  2124. package/python/tcl/tcl8.6/encoding/euc-kr.enc +1533 -0
  2125. package/python/tcl/tcl8.6/encoding/gb12345.enc +1414 -0
  2126. package/python/tcl/tcl8.6/encoding/gb1988.enc +20 -0
  2127. package/python/tcl/tcl8.6/encoding/gb2312-raw.enc +1380 -0
  2128. package/python/tcl/tcl8.6/encoding/gb2312.enc +1397 -0
  2129. package/python/tcl/tcl8.6/encoding/iso2022-jp.enc +12 -0
  2130. package/python/tcl/tcl8.6/encoding/iso2022-kr.enc +7 -0
  2131. package/python/tcl/tcl8.6/encoding/iso2022.enc +14 -0
  2132. package/python/tcl/tcl8.6/encoding/iso8859-1.enc +20 -0
  2133. package/python/tcl/tcl8.6/encoding/iso8859-10.enc +20 -0
  2134. package/python/tcl/tcl8.6/encoding/iso8859-11.enc +20 -0
  2135. package/python/tcl/tcl8.6/encoding/iso8859-13.enc +20 -0
  2136. package/python/tcl/tcl8.6/encoding/iso8859-14.enc +20 -0
  2137. package/python/tcl/tcl8.6/encoding/iso8859-15.enc +20 -0
  2138. package/python/tcl/tcl8.6/encoding/iso8859-16.enc +20 -0
  2139. package/python/tcl/tcl8.6/encoding/iso8859-2.enc +20 -0
  2140. package/python/tcl/tcl8.6/encoding/iso8859-3.enc +20 -0
  2141. package/python/tcl/tcl8.6/encoding/iso8859-4.enc +20 -0
  2142. package/python/tcl/tcl8.6/encoding/iso8859-5.enc +20 -0
  2143. package/python/tcl/tcl8.6/encoding/iso8859-6.enc +20 -0
  2144. package/python/tcl/tcl8.6/encoding/iso8859-7.enc +20 -0
  2145. package/python/tcl/tcl8.6/encoding/iso8859-8.enc +20 -0
  2146. package/python/tcl/tcl8.6/encoding/iso8859-9.enc +20 -0
  2147. package/python/tcl/tcl8.6/encoding/jis0201.enc +20 -0
  2148. package/python/tcl/tcl8.6/encoding/jis0208.enc +1319 -0
  2149. package/python/tcl/tcl8.6/encoding/jis0212.enc +1159 -0
  2150. package/python/tcl/tcl8.6/encoding/koi8-r.enc +20 -0
  2151. package/python/tcl/tcl8.6/encoding/koi8-u.enc +20 -0
  2152. package/python/tcl/tcl8.6/encoding/ksc5601.enc +1516 -0
  2153. package/python/tcl/tcl8.6/encoding/macCentEuro.enc +20 -0
  2154. package/python/tcl/tcl8.6/encoding/macCroatian.enc +20 -0
  2155. package/python/tcl/tcl8.6/encoding/macCyrillic.enc +20 -0
  2156. package/python/tcl/tcl8.6/encoding/macDingbats.enc +20 -0
  2157. package/python/tcl/tcl8.6/encoding/macGreek.enc +20 -0
  2158. package/python/tcl/tcl8.6/encoding/macIceland.enc +20 -0
  2159. package/python/tcl/tcl8.6/encoding/macJapan.enc +785 -0
  2160. package/python/tcl/tcl8.6/encoding/macRoman.enc +20 -0
  2161. package/python/tcl/tcl8.6/encoding/macRomania.enc +20 -0
  2162. package/python/tcl/tcl8.6/encoding/macThai.enc +20 -0
  2163. package/python/tcl/tcl8.6/encoding/macTurkish.enc +20 -0
  2164. package/python/tcl/tcl8.6/encoding/macUkraine.enc +20 -0
  2165. package/python/tcl/tcl8.6/encoding/shiftjis.enc +690 -0
  2166. package/python/tcl/tcl8.6/encoding/symbol.enc +20 -0
  2167. package/python/tcl/tcl8.6/encoding/tis-620.enc +20 -0
  2168. package/python/tcl/tcl8.6/history.tcl +335 -0
  2169. package/python/tcl/tcl8.6/http1.0/http.tcl +377 -0
  2170. package/python/tcl/tcl8.6/http1.0/pkgIndex.tcl +11 -0
  2171. package/python/tcl/tcl8.6/init.tcl +827 -0
  2172. package/python/tcl/tcl8.6/msgs/af.msg +49 -0
  2173. package/python/tcl/tcl8.6/msgs/af_za.msg +6 -0
  2174. package/python/tcl/tcl8.6/msgs/ar.msg +54 -0
  2175. package/python/tcl/tcl8.6/msgs/ar_in.msg +6 -0
  2176. package/python/tcl/tcl8.6/msgs/ar_jo.msg +39 -0
  2177. package/python/tcl/tcl8.6/msgs/ar_lb.msg +39 -0
  2178. package/python/tcl/tcl8.6/msgs/ar_sy.msg +39 -0
  2179. package/python/tcl/tcl8.6/msgs/be.msg +52 -0
  2180. package/python/tcl/tcl8.6/msgs/bg.msg +52 -0
  2181. package/python/tcl/tcl8.6/msgs/bn.msg +49 -0
  2182. package/python/tcl/tcl8.6/msgs/bn_in.msg +6 -0
  2183. package/python/tcl/tcl8.6/msgs/ca.msg +50 -0
  2184. package/python/tcl/tcl8.6/msgs/cs.msg +54 -0
  2185. package/python/tcl/tcl8.6/msgs/da.msg +52 -0
  2186. package/python/tcl/tcl8.6/msgs/de.msg +54 -0
  2187. package/python/tcl/tcl8.6/msgs/de_at.msg +35 -0
  2188. package/python/tcl/tcl8.6/msgs/de_be.msg +53 -0
  2189. package/python/tcl/tcl8.6/msgs/el.msg +52 -0
  2190. package/python/tcl/tcl8.6/msgs/en_au.msg +7 -0
  2191. package/python/tcl/tcl8.6/msgs/en_be.msg +7 -0
  2192. package/python/tcl/tcl8.6/msgs/en_bw.msg +6 -0
  2193. package/python/tcl/tcl8.6/msgs/en_ca.msg +7 -0
  2194. package/python/tcl/tcl8.6/msgs/en_gb.msg +7 -0
  2195. package/python/tcl/tcl8.6/msgs/en_hk.msg +8 -0
  2196. package/python/tcl/tcl8.6/msgs/en_ie.msg +7 -0
  2197. package/python/tcl/tcl8.6/msgs/en_in.msg +8 -0
  2198. package/python/tcl/tcl8.6/msgs/en_nz.msg +7 -0
  2199. package/python/tcl/tcl8.6/msgs/en_ph.msg +8 -0
  2200. package/python/tcl/tcl8.6/msgs/en_sg.msg +6 -0
  2201. package/python/tcl/tcl8.6/msgs/en_za.msg +6 -0
  2202. package/python/tcl/tcl8.6/msgs/en_zw.msg +6 -0
  2203. package/python/tcl/tcl8.6/msgs/eo.msg +54 -0
  2204. package/python/tcl/tcl8.6/msgs/es.msg +52 -0
  2205. package/python/tcl/tcl8.6/msgs/es_ar.msg +6 -0
  2206. package/python/tcl/tcl8.6/msgs/es_bo.msg +6 -0
  2207. package/python/tcl/tcl8.6/msgs/es_cl.msg +6 -0
  2208. package/python/tcl/tcl8.6/msgs/es_co.msg +6 -0
  2209. package/python/tcl/tcl8.6/msgs/es_cr.msg +6 -0
  2210. package/python/tcl/tcl8.6/msgs/es_do.msg +6 -0
  2211. package/python/tcl/tcl8.6/msgs/es_ec.msg +6 -0
  2212. package/python/tcl/tcl8.6/msgs/es_gt.msg +6 -0
  2213. package/python/tcl/tcl8.6/msgs/es_hn.msg +6 -0
  2214. package/python/tcl/tcl8.6/msgs/es_mx.msg +6 -0
  2215. package/python/tcl/tcl8.6/msgs/es_ni.msg +6 -0
  2216. package/python/tcl/tcl8.6/msgs/es_pa.msg +6 -0
  2217. package/python/tcl/tcl8.6/msgs/es_pe.msg +6 -0
  2218. package/python/tcl/tcl8.6/msgs/es_pr.msg +6 -0
  2219. package/python/tcl/tcl8.6/msgs/es_py.msg +6 -0
  2220. package/python/tcl/tcl8.6/msgs/es_sv.msg +6 -0
  2221. package/python/tcl/tcl8.6/msgs/es_uy.msg +6 -0
  2222. package/python/tcl/tcl8.6/msgs/es_ve.msg +6 -0
  2223. package/python/tcl/tcl8.6/msgs/et.msg +52 -0
  2224. package/python/tcl/tcl8.6/msgs/eu.msg +47 -0
  2225. package/python/tcl/tcl8.6/msgs/eu_es.msg +7 -0
  2226. package/python/tcl/tcl8.6/msgs/fa.msg +47 -0
  2227. package/python/tcl/tcl8.6/msgs/fa_in.msg +52 -0
  2228. package/python/tcl/tcl8.6/msgs/fa_ir.msg +9 -0
  2229. package/python/tcl/tcl8.6/msgs/fi.msg +50 -0
  2230. package/python/tcl/tcl8.6/msgs/fo.msg +47 -0
  2231. package/python/tcl/tcl8.6/msgs/fo_fo.msg +7 -0
  2232. package/python/tcl/tcl8.6/msgs/fr.msg +52 -0
  2233. package/python/tcl/tcl8.6/msgs/fr_be.msg +7 -0
  2234. package/python/tcl/tcl8.6/msgs/fr_ca.msg +7 -0
  2235. package/python/tcl/tcl8.6/msgs/fr_ch.msg +7 -0
  2236. package/python/tcl/tcl8.6/msgs/ga.msg +47 -0
  2237. package/python/tcl/tcl8.6/msgs/ga_ie.msg +7 -0
  2238. package/python/tcl/tcl8.6/msgs/gl.msg +47 -0
  2239. package/python/tcl/tcl8.6/msgs/gl_es.msg +6 -0
  2240. package/python/tcl/tcl8.6/msgs/gv.msg +47 -0
  2241. package/python/tcl/tcl8.6/msgs/gv_gb.msg +6 -0
  2242. package/python/tcl/tcl8.6/msgs/he.msg +52 -0
  2243. package/python/tcl/tcl8.6/msgs/hi.msg +39 -0
  2244. package/python/tcl/tcl8.6/msgs/hi_in.msg +6 -0
  2245. package/python/tcl/tcl8.6/msgs/hr.msg +50 -0
  2246. package/python/tcl/tcl8.6/msgs/hu.msg +54 -0
  2247. package/python/tcl/tcl8.6/msgs/id.msg +47 -0
  2248. package/python/tcl/tcl8.6/msgs/id_id.msg +6 -0
  2249. package/python/tcl/tcl8.6/msgs/is.msg +50 -0
  2250. package/python/tcl/tcl8.6/msgs/it.msg +54 -0
  2251. package/python/tcl/tcl8.6/msgs/it_ch.msg +6 -0
  2252. package/python/tcl/tcl8.6/msgs/ja.msg +44 -0
  2253. package/python/tcl/tcl8.6/msgs/kl.msg +47 -0
  2254. package/python/tcl/tcl8.6/msgs/kl_gl.msg +7 -0
  2255. package/python/tcl/tcl8.6/msgs/ko.msg +55 -0
  2256. package/python/tcl/tcl8.6/msgs/ko_kr.msg +8 -0
  2257. package/python/tcl/tcl8.6/msgs/kok.msg +39 -0
  2258. package/python/tcl/tcl8.6/msgs/kok_in.msg +6 -0
  2259. package/python/tcl/tcl8.6/msgs/kw.msg +47 -0
  2260. package/python/tcl/tcl8.6/msgs/kw_gb.msg +6 -0
  2261. package/python/tcl/tcl8.6/msgs/lt.msg +52 -0
  2262. package/python/tcl/tcl8.6/msgs/lv.msg +52 -0
  2263. package/python/tcl/tcl8.6/msgs/mk.msg +52 -0
  2264. package/python/tcl/tcl8.6/msgs/mr.msg +39 -0
  2265. package/python/tcl/tcl8.6/msgs/mr_in.msg +6 -0
  2266. package/python/tcl/tcl8.6/msgs/ms.msg +47 -0
  2267. package/python/tcl/tcl8.6/msgs/ms_my.msg +6 -0
  2268. package/python/tcl/tcl8.6/msgs/mt.msg +27 -0
  2269. package/python/tcl/tcl8.6/msgs/nb.msg +52 -0
  2270. package/python/tcl/tcl8.6/msgs/nl.msg +50 -0
  2271. package/python/tcl/tcl8.6/msgs/nl_be.msg +7 -0
  2272. package/python/tcl/tcl8.6/msgs/nn.msg +52 -0
  2273. package/python/tcl/tcl8.6/msgs/pl.msg +52 -0
  2274. package/python/tcl/tcl8.6/msgs/pt.msg +50 -0
  2275. package/python/tcl/tcl8.6/msgs/pt_br.msg +7 -0
  2276. package/python/tcl/tcl8.6/msgs/ro.msg +52 -0
  2277. package/python/tcl/tcl8.6/msgs/ru.msg +52 -0
  2278. package/python/tcl/tcl8.6/msgs/ru_ua.msg +6 -0
  2279. package/python/tcl/tcl8.6/msgs/sh.msg +52 -0
  2280. package/python/tcl/tcl8.6/msgs/sk.msg +52 -0
  2281. package/python/tcl/tcl8.6/msgs/sl.msg +52 -0
  2282. package/python/tcl/tcl8.6/msgs/sq.msg +54 -0
  2283. package/python/tcl/tcl8.6/msgs/sr.msg +52 -0
  2284. package/python/tcl/tcl8.6/msgs/sv.msg +52 -0
  2285. package/python/tcl/tcl8.6/msgs/sw.msg +49 -0
  2286. package/python/tcl/tcl8.6/msgs/ta.msg +39 -0
  2287. package/python/tcl/tcl8.6/msgs/ta_in.msg +6 -0
  2288. package/python/tcl/tcl8.6/msgs/te.msg +47 -0
  2289. package/python/tcl/tcl8.6/msgs/te_in.msg +8 -0
  2290. package/python/tcl/tcl8.6/msgs/th.msg +54 -0
  2291. package/python/tcl/tcl8.6/msgs/tr.msg +50 -0
  2292. package/python/tcl/tcl8.6/msgs/uk.msg +52 -0
  2293. package/python/tcl/tcl8.6/msgs/vi.msg +50 -0
  2294. package/python/tcl/tcl8.6/msgs/zh.msg +55 -0
  2295. package/python/tcl/tcl8.6/msgs/zh_cn.msg +7 -0
  2296. package/python/tcl/tcl8.6/msgs/zh_hk.msg +28 -0
  2297. package/python/tcl/tcl8.6/msgs/zh_sg.msg +8 -0
  2298. package/python/tcl/tcl8.6/msgs/zh_tw.msg +8 -0
  2299. package/python/tcl/tcl8.6/opt0.4/optparse.tcl +1072 -0
  2300. package/python/tcl/tcl8.6/opt0.4/pkgIndex.tcl +12 -0
  2301. package/python/tcl/tcl8.6/package.tcl +751 -0
  2302. package/python/tcl/tcl8.6/parray.tcl +28 -0
  2303. package/python/tcl/tcl8.6/safe.tcl +1289 -0
  2304. package/python/tcl/tcl8.6/tclIndex +78 -0
  2305. package/python/tcl/tcl8.6/tm.tcl +380 -0
  2306. package/python/tcl/tcl8.6/tzdata/Africa/Abidjan +6 -0
  2307. package/python/tcl/tcl8.6/tzdata/Africa/Accra +5 -0
  2308. package/python/tcl/tcl8.6/tzdata/Africa/Addis_Ababa +5 -0
  2309. package/python/tcl/tcl8.6/tzdata/Africa/Algiers +39 -0
  2310. package/python/tcl/tcl8.6/tzdata/Africa/Asmara +5 -0
  2311. package/python/tcl/tcl8.6/tzdata/Africa/Asmera +5 -0
  2312. package/python/tcl/tcl8.6/tzdata/Africa/Bamako +5 -0
  2313. package/python/tcl/tcl8.6/tzdata/Africa/Bangui +5 -0
  2314. package/python/tcl/tcl8.6/tzdata/Africa/Banjul +5 -0
  2315. package/python/tcl/tcl8.6/tzdata/Africa/Bissau +7 -0
  2316. package/python/tcl/tcl8.6/tzdata/Africa/Blantyre +5 -0
  2317. package/python/tcl/tcl8.6/tzdata/Africa/Brazzaville +5 -0
  2318. package/python/tcl/tcl8.6/tzdata/Africa/Bujumbura +5 -0
  2319. package/python/tcl/tcl8.6/tzdata/Africa/Cairo +132 -0
  2320. package/python/tcl/tcl8.6/tzdata/Africa/Casablanca +202 -0
  2321. package/python/tcl/tcl8.6/tzdata/Africa/Ceuta +259 -0
  2322. package/python/tcl/tcl8.6/tzdata/Africa/Conakry +5 -0
  2323. package/python/tcl/tcl8.6/tzdata/Africa/Dakar +5 -0
  2324. package/python/tcl/tcl8.6/tzdata/Africa/Dar_es_Salaam +5 -0
  2325. package/python/tcl/tcl8.6/tzdata/Africa/Djibouti +5 -0
  2326. package/python/tcl/tcl8.6/tzdata/Africa/Douala +5 -0
  2327. package/python/tcl/tcl8.6/tzdata/Africa/El_Aaiun +191 -0
  2328. package/python/tcl/tcl8.6/tzdata/Africa/Freetown +5 -0
  2329. package/python/tcl/tcl8.6/tzdata/Africa/Gaborone +5 -0
  2330. package/python/tcl/tcl8.6/tzdata/Africa/Harare +5 -0
  2331. package/python/tcl/tcl8.6/tzdata/Africa/Johannesburg +11 -0
  2332. package/python/tcl/tcl8.6/tzdata/Africa/Juba +40 -0
  2333. package/python/tcl/tcl8.6/tzdata/Africa/Kampala +5 -0
  2334. package/python/tcl/tcl8.6/tzdata/Africa/Khartoum +40 -0
  2335. package/python/tcl/tcl8.6/tzdata/Africa/Kigali +5 -0
  2336. package/python/tcl/tcl8.6/tzdata/Africa/Kinshasa +5 -0
  2337. package/python/tcl/tcl8.6/tzdata/Africa/Lagos +9 -0
  2338. package/python/tcl/tcl8.6/tzdata/Africa/Libreville +5 -0
  2339. package/python/tcl/tcl8.6/tzdata/Africa/Lome +5 -0
  2340. package/python/tcl/tcl8.6/tzdata/Africa/Luanda +5 -0
  2341. package/python/tcl/tcl8.6/tzdata/Africa/Lubumbashi +5 -0
  2342. package/python/tcl/tcl8.6/tzdata/Africa/Lusaka +5 -0
  2343. package/python/tcl/tcl8.6/tzdata/Africa/Malabo +5 -0
  2344. package/python/tcl/tcl8.6/tzdata/Africa/Maputo +6 -0
  2345. package/python/tcl/tcl8.6/tzdata/Africa/Maseru +5 -0
  2346. package/python/tcl/tcl8.6/tzdata/Africa/Mbabane +5 -0
  2347. package/python/tcl/tcl8.6/tzdata/Africa/Mogadishu +5 -0
  2348. package/python/tcl/tcl8.6/tzdata/Africa/Monrovia +8 -0
  2349. package/python/tcl/tcl8.6/tzdata/Africa/Nairobi +10 -0
  2350. package/python/tcl/tcl8.6/tzdata/Africa/Ndjamena +8 -0
  2351. package/python/tcl/tcl8.6/tzdata/Africa/Niamey +5 -0
  2352. package/python/tcl/tcl8.6/tzdata/Africa/Nouakchott +5 -0
  2353. package/python/tcl/tcl8.6/tzdata/Africa/Ouagadougou +5 -0
  2354. package/python/tcl/tcl8.6/tzdata/Africa/Porto-Novo +5 -0
  2355. package/python/tcl/tcl8.6/tzdata/Africa/Sao_Tome +9 -0
  2356. package/python/tcl/tcl8.6/tzdata/Africa/Timbuktu +5 -0
  2357. package/python/tcl/tcl8.6/tzdata/Africa/Tripoli +34 -0
  2358. package/python/tcl/tcl8.6/tzdata/Africa/Tunis +39 -0
  2359. package/python/tcl/tcl8.6/tzdata/Africa/Windhoek +58 -0
  2360. package/python/tcl/tcl8.6/tzdata/America/Adak +276 -0
  2361. package/python/tcl/tcl8.6/tzdata/America/Anchorage +275 -0
  2362. package/python/tcl/tcl8.6/tzdata/America/Anguilla +5 -0
  2363. package/python/tcl/tcl8.6/tzdata/America/Antigua +5 -0
  2364. package/python/tcl/tcl8.6/tzdata/America/Araguaina +60 -0
  2365. package/python/tcl/tcl8.6/tzdata/America/Argentina/Buenos_Aires +67 -0
  2366. package/python/tcl/tcl8.6/tzdata/America/Argentina/Catamarca +68 -0
  2367. package/python/tcl/tcl8.6/tzdata/America/Argentina/ComodRivadavia +5 -0
  2368. package/python/tcl/tcl8.6/tzdata/America/Argentina/Cordoba +67 -0
  2369. package/python/tcl/tcl8.6/tzdata/America/Argentina/Jujuy +67 -0
  2370. package/python/tcl/tcl8.6/tzdata/America/Argentina/La_Rioja +69 -0
  2371. package/python/tcl/tcl8.6/tzdata/America/Argentina/Mendoza +68 -0
  2372. package/python/tcl/tcl8.6/tzdata/America/Argentina/Rio_Gallegos +68 -0
  2373. package/python/tcl/tcl8.6/tzdata/America/Argentina/Salta +66 -0
  2374. package/python/tcl/tcl8.6/tzdata/America/Argentina/San_Juan +69 -0
  2375. package/python/tcl/tcl8.6/tzdata/America/Argentina/San_Luis +68 -0
  2376. package/python/tcl/tcl8.6/tzdata/America/Argentina/Tucuman +69 -0
  2377. package/python/tcl/tcl8.6/tzdata/America/Argentina/Ushuaia +68 -0
  2378. package/python/tcl/tcl8.6/tzdata/America/Aruba +5 -0
  2379. package/python/tcl/tcl8.6/tzdata/America/Asuncion +259 -0
  2380. package/python/tcl/tcl8.6/tzdata/America/Atikokan +5 -0
  2381. package/python/tcl/tcl8.6/tzdata/America/Atka +5 -0
  2382. package/python/tcl/tcl8.6/tzdata/America/Bahia +68 -0
  2383. package/python/tcl/tcl8.6/tzdata/America/Bahia_Banderas +222 -0
  2384. package/python/tcl/tcl8.6/tzdata/America/Barbados +22 -0
  2385. package/python/tcl/tcl8.6/tzdata/America/Belem +35 -0
  2386. package/python/tcl/tcl8.6/tzdata/America/Belize +103 -0
  2387. package/python/tcl/tcl8.6/tzdata/America/Blanc-Sablon +5 -0
  2388. package/python/tcl/tcl8.6/tzdata/America/Boa_Vista +40 -0
  2389. package/python/tcl/tcl8.6/tzdata/America/Bogota +9 -0
  2390. package/python/tcl/tcl8.6/tzdata/America/Boise +281 -0
  2391. package/python/tcl/tcl8.6/tzdata/America/Buenos_Aires +5 -0
  2392. package/python/tcl/tcl8.6/tzdata/America/Cambridge_Bay +252 -0
  2393. package/python/tcl/tcl8.6/tzdata/America/Campo_Grande +96 -0
  2394. package/python/tcl/tcl8.6/tzdata/America/Cancun +47 -0
  2395. package/python/tcl/tcl8.6/tzdata/America/Caracas +10 -0
  2396. package/python/tcl/tcl8.6/tzdata/America/Catamarca +5 -0
  2397. package/python/tcl/tcl8.6/tzdata/America/Cayenne +7 -0
  2398. package/python/tcl/tcl8.6/tzdata/America/Cayman +5 -0
  2399. package/python/tcl/tcl8.6/tzdata/America/Chicago +369 -0
  2400. package/python/tcl/tcl8.6/tzdata/America/Chihuahua +221 -0
  2401. package/python/tcl/tcl8.6/tzdata/America/Coral_Harbour +5 -0
  2402. package/python/tcl/tcl8.6/tzdata/America/Cordoba +5 -0
  2403. package/python/tcl/tcl8.6/tzdata/America/Costa_Rica +15 -0
  2404. package/python/tcl/tcl8.6/tzdata/America/Creston +5 -0
  2405. package/python/tcl/tcl8.6/tzdata/America/Cuiaba +96 -0
  2406. package/python/tcl/tcl8.6/tzdata/America/Curacao +5 -0
  2407. package/python/tcl/tcl8.6/tzdata/America/Danmarkshavn +39 -0
  2408. package/python/tcl/tcl8.6/tzdata/America/Dawson +98 -0
  2409. package/python/tcl/tcl8.6/tzdata/America/Dawson_Creek +64 -0
  2410. package/python/tcl/tcl8.6/tzdata/America/Denver +291 -0
  2411. package/python/tcl/tcl8.6/tzdata/America/Detroit +275 -0
  2412. package/python/tcl/tcl8.6/tzdata/America/Dominica +5 -0
  2413. package/python/tcl/tcl8.6/tzdata/America/Edmonton +280 -0
  2414. package/python/tcl/tcl8.6/tzdata/America/Eirunepe +41 -0
  2415. package/python/tcl/tcl8.6/tzdata/America/El_Salvador +10 -0
  2416. package/python/tcl/tcl8.6/tzdata/America/Ensenada +5 -0
  2417. package/python/tcl/tcl8.6/tzdata/America/Fort_Nelson +151 -0
  2418. package/python/tcl/tcl8.6/tzdata/America/Fort_Wayne +5 -0
  2419. package/python/tcl/tcl8.6/tzdata/America/Fortaleza +48 -0
  2420. package/python/tcl/tcl8.6/tzdata/America/Glace_Bay +273 -0
  2421. package/python/tcl/tcl8.6/tzdata/America/Godthab +5 -0
  2422. package/python/tcl/tcl8.6/tzdata/America/Goose_Bay +338 -0
  2423. package/python/tcl/tcl8.6/tzdata/America/Grand_Turk +245 -0
  2424. package/python/tcl/tcl8.6/tzdata/America/Grenada +5 -0
  2425. package/python/tcl/tcl8.6/tzdata/America/Guadeloupe +5 -0
  2426. package/python/tcl/tcl8.6/tzdata/America/Guatemala +14 -0
  2427. package/python/tcl/tcl8.6/tzdata/America/Guayaquil +9 -0
  2428. package/python/tcl/tcl8.6/tzdata/America/Guyana +9 -0
  2429. package/python/tcl/tcl8.6/tzdata/America/Halifax +361 -0
  2430. package/python/tcl/tcl8.6/tzdata/America/Havana +285 -0
  2431. package/python/tcl/tcl8.6/tzdata/America/Hermosillo +21 -0
  2432. package/python/tcl/tcl8.6/tzdata/America/Indiana/Indianapolis +234 -0
  2433. package/python/tcl/tcl8.6/tzdata/America/Indiana/Knox +285 -0
  2434. package/python/tcl/tcl8.6/tzdata/America/Indiana/Marengo +236 -0
  2435. package/python/tcl/tcl8.6/tzdata/America/Indiana/Petersburg +247 -0
  2436. package/python/tcl/tcl8.6/tzdata/America/Indiana/Tell_City +230 -0
  2437. package/python/tcl/tcl8.6/tzdata/America/Indiana/Vevay +213 -0
  2438. package/python/tcl/tcl8.6/tzdata/America/Indiana/Vincennes +234 -0
  2439. package/python/tcl/tcl8.6/tzdata/America/Indiana/Winamac +240 -0
  2440. package/python/tcl/tcl8.6/tzdata/America/Indianapolis +5 -0
  2441. package/python/tcl/tcl8.6/tzdata/America/Inuvik +249 -0
  2442. package/python/tcl/tcl8.6/tzdata/America/Iqaluit +250 -0
  2443. package/python/tcl/tcl8.6/tzdata/America/Jamaica +29 -0
  2444. package/python/tcl/tcl8.6/tzdata/America/Jujuy +5 -0
  2445. package/python/tcl/tcl8.6/tzdata/America/Juneau +276 -0
  2446. package/python/tcl/tcl8.6/tzdata/America/Kentucky/Louisville +311 -0
  2447. package/python/tcl/tcl8.6/tzdata/America/Kentucky/Monticello +279 -0
  2448. package/python/tcl/tcl8.6/tzdata/America/Knox_IN +5 -0
  2449. package/python/tcl/tcl8.6/tzdata/America/Kralendijk +5 -0
  2450. package/python/tcl/tcl8.6/tzdata/America/La_Paz +8 -0
  2451. package/python/tcl/tcl8.6/tzdata/America/Lima +16 -0
  2452. package/python/tcl/tcl8.6/tzdata/America/Los_Angeles +317 -0
  2453. package/python/tcl/tcl8.6/tzdata/America/Louisville +5 -0
  2454. package/python/tcl/tcl8.6/tzdata/America/Lower_Princes +5 -0
  2455. package/python/tcl/tcl8.6/tzdata/America/Maceio +52 -0
  2456. package/python/tcl/tcl8.6/tzdata/America/Managua +21 -0
  2457. package/python/tcl/tcl8.6/tzdata/America/Manaus +39 -0
  2458. package/python/tcl/tcl8.6/tzdata/America/Marigot +5 -0
  2459. package/python/tcl/tcl8.6/tzdata/America/Martinique +9 -0
  2460. package/python/tcl/tcl8.6/tzdata/America/Matamoros +219 -0
  2461. package/python/tcl/tcl8.6/tzdata/America/Mazatlan +222 -0
  2462. package/python/tcl/tcl8.6/tzdata/America/Mendoza +5 -0
  2463. package/python/tcl/tcl8.6/tzdata/America/Menominee +274 -0
  2464. package/python/tcl/tcl8.6/tzdata/America/Merida +216 -0
  2465. package/python/tcl/tcl8.6/tzdata/America/Metlakatla +213 -0
  2466. package/python/tcl/tcl8.6/tzdata/America/Mexico_City +228 -0
  2467. package/python/tcl/tcl8.6/tzdata/America/Miquelon +234 -0
  2468. package/python/tcl/tcl8.6/tzdata/America/Moncton +342 -0
  2469. package/python/tcl/tcl8.6/tzdata/America/Monterrey +218 -0
  2470. package/python/tcl/tcl8.6/tzdata/America/Montevideo +96 -0
  2471. package/python/tcl/tcl8.6/tzdata/America/Montreal +5 -0
  2472. package/python/tcl/tcl8.6/tzdata/America/Montserrat +5 -0
  2473. package/python/tcl/tcl8.6/tzdata/America/Nassau +5 -0
  2474. package/python/tcl/tcl8.6/tzdata/America/New_York +369 -0
  2475. package/python/tcl/tcl8.6/tzdata/America/Nipigon +264 -0
  2476. package/python/tcl/tcl8.6/tzdata/America/Nome +276 -0
  2477. package/python/tcl/tcl8.6/tzdata/America/Noronha +48 -0
  2478. package/python/tcl/tcl8.6/tzdata/America/North_Dakota/Beulah +279 -0
  2479. package/python/tcl/tcl8.6/tzdata/America/North_Dakota/Center +279 -0
  2480. package/python/tcl/tcl8.6/tzdata/America/North_Dakota/New_Salem +279 -0
  2481. package/python/tcl/tcl8.6/tzdata/America/Nuuk +246 -0
  2482. package/python/tcl/tcl8.6/tzdata/America/Ojinaga +222 -0
  2483. package/python/tcl/tcl8.6/tzdata/America/Panama +7 -0
  2484. package/python/tcl/tcl8.6/tzdata/America/Pangnirtung +252 -0
  2485. package/python/tcl/tcl8.6/tzdata/America/Paramaribo +9 -0
  2486. package/python/tcl/tcl8.6/tzdata/America/Phoenix +17 -0
  2487. package/python/tcl/tcl8.6/tzdata/America/Port-au-Prince +215 -0
  2488. package/python/tcl/tcl8.6/tzdata/America/Port_of_Spain +5 -0
  2489. package/python/tcl/tcl8.6/tzdata/America/Porto_Acre +5 -0
  2490. package/python/tcl/tcl8.6/tzdata/America/Porto_Velho +35 -0
  2491. package/python/tcl/tcl8.6/tzdata/America/Puerto_Rico +10 -0
  2492. package/python/tcl/tcl8.6/tzdata/America/Punta_Arenas +122 -0
  2493. package/python/tcl/tcl8.6/tzdata/America/Rainy_River +264 -0
  2494. package/python/tcl/tcl8.6/tzdata/America/Rankin_Inlet +248 -0
  2495. package/python/tcl/tcl8.6/tzdata/America/Recife +48 -0
  2496. package/python/tcl/tcl8.6/tzdata/America/Regina +58 -0
  2497. package/python/tcl/tcl8.6/tzdata/America/Resolute +248 -0
  2498. package/python/tcl/tcl8.6/tzdata/America/Rio_Branco +37 -0
  2499. package/python/tcl/tcl8.6/tzdata/America/Rosario +5 -0
  2500. package/python/tcl/tcl8.6/tzdata/America/Santa_Isabel +5 -0
  2501. package/python/tcl/tcl8.6/tzdata/America/Santarem +36 -0
  2502. package/python/tcl/tcl8.6/tzdata/America/Santiago +289 -0
  2503. package/python/tcl/tcl8.6/tzdata/America/Santo_Domingo +21 -0
  2504. package/python/tcl/tcl8.6/tzdata/America/Sao_Paulo +97 -0
  2505. package/python/tcl/tcl8.6/tzdata/America/Scoresbysund +246 -0
  2506. package/python/tcl/tcl8.6/tzdata/America/Shiprock +5 -0
  2507. package/python/tcl/tcl8.6/tzdata/America/Sitka +275 -0
  2508. package/python/tcl/tcl8.6/tzdata/America/St_Barthelemy +5 -0
  2509. package/python/tcl/tcl8.6/tzdata/America/St_Johns +372 -0
  2510. package/python/tcl/tcl8.6/tzdata/America/St_Kitts +5 -0
  2511. package/python/tcl/tcl8.6/tzdata/America/St_Lucia +5 -0
  2512. package/python/tcl/tcl8.6/tzdata/America/St_Thomas +5 -0
  2513. package/python/tcl/tcl8.6/tzdata/America/St_Vincent +5 -0
  2514. package/python/tcl/tcl8.6/tzdata/America/Swift_Current +29 -0
  2515. package/python/tcl/tcl8.6/tzdata/America/Tegucigalpa +12 -0
  2516. package/python/tcl/tcl8.6/tzdata/America/Thule +224 -0
  2517. package/python/tcl/tcl8.6/tzdata/America/Thunder_Bay +272 -0
  2518. package/python/tcl/tcl8.6/tzdata/America/Tijuana +285 -0
  2519. package/python/tcl/tcl8.6/tzdata/America/Toronto +365 -0
  2520. package/python/tcl/tcl8.6/tzdata/America/Tortola +5 -0
  2521. package/python/tcl/tcl8.6/tzdata/America/Vancouver +320 -0
  2522. package/python/tcl/tcl8.6/tzdata/America/Virgin +5 -0
  2523. package/python/tcl/tcl8.6/tzdata/America/Whitehorse +98 -0
  2524. package/python/tcl/tcl8.6/tzdata/America/Winnipeg +316 -0
  2525. package/python/tcl/tcl8.6/tzdata/America/Yakutat +276 -0
  2526. package/python/tcl/tcl8.6/tzdata/America/Yellowknife +252 -0
  2527. package/python/tcl/tcl8.6/tzdata/Antarctica/Casey +17 -0
  2528. package/python/tcl/tcl8.6/tzdata/Antarctica/Davis +12 -0
  2529. package/python/tcl/tcl8.6/tzdata/Antarctica/DumontDUrville +5 -0
  2530. package/python/tcl/tcl8.6/tzdata/Antarctica/Macquarie +276 -0
  2531. package/python/tcl/tcl8.6/tzdata/Antarctica/Mawson +7 -0
  2532. package/python/tcl/tcl8.6/tzdata/Antarctica/McMurdo +5 -0
  2533. package/python/tcl/tcl8.6/tzdata/Antarctica/Palmer +87 -0
  2534. package/python/tcl/tcl8.6/tzdata/Antarctica/Rothera +6 -0
  2535. package/python/tcl/tcl8.6/tzdata/Antarctica/South_Pole +5 -0
  2536. package/python/tcl/tcl8.6/tzdata/Antarctica/Syowa +5 -0
  2537. package/python/tcl/tcl8.6/tzdata/Antarctica/Troll +196 -0
  2538. package/python/tcl/tcl8.6/tzdata/Antarctica/Vostok +6 -0
  2539. package/python/tcl/tcl8.6/tzdata/Arctic/Longyearbyen +5 -0
  2540. package/python/tcl/tcl8.6/tzdata/Asia/Aden +5 -0
  2541. package/python/tcl/tcl8.6/tzdata/Asia/Almaty +57 -0
  2542. package/python/tcl/tcl8.6/tzdata/Asia/Amman +246 -0
  2543. package/python/tcl/tcl8.6/tzdata/Asia/Anadyr +72 -0
  2544. package/python/tcl/tcl8.6/tzdata/Asia/Aqtau +58 -0
  2545. package/python/tcl/tcl8.6/tzdata/Asia/Aqtobe +58 -0
  2546. package/python/tcl/tcl8.6/tzdata/Asia/Ashgabat +31 -0
  2547. package/python/tcl/tcl8.6/tzdata/Asia/Ashkhabad +5 -0
  2548. package/python/tcl/tcl8.6/tzdata/Asia/Atyrau +58 -0
  2549. package/python/tcl/tcl8.6/tzdata/Asia/Baghdad +59 -0
  2550. package/python/tcl/tcl8.6/tzdata/Asia/Bahrain +5 -0
  2551. package/python/tcl/tcl8.6/tzdata/Asia/Baku +74 -0
  2552. package/python/tcl/tcl8.6/tzdata/Asia/Bangkok +7 -0
  2553. package/python/tcl/tcl8.6/tzdata/Asia/Barnaul +73 -0
  2554. package/python/tcl/tcl8.6/tzdata/Asia/Beirut +270 -0
  2555. package/python/tcl/tcl8.6/tzdata/Asia/Bishkek +58 -0
  2556. package/python/tcl/tcl8.6/tzdata/Asia/Brunei +7 -0
  2557. package/python/tcl/tcl8.6/tzdata/Asia/Calcutta +5 -0
  2558. package/python/tcl/tcl8.6/tzdata/Asia/Chita +72 -0
  2559. package/python/tcl/tcl8.6/tzdata/Asia/Choibalsan +56 -0
  2560. package/python/tcl/tcl8.6/tzdata/Asia/Chongqing +5 -0
  2561. package/python/tcl/tcl8.6/tzdata/Asia/Chungking +5 -0
  2562. package/python/tcl/tcl8.6/tzdata/Asia/Colombo +13 -0
  2563. package/python/tcl/tcl8.6/tzdata/Asia/Dacca +5 -0
  2564. package/python/tcl/tcl8.6/tzdata/Asia/Damascus +280 -0
  2565. package/python/tcl/tcl8.6/tzdata/Asia/Dhaka +13 -0
  2566. package/python/tcl/tcl8.6/tzdata/Asia/Dili +9 -0
  2567. package/python/tcl/tcl8.6/tzdata/Asia/Dubai +6 -0
  2568. package/python/tcl/tcl8.6/tzdata/Asia/Dushanbe +29 -0
  2569. package/python/tcl/tcl8.6/tzdata/Asia/Famagusta +256 -0
  2570. package/python/tcl/tcl8.6/tzdata/Asia/Gaza +284 -0
  2571. package/python/tcl/tcl8.6/tzdata/Asia/Harbin +5 -0
  2572. package/python/tcl/tcl8.6/tzdata/Asia/Hebron +283 -0
  2573. package/python/tcl/tcl8.6/tzdata/Asia/Ho_Chi_Minh +14 -0
  2574. package/python/tcl/tcl8.6/tzdata/Asia/Hong_Kong +75 -0
  2575. package/python/tcl/tcl8.6/tzdata/Asia/Hovd +55 -0
  2576. package/python/tcl/tcl8.6/tzdata/Asia/Irkutsk +72 -0
  2577. package/python/tcl/tcl8.6/tzdata/Asia/Istanbul +5 -0
  2578. package/python/tcl/tcl8.6/tzdata/Asia/Jakarta +13 -0
  2579. package/python/tcl/tcl8.6/tzdata/Asia/Jayapura +8 -0
  2580. package/python/tcl/tcl8.6/tzdata/Asia/Jerusalem +278 -0
  2581. package/python/tcl/tcl8.6/tzdata/Asia/Kabul +7 -0
  2582. package/python/tcl/tcl8.6/tzdata/Asia/Kamchatka +71 -0
  2583. package/python/tcl/tcl8.6/tzdata/Asia/Karachi +16 -0
  2584. package/python/tcl/tcl8.6/tzdata/Asia/Kashgar +5 -0
  2585. package/python/tcl/tcl8.6/tzdata/Asia/Kathmandu +7 -0
  2586. package/python/tcl/tcl8.6/tzdata/Asia/Katmandu +5 -0
  2587. package/python/tcl/tcl8.6/tzdata/Asia/Khandyga +73 -0
  2588. package/python/tcl/tcl8.6/tzdata/Asia/Kolkata +12 -0
  2589. package/python/tcl/tcl8.6/tzdata/Asia/Krasnoyarsk +71 -0
  2590. package/python/tcl/tcl8.6/tzdata/Asia/Kuala_Lumpur +13 -0
  2591. package/python/tcl/tcl8.6/tzdata/Asia/Kuching +23 -0
  2592. package/python/tcl/tcl8.6/tzdata/Asia/Kuwait +5 -0
  2593. package/python/tcl/tcl8.6/tzdata/Asia/Macao +5 -0
  2594. package/python/tcl/tcl8.6/tzdata/Asia/Macau +76 -0
  2595. package/python/tcl/tcl8.6/tzdata/Asia/Magadan +72 -0
  2596. package/python/tcl/tcl8.6/tzdata/Asia/Makassar +9 -0
  2597. package/python/tcl/tcl8.6/tzdata/Asia/Manila +15 -0
  2598. package/python/tcl/tcl8.6/tzdata/Asia/Muscat +5 -0
  2599. package/python/tcl/tcl8.6/tzdata/Asia/Nicosia +257 -0
  2600. package/python/tcl/tcl8.6/tzdata/Asia/Novokuznetsk +71 -0
  2601. package/python/tcl/tcl8.6/tzdata/Asia/Novosibirsk +73 -0
  2602. package/python/tcl/tcl8.6/tzdata/Asia/Omsk +71 -0
  2603. package/python/tcl/tcl8.6/tzdata/Asia/Oral +58 -0
  2604. package/python/tcl/tcl8.6/tzdata/Asia/Phnom_Penh +5 -0
  2605. package/python/tcl/tcl8.6/tzdata/Asia/Pontianak +13 -0
  2606. package/python/tcl/tcl8.6/tzdata/Asia/Pyongyang +10 -0
  2607. package/python/tcl/tcl8.6/tzdata/Asia/Qatar +7 -0
  2608. package/python/tcl/tcl8.6/tzdata/Asia/Qostanay +58 -0
  2609. package/python/tcl/tcl8.6/tzdata/Asia/Qyzylorda +58 -0
  2610. package/python/tcl/tcl8.6/tzdata/Asia/Rangoon +5 -0
  2611. package/python/tcl/tcl8.6/tzdata/Asia/Riyadh +6 -0
  2612. package/python/tcl/tcl8.6/tzdata/Asia/Saigon +5 -0
  2613. package/python/tcl/tcl8.6/tzdata/Asia/Sakhalin +73 -0
  2614. package/python/tcl/tcl8.6/tzdata/Asia/Samarkand +31 -0
  2615. package/python/tcl/tcl8.6/tzdata/Asia/Seoul +34 -0
  2616. package/python/tcl/tcl8.6/tzdata/Asia/Shanghai +34 -0
  2617. package/python/tcl/tcl8.6/tzdata/Asia/Singapore +13 -0
  2618. package/python/tcl/tcl8.6/tzdata/Asia/Srednekolymsk +71 -0
  2619. package/python/tcl/tcl8.6/tzdata/Asia/Taipei +46 -0
  2620. package/python/tcl/tcl8.6/tzdata/Asia/Tashkent +31 -0
  2621. package/python/tcl/tcl8.6/tzdata/Asia/Tbilisi +60 -0
  2622. package/python/tcl/tcl8.6/tzdata/Asia/Tehran +229 -0
  2623. package/python/tcl/tcl8.6/tzdata/Asia/Tel_Aviv +5 -0
  2624. package/python/tcl/tcl8.6/tzdata/Asia/Thimbu +5 -0
  2625. package/python/tcl/tcl8.6/tzdata/Asia/Thimphu +7 -0
  2626. package/python/tcl/tcl8.6/tzdata/Asia/Tokyo +14 -0
  2627. package/python/tcl/tcl8.6/tzdata/Asia/Tomsk +73 -0
  2628. package/python/tcl/tcl8.6/tzdata/Asia/Ujung_Pandang +5 -0
  2629. package/python/tcl/tcl8.6/tzdata/Asia/Ulaanbaatar +55 -0
  2630. package/python/tcl/tcl8.6/tzdata/Asia/Ulan_Bator +5 -0
  2631. package/python/tcl/tcl8.6/tzdata/Asia/Urumqi +6 -0
  2632. package/python/tcl/tcl8.6/tzdata/Asia/Ust-Nera +71 -0
  2633. package/python/tcl/tcl8.6/tzdata/Asia/Vientiane +5 -0
  2634. package/python/tcl/tcl8.6/tzdata/Asia/Vladivostok +71 -0
  2635. package/python/tcl/tcl8.6/tzdata/Asia/Yakutsk +71 -0
  2636. package/python/tcl/tcl8.6/tzdata/Asia/Yangon +9 -0
  2637. package/python/tcl/tcl8.6/tzdata/Asia/Yekaterinburg +72 -0
  2638. package/python/tcl/tcl8.6/tzdata/Asia/Yerevan +70 -0
  2639. package/python/tcl/tcl8.6/tzdata/Atlantic/Azores +347 -0
  2640. package/python/tcl/tcl8.6/tzdata/Atlantic/Bermuda +286 -0
  2641. package/python/tcl/tcl8.6/tzdata/Atlantic/Canary +247 -0
  2642. package/python/tcl/tcl8.6/tzdata/Atlantic/Cape_Verde +9 -0
  2643. package/python/tcl/tcl8.6/tzdata/Atlantic/Faeroe +5 -0
  2644. package/python/tcl/tcl8.6/tzdata/Atlantic/Faroe +245 -0
  2645. package/python/tcl/tcl8.6/tzdata/Atlantic/Jan_Mayen +5 -0
  2646. package/python/tcl/tcl8.6/tzdata/Atlantic/Madeira +348 -0
  2647. package/python/tcl/tcl8.6/tzdata/Atlantic/Reykjavik +73 -0
  2648. package/python/tcl/tcl8.6/tzdata/Atlantic/South_Georgia +6 -0
  2649. package/python/tcl/tcl8.6/tzdata/Atlantic/St_Helena +5 -0
  2650. package/python/tcl/tcl8.6/tzdata/Atlantic/Stanley +75 -0
  2651. package/python/tcl/tcl8.6/tzdata/Australia/ACT +5 -0
  2652. package/python/tcl/tcl8.6/tzdata/Australia/Adelaide +273 -0
  2653. package/python/tcl/tcl8.6/tzdata/Australia/Brisbane +23 -0
  2654. package/python/tcl/tcl8.6/tzdata/Australia/Broken_Hill +275 -0
  2655. package/python/tcl/tcl8.6/tzdata/Australia/Canberra +5 -0
  2656. package/python/tcl/tcl8.6/tzdata/Australia/Currie +5 -0
  2657. package/python/tcl/tcl8.6/tzdata/Australia/Darwin +15 -0
  2658. package/python/tcl/tcl8.6/tzdata/Australia/Eucla +25 -0
  2659. package/python/tcl/tcl8.6/tzdata/Australia/Hobart +285 -0
  2660. package/python/tcl/tcl8.6/tzdata/Australia/LHI +5 -0
  2661. package/python/tcl/tcl8.6/tzdata/Australia/Lindeman +28 -0
  2662. package/python/tcl/tcl8.6/tzdata/Australia/Lord_Howe +245 -0
  2663. package/python/tcl/tcl8.6/tzdata/Australia/Melbourne +272 -0
  2664. package/python/tcl/tcl8.6/tzdata/Australia/NSW +5 -0
  2665. package/python/tcl/tcl8.6/tzdata/Australia/North +5 -0
  2666. package/python/tcl/tcl8.6/tzdata/Australia/Perth +25 -0
  2667. package/python/tcl/tcl8.6/tzdata/Australia/Queensland +5 -0
  2668. package/python/tcl/tcl8.6/tzdata/Australia/South +5 -0
  2669. package/python/tcl/tcl8.6/tzdata/Australia/Sydney +272 -0
  2670. package/python/tcl/tcl8.6/tzdata/Australia/Tasmania +5 -0
  2671. package/python/tcl/tcl8.6/tzdata/Australia/Victoria +5 -0
  2672. package/python/tcl/tcl8.6/tzdata/Australia/West +5 -0
  2673. package/python/tcl/tcl8.6/tzdata/Australia/Yancowinna +5 -0
  2674. package/python/tcl/tcl8.6/tzdata/Brazil/Acre +5 -0
  2675. package/python/tcl/tcl8.6/tzdata/Brazil/DeNoronha +5 -0
  2676. package/python/tcl/tcl8.6/tzdata/Brazil/East +5 -0
  2677. package/python/tcl/tcl8.6/tzdata/Brazil/West +5 -0
  2678. package/python/tcl/tcl8.6/tzdata/CET +265 -0
  2679. package/python/tcl/tcl8.6/tzdata/CST6CDT +278 -0
  2680. package/python/tcl/tcl8.6/tzdata/Canada/Atlantic +5 -0
  2681. package/python/tcl/tcl8.6/tzdata/Canada/Central +5 -0
  2682. package/python/tcl/tcl8.6/tzdata/Canada/East-Saskatchewan +5 -0
  2683. package/python/tcl/tcl8.6/tzdata/Canada/Eastern +5 -0
  2684. package/python/tcl/tcl8.6/tzdata/Canada/Mountain +5 -0
  2685. package/python/tcl/tcl8.6/tzdata/Canada/Newfoundland +5 -0
  2686. package/python/tcl/tcl8.6/tzdata/Canada/Pacific +5 -0
  2687. package/python/tcl/tcl8.6/tzdata/Canada/Saskatchewan +5 -0
  2688. package/python/tcl/tcl8.6/tzdata/Canada/Yukon +5 -0
  2689. package/python/tcl/tcl8.6/tzdata/Chile/Continental +5 -0
  2690. package/python/tcl/tcl8.6/tzdata/Chile/EasterIsland +5 -0
  2691. package/python/tcl/tcl8.6/tzdata/Cuba +5 -0
  2692. package/python/tcl/tcl8.6/tzdata/EET +251 -0
  2693. package/python/tcl/tcl8.6/tzdata/EST +5 -0
  2694. package/python/tcl/tcl8.6/tzdata/EST5EDT +278 -0
  2695. package/python/tcl/tcl8.6/tzdata/Egypt +5 -0
  2696. package/python/tcl/tcl8.6/tzdata/Eire +5 -0
  2697. package/python/tcl/tcl8.6/tzdata/Etc/GMT +5 -0
  2698. package/python/tcl/tcl8.6/tzdata/Etc/GMT+0 +5 -0
  2699. package/python/tcl/tcl8.6/tzdata/Etc/GMT+1 +5 -0
  2700. package/python/tcl/tcl8.6/tzdata/Etc/GMT+10 +5 -0
  2701. package/python/tcl/tcl8.6/tzdata/Etc/GMT+11 +5 -0
  2702. package/python/tcl/tcl8.6/tzdata/Etc/GMT+12 +5 -0
  2703. package/python/tcl/tcl8.6/tzdata/Etc/GMT+2 +5 -0
  2704. package/python/tcl/tcl8.6/tzdata/Etc/GMT+3 +5 -0
  2705. package/python/tcl/tcl8.6/tzdata/Etc/GMT+4 +5 -0
  2706. package/python/tcl/tcl8.6/tzdata/Etc/GMT+5 +5 -0
  2707. package/python/tcl/tcl8.6/tzdata/Etc/GMT+6 +5 -0
  2708. package/python/tcl/tcl8.6/tzdata/Etc/GMT+7 +5 -0
  2709. package/python/tcl/tcl8.6/tzdata/Etc/GMT+8 +5 -0
  2710. package/python/tcl/tcl8.6/tzdata/Etc/GMT+9 +5 -0
  2711. package/python/tcl/tcl8.6/tzdata/Etc/GMT-0 +5 -0
  2712. package/python/tcl/tcl8.6/tzdata/Etc/GMT-1 +5 -0
  2713. package/python/tcl/tcl8.6/tzdata/Etc/GMT-10 +5 -0
  2714. package/python/tcl/tcl8.6/tzdata/Etc/GMT-11 +5 -0
  2715. package/python/tcl/tcl8.6/tzdata/Etc/GMT-12 +5 -0
  2716. package/python/tcl/tcl8.6/tzdata/Etc/GMT-13 +5 -0
  2717. package/python/tcl/tcl8.6/tzdata/Etc/GMT-14 +5 -0
  2718. package/python/tcl/tcl8.6/tzdata/Etc/GMT-2 +5 -0
  2719. package/python/tcl/tcl8.6/tzdata/Etc/GMT-3 +5 -0
  2720. package/python/tcl/tcl8.6/tzdata/Etc/GMT-4 +5 -0
  2721. package/python/tcl/tcl8.6/tzdata/Etc/GMT-5 +5 -0
  2722. package/python/tcl/tcl8.6/tzdata/Etc/GMT-6 +5 -0
  2723. package/python/tcl/tcl8.6/tzdata/Etc/GMT-7 +5 -0
  2724. package/python/tcl/tcl8.6/tzdata/Etc/GMT-8 +5 -0
  2725. package/python/tcl/tcl8.6/tzdata/Etc/GMT-9 +5 -0
  2726. package/python/tcl/tcl8.6/tzdata/Etc/GMT0 +5 -0
  2727. package/python/tcl/tcl8.6/tzdata/Etc/Greenwich +5 -0
  2728. package/python/tcl/tcl8.6/tzdata/Etc/UCT +5 -0
  2729. package/python/tcl/tcl8.6/tzdata/Etc/UTC +5 -0
  2730. package/python/tcl/tcl8.6/tzdata/Etc/Universal +5 -0
  2731. package/python/tcl/tcl8.6/tzdata/Etc/Zulu +5 -0
  2732. package/python/tcl/tcl8.6/tzdata/Europe/Amsterdam +310 -0
  2733. package/python/tcl/tcl8.6/tzdata/Europe/Andorra +237 -0
  2734. package/python/tcl/tcl8.6/tzdata/Europe/Astrakhan +71 -0
  2735. package/python/tcl/tcl8.6/tzdata/Europe/Athens +268 -0
  2736. package/python/tcl/tcl8.6/tzdata/Europe/Belfast +5 -0
  2737. package/python/tcl/tcl8.6/tzdata/Europe/Belgrade +250 -0
  2738. package/python/tcl/tcl8.6/tzdata/Europe/Berlin +274 -0
  2739. package/python/tcl/tcl8.6/tzdata/Europe/Bratislava +5 -0
  2740. package/python/tcl/tcl8.6/tzdata/Europe/Brussels +316 -0
  2741. package/python/tcl/tcl8.6/tzdata/Europe/Bucharest +268 -0
  2742. package/python/tcl/tcl8.6/tzdata/Europe/Budapest +283 -0
  2743. package/python/tcl/tcl8.6/tzdata/Europe/Busingen +5 -0
  2744. package/python/tcl/tcl8.6/tzdata/Europe/Chisinau +272 -0
  2745. package/python/tcl/tcl8.6/tzdata/Europe/Copenhagen +264 -0
  2746. package/python/tcl/tcl8.6/tzdata/Europe/Dublin +358 -0
  2747. package/python/tcl/tcl8.6/tzdata/Europe/Gibraltar +328 -0
  2748. package/python/tcl/tcl8.6/tzdata/Europe/Guernsey +5 -0
  2749. package/python/tcl/tcl8.6/tzdata/Europe/Helsinki +248 -0
  2750. package/python/tcl/tcl8.6/tzdata/Europe/Isle_of_Man +5 -0
  2751. package/python/tcl/tcl8.6/tzdata/Europe/Istanbul +125 -0
  2752. package/python/tcl/tcl8.6/tzdata/Europe/Jersey +5 -0
  2753. package/python/tcl/tcl8.6/tzdata/Europe/Kaliningrad +86 -0
  2754. package/python/tcl/tcl8.6/tzdata/Europe/Kiev +251 -0
  2755. package/python/tcl/tcl8.6/tzdata/Europe/Kirov +70 -0
  2756. package/python/tcl/tcl8.6/tzdata/Europe/Lisbon +353 -0
  2757. package/python/tcl/tcl8.6/tzdata/Europe/Ljubljana +5 -0
  2758. package/python/tcl/tcl8.6/tzdata/Europe/London +372 -0
  2759. package/python/tcl/tcl8.6/tzdata/Europe/Luxembourg +313 -0
  2760. package/python/tcl/tcl8.6/tzdata/Europe/Madrid +292 -0
  2761. package/python/tcl/tcl8.6/tzdata/Europe/Malta +299 -0
  2762. package/python/tcl/tcl8.6/tzdata/Europe/Mariehamn +5 -0
  2763. package/python/tcl/tcl8.6/tzdata/Europe/Minsk +75 -0
  2764. package/python/tcl/tcl8.6/tzdata/Europe/Monaco +315 -0
  2765. package/python/tcl/tcl8.6/tzdata/Europe/Moscow +83 -0
  2766. package/python/tcl/tcl8.6/tzdata/Europe/Nicosia +5 -0
  2767. package/python/tcl/tcl8.6/tzdata/Europe/Oslo +271 -0
  2768. package/python/tcl/tcl8.6/tzdata/Europe/Paris +314 -0
  2769. package/python/tcl/tcl8.6/tzdata/Europe/Podgorica +5 -0
  2770. package/python/tcl/tcl8.6/tzdata/Europe/Prague +275 -0
  2771. package/python/tcl/tcl8.6/tzdata/Europe/Riga +258 -0
  2772. package/python/tcl/tcl8.6/tzdata/Europe/Rome +302 -0
  2773. package/python/tcl/tcl8.6/tzdata/Europe/Samara +73 -0
  2774. package/python/tcl/tcl8.6/tzdata/Europe/San_Marino +5 -0
  2775. package/python/tcl/tcl8.6/tzdata/Europe/Sarajevo +5 -0
  2776. package/python/tcl/tcl8.6/tzdata/Europe/Saratov +71 -0
  2777. package/python/tcl/tcl8.6/tzdata/Europe/Simferopol +82 -0
  2778. package/python/tcl/tcl8.6/tzdata/Europe/Skopje +5 -0
  2779. package/python/tcl/tcl8.6/tzdata/Europe/Sofia +258 -0
  2780. package/python/tcl/tcl8.6/tzdata/Europe/Stockholm +250 -0
  2781. package/python/tcl/tcl8.6/tzdata/Europe/Tallinn +254 -0
  2782. package/python/tcl/tcl8.6/tzdata/Europe/Tirane +263 -0
  2783. package/python/tcl/tcl8.6/tzdata/Europe/Tiraspol +5 -0
  2784. package/python/tcl/tcl8.6/tzdata/Europe/Ulyanovsk +73 -0
  2785. package/python/tcl/tcl8.6/tzdata/Europe/Uzhgorod +254 -0
  2786. package/python/tcl/tcl8.6/tzdata/Europe/Vaduz +5 -0
  2787. package/python/tcl/tcl8.6/tzdata/Europe/Vatican +5 -0
  2788. package/python/tcl/tcl8.6/tzdata/Europe/Vienna +271 -0
  2789. package/python/tcl/tcl8.6/tzdata/Europe/Vilnius +252 -0
  2790. package/python/tcl/tcl8.6/tzdata/Europe/Volgograd +73 -0
  2791. package/python/tcl/tcl8.6/tzdata/Europe/Warsaw +296 -0
  2792. package/python/tcl/tcl8.6/tzdata/Europe/Zagreb +5 -0
  2793. package/python/tcl/tcl8.6/tzdata/Europe/Zaporozhye +252 -0
  2794. package/python/tcl/tcl8.6/tzdata/Europe/Zurich +250 -0
  2795. package/python/tcl/tcl8.6/tzdata/GB +5 -0
  2796. package/python/tcl/tcl8.6/tzdata/GB-Eire +5 -0
  2797. package/python/tcl/tcl8.6/tzdata/GMT +5 -0
  2798. package/python/tcl/tcl8.6/tzdata/GMT+0 +5 -0
  2799. package/python/tcl/tcl8.6/tzdata/GMT-0 +5 -0
  2800. package/python/tcl/tcl8.6/tzdata/GMT0 +5 -0
  2801. package/python/tcl/tcl8.6/tzdata/Greenwich +5 -0
  2802. package/python/tcl/tcl8.6/tzdata/HST +5 -0
  2803. package/python/tcl/tcl8.6/tzdata/Hongkong +5 -0
  2804. package/python/tcl/tcl8.6/tzdata/Iceland +5 -0
  2805. package/python/tcl/tcl8.6/tzdata/Indian/Antananarivo +5 -0
  2806. package/python/tcl/tcl8.6/tzdata/Indian/Chagos +7 -0
  2807. package/python/tcl/tcl8.6/tzdata/Indian/Christmas +6 -0
  2808. package/python/tcl/tcl8.6/tzdata/Indian/Cocos +6 -0
  2809. package/python/tcl/tcl8.6/tzdata/Indian/Comoro +5 -0
  2810. package/python/tcl/tcl8.6/tzdata/Indian/Kerguelen +6 -0
  2811. package/python/tcl/tcl8.6/tzdata/Indian/Mahe +6 -0
  2812. package/python/tcl/tcl8.6/tzdata/Indian/Maldives +7 -0
  2813. package/python/tcl/tcl8.6/tzdata/Indian/Mauritius +10 -0
  2814. package/python/tcl/tcl8.6/tzdata/Indian/Mayotte +5 -0
  2815. package/python/tcl/tcl8.6/tzdata/Indian/Reunion +6 -0
  2816. package/python/tcl/tcl8.6/tzdata/Iran +5 -0
  2817. package/python/tcl/tcl8.6/tzdata/Israel +5 -0
  2818. package/python/tcl/tcl8.6/tzdata/Jamaica +5 -0
  2819. package/python/tcl/tcl8.6/tzdata/Japan +5 -0
  2820. package/python/tcl/tcl8.6/tzdata/Kwajalein +5 -0
  2821. package/python/tcl/tcl8.6/tzdata/Libya +5 -0
  2822. package/python/tcl/tcl8.6/tzdata/MET +265 -0
  2823. package/python/tcl/tcl8.6/tzdata/MST +5 -0
  2824. package/python/tcl/tcl8.6/tzdata/MST7MDT +278 -0
  2825. package/python/tcl/tcl8.6/tzdata/Mexico/BajaNorte +5 -0
  2826. package/python/tcl/tcl8.6/tzdata/Mexico/BajaSur +5 -0
  2827. package/python/tcl/tcl8.6/tzdata/Mexico/General +5 -0
  2828. package/python/tcl/tcl8.6/tzdata/NZ +5 -0
  2829. package/python/tcl/tcl8.6/tzdata/NZ-CHAT +5 -0
  2830. package/python/tcl/tcl8.6/tzdata/Navajo +5 -0
  2831. package/python/tcl/tcl8.6/tzdata/PRC +5 -0
  2832. package/python/tcl/tcl8.6/tzdata/PST8PDT +278 -0
  2833. package/python/tcl/tcl8.6/tzdata/Pacific/Apia +31 -0
  2834. package/python/tcl/tcl8.6/tzdata/Pacific/Auckland +285 -0
  2835. package/python/tcl/tcl8.6/tzdata/Pacific/Bougainville +10 -0
  2836. package/python/tcl/tcl8.6/tzdata/Pacific/Chatham +258 -0
  2837. package/python/tcl/tcl8.6/tzdata/Pacific/Chuuk +11 -0
  2838. package/python/tcl/tcl8.6/tzdata/Pacific/Easter +268 -0
  2839. package/python/tcl/tcl8.6/tzdata/Pacific/Efate +28 -0
  2840. package/python/tcl/tcl8.6/tzdata/Pacific/Enderbury +5 -0
  2841. package/python/tcl/tcl8.6/tzdata/Pacific/Fakaofo +7 -0
  2842. package/python/tcl/tcl8.6/tzdata/Pacific/Fiji +189 -0
  2843. package/python/tcl/tcl8.6/tzdata/Pacific/Funafuti +6 -0
  2844. package/python/tcl/tcl8.6/tzdata/Pacific/Galapagos +9 -0
  2845. package/python/tcl/tcl8.6/tzdata/Pacific/Gambier +6 -0
  2846. package/python/tcl/tcl8.6/tzdata/Pacific/Guadalcanal +6 -0
  2847. package/python/tcl/tcl8.6/tzdata/Pacific/Guam +26 -0
  2848. package/python/tcl/tcl8.6/tzdata/Pacific/Honolulu +12 -0
  2849. package/python/tcl/tcl8.6/tzdata/Pacific/Johnston +5 -0
  2850. package/python/tcl/tcl8.6/tzdata/Pacific/Kanton +8 -0
  2851. package/python/tcl/tcl8.6/tzdata/Pacific/Kiritimati +8 -0
  2852. package/python/tcl/tcl8.6/tzdata/Pacific/Kosrae +14 -0
  2853. package/python/tcl/tcl8.6/tzdata/Pacific/Kwajalein +11 -0
  2854. package/python/tcl/tcl8.6/tzdata/Pacific/Majuro +12 -0
  2855. package/python/tcl/tcl8.6/tzdata/Pacific/Marquesas +6 -0
  2856. package/python/tcl/tcl8.6/tzdata/Pacific/Midway +5 -0
  2857. package/python/tcl/tcl8.6/tzdata/Pacific/Nauru +9 -0
  2858. package/python/tcl/tcl8.6/tzdata/Pacific/Niue +7 -0
  2859. package/python/tcl/tcl8.6/tzdata/Pacific/Norfolk +172 -0
  2860. package/python/tcl/tcl8.6/tzdata/Pacific/Noumea +12 -0
  2861. package/python/tcl/tcl8.6/tzdata/Pacific/Pago_Pago +7 -0
  2862. package/python/tcl/tcl8.6/tzdata/Pacific/Palau +7 -0
  2863. package/python/tcl/tcl8.6/tzdata/Pacific/Pitcairn +7 -0
  2864. package/python/tcl/tcl8.6/tzdata/Pacific/Pohnpei +12 -0
  2865. package/python/tcl/tcl8.6/tzdata/Pacific/Ponape +5 -0
  2866. package/python/tcl/tcl8.6/tzdata/Pacific/Port_Moresby +7 -0
  2867. package/python/tcl/tcl8.6/tzdata/Pacific/Rarotonga +33 -0
  2868. package/python/tcl/tcl8.6/tzdata/Pacific/Saipan +5 -0
  2869. package/python/tcl/tcl8.6/tzdata/Pacific/Samoa +5 -0
  2870. package/python/tcl/tcl8.6/tzdata/Pacific/Tahiti +6 -0
  2871. package/python/tcl/tcl8.6/tzdata/Pacific/Tarawa +6 -0
  2872. package/python/tcl/tcl8.6/tzdata/Pacific/Tongatapu +16 -0
  2873. package/python/tcl/tcl8.6/tzdata/Pacific/Truk +5 -0
  2874. package/python/tcl/tcl8.6/tzdata/Pacific/Wake +6 -0
  2875. package/python/tcl/tcl8.6/tzdata/Pacific/Wallis +6 -0
  2876. package/python/tcl/tcl8.6/tzdata/Pacific/Yap +5 -0
  2877. package/python/tcl/tcl8.6/tzdata/Poland +5 -0
  2878. package/python/tcl/tcl8.6/tzdata/Portugal +5 -0
  2879. package/python/tcl/tcl8.6/tzdata/ROC +5 -0
  2880. package/python/tcl/tcl8.6/tzdata/ROK +5 -0
  2881. package/python/tcl/tcl8.6/tzdata/Singapore +5 -0
  2882. package/python/tcl/tcl8.6/tzdata/SystemV/AST4 +5 -0
  2883. package/python/tcl/tcl8.6/tzdata/SystemV/AST4ADT +5 -0
  2884. package/python/tcl/tcl8.6/tzdata/SystemV/CST6 +5 -0
  2885. package/python/tcl/tcl8.6/tzdata/SystemV/CST6CDT +5 -0
  2886. package/python/tcl/tcl8.6/tzdata/SystemV/EST5 +5 -0
  2887. package/python/tcl/tcl8.6/tzdata/SystemV/EST5EDT +5 -0
  2888. package/python/tcl/tcl8.6/tzdata/SystemV/HST10 +5 -0
  2889. package/python/tcl/tcl8.6/tzdata/SystemV/MST7 +5 -0
  2890. package/python/tcl/tcl8.6/tzdata/SystemV/MST7MDT +5 -0
  2891. package/python/tcl/tcl8.6/tzdata/SystemV/PST8 +5 -0
  2892. package/python/tcl/tcl8.6/tzdata/SystemV/PST8PDT +5 -0
  2893. package/python/tcl/tcl8.6/tzdata/SystemV/YST9 +5 -0
  2894. package/python/tcl/tcl8.6/tzdata/SystemV/YST9YDT +5 -0
  2895. package/python/tcl/tcl8.6/tzdata/Turkey +5 -0
  2896. package/python/tcl/tcl8.6/tzdata/UCT +5 -0
  2897. package/python/tcl/tcl8.6/tzdata/US/Alaska +5 -0
  2898. package/python/tcl/tcl8.6/tzdata/US/Aleutian +5 -0
  2899. package/python/tcl/tcl8.6/tzdata/US/Arizona +5 -0
  2900. package/python/tcl/tcl8.6/tzdata/US/Central +5 -0
  2901. package/python/tcl/tcl8.6/tzdata/US/East-Indiana +5 -0
  2902. package/python/tcl/tcl8.6/tzdata/US/Eastern +5 -0
  2903. package/python/tcl/tcl8.6/tzdata/US/Hawaii +5 -0
  2904. package/python/tcl/tcl8.6/tzdata/US/Indiana-Starke +5 -0
  2905. package/python/tcl/tcl8.6/tzdata/US/Michigan +5 -0
  2906. package/python/tcl/tcl8.6/tzdata/US/Mountain +5 -0
  2907. package/python/tcl/tcl8.6/tzdata/US/Pacific +5 -0
  2908. package/python/tcl/tcl8.6/tzdata/US/Pacific-New +5 -0
  2909. package/python/tcl/tcl8.6/tzdata/US/Samoa +5 -0
  2910. package/python/tcl/tcl8.6/tzdata/UTC +5 -0
  2911. package/python/tcl/tcl8.6/tzdata/Universal +5 -0
  2912. package/python/tcl/tcl8.6/tzdata/W-SU +5 -0
  2913. package/python/tcl/tcl8.6/tzdata/WET +251 -0
  2914. package/python/tcl/tcl8.6/tzdata/Zulu +5 -0
  2915. package/python/tcl/tcl8.6/word.tcl +154 -0
  2916. package/python/tcl/tcl86t.lib +0 -0
  2917. package/python/tcl/tclConfig.sh +181 -0
  2918. package/python/tcl/tclooConfig.sh +19 -0
  2919. package/python/tcl/tclstub86.lib +0 -0
  2920. package/python/tcl/tix8.4.3/Balloon.tcl +585 -0
  2921. package/python/tcl/tix8.4.3/BtnBox.tcl +120 -0
  2922. package/python/tcl/tix8.4.3/CObjView.tcl +360 -0
  2923. package/python/tcl/tix8.4.3/ChkList.tcl +239 -0
  2924. package/python/tcl/tix8.4.3/ComboBox.tcl +1558 -0
  2925. package/python/tcl/tix8.4.3/Compat.tcl +33 -0
  2926. package/python/tcl/tix8.4.3/Console.tcl +612 -0
  2927. package/python/tcl/tix8.4.3/Control.tcl +482 -0
  2928. package/python/tcl/tix8.4.3/DefSchm.tcl +103 -0
  2929. package/python/tcl/tix8.4.3/DialogS.tcl +175 -0
  2930. package/python/tcl/tix8.4.3/DirBox.tcl +207 -0
  2931. package/python/tcl/tix8.4.3/DirDlg.tcl +95 -0
  2932. package/python/tcl/tix8.4.3/DirList.tcl +272 -0
  2933. package/python/tcl/tix8.4.3/DirTree.tcl +350 -0
  2934. package/python/tcl/tix8.4.3/DragDrop.tcl +166 -0
  2935. package/python/tcl/tix8.4.3/DtlList.tcl +49 -0
  2936. package/python/tcl/tix8.4.3/EFileBox.tcl +436 -0
  2937. package/python/tcl/tix8.4.3/EFileDlg.tcl +65 -0
  2938. package/python/tcl/tix8.4.3/Event.tcl +217 -0
  2939. package/python/tcl/tix8.4.3/FileBox.tcl +568 -0
  2940. package/python/tcl/tix8.4.3/FileCbx.tcl +108 -0
  2941. package/python/tcl/tix8.4.3/FileDlg.tcl +75 -0
  2942. package/python/tcl/tix8.4.3/FileEnt.tcl +270 -0
  2943. package/python/tcl/tix8.4.3/FloatEnt.tcl +132 -0
  2944. package/python/tcl/tix8.4.3/Grid.tcl +1122 -0
  2945. package/python/tcl/tix8.4.3/HList.tcl +917 -0
  2946. package/python/tcl/tix8.4.3/HListDD.tcl +204 -0
  2947. package/python/tcl/tix8.4.3/IconView.tcl +272 -0
  2948. package/python/tcl/tix8.4.3/Init.tcl +232 -0
  2949. package/python/tcl/tix8.4.3/LabEntry.tcl +86 -0
  2950. package/python/tcl/tix8.4.3/LabFrame.tcl +49 -0
  2951. package/python/tcl/tix8.4.3/LabWidg.tcl +157 -0
  2952. package/python/tcl/tix8.4.3/ListNBk.tcl +153 -0
  2953. package/python/tcl/tix8.4.3/Makefile +5 -0
  2954. package/python/tcl/tix8.4.3/Meter.tcl +137 -0
  2955. package/python/tcl/tix8.4.3/MultView.tcl +157 -0
  2956. package/python/tcl/tix8.4.3/NoteBook.tcl +247 -0
  2957. package/python/tcl/tix8.4.3/OldUtil.tcl +108 -0
  2958. package/python/tcl/tix8.4.3/OptMenu.tcl +394 -0
  2959. package/python/tcl/tix8.4.3/PanedWin.tcl +1215 -0
  2960. package/python/tcl/tix8.4.3/PopMenu.tcl +239 -0
  2961. package/python/tcl/tix8.4.3/Primitiv.tcl +428 -0
  2962. package/python/tcl/tix8.4.3/ResizeH.tcl +505 -0
  2963. package/python/tcl/tix8.4.3/SGrid.tcl +243 -0
  2964. package/python/tcl/tix8.4.3/SHList.tcl +140 -0
  2965. package/python/tcl/tix8.4.3/SListBox.tcl +295 -0
  2966. package/python/tcl/tix8.4.3/STList.tcl +93 -0
  2967. package/python/tcl/tix8.4.3/SText.tcl +134 -0
  2968. package/python/tcl/tix8.4.3/SWidget.tcl +465 -0
  2969. package/python/tcl/tix8.4.3/SWindow.tcl +274 -0
  2970. package/python/tcl/tix8.4.3/Select.tcl +300 -0
  2971. package/python/tcl/tix8.4.3/Shell.tcl +47 -0
  2972. package/python/tcl/tix8.4.3/SimpDlg.tcl +47 -0
  2973. package/python/tcl/tix8.4.3/StackWin.tcl +84 -0
  2974. package/python/tcl/tix8.4.3/StatBar.tcl +56 -0
  2975. package/python/tcl/tix8.4.3/StdBBox.tcl +71 -0
  2976. package/python/tcl/tix8.4.3/StdShell.tcl +49 -0
  2977. package/python/tcl/tix8.4.3/TList.tcl +953 -0
  2978. package/python/tcl/tix8.4.3/Tix.tcl +398 -0
  2979. package/python/tcl/tix8.4.3/Tree.tcl +211 -0
  2980. package/python/tcl/tix8.4.3/Utils.tcl +442 -0
  2981. package/python/tcl/tix8.4.3/VResize.tcl +211 -0
  2982. package/python/tcl/tix8.4.3/VStack.tcl +430 -0
  2983. package/python/tcl/tix8.4.3/VTree.tcl +195 -0
  2984. package/python/tcl/tix8.4.3/Variable.tcl +101 -0
  2985. package/python/tcl/tix8.4.3/WInfo.tcl +40 -0
  2986. package/python/tcl/tix8.4.3/bitmaps/act_fold.gif +0 -0
  2987. package/python/tcl/tix8.4.3/bitmaps/act_fold.xbm +5 -0
  2988. package/python/tcl/tix8.4.3/bitmaps/act_fold.xpm +22 -0
  2989. package/python/tcl/tix8.4.3/bitmaps/balarrow.xbm +4 -0
  2990. package/python/tcl/tix8.4.3/bitmaps/cbxarrow.xbm +6 -0
  2991. package/python/tcl/tix8.4.3/bitmaps/ck_def.xbm +6 -0
  2992. package/python/tcl/tix8.4.3/bitmaps/ck_off.xbm +6 -0
  2993. package/python/tcl/tix8.4.3/bitmaps/ck_on.xbm +6 -0
  2994. package/python/tcl/tix8.4.3/bitmaps/cross.xbm +6 -0
  2995. package/python/tcl/tix8.4.3/bitmaps/decr.xbm +4 -0
  2996. package/python/tcl/tix8.4.3/bitmaps/drop.xbm +8 -0
  2997. package/python/tcl/tix8.4.3/bitmaps/file.gif +0 -0
  2998. package/python/tcl/tix8.4.3/bitmaps/file.xbm +5 -0
  2999. package/python/tcl/tix8.4.3/bitmaps/file.xpm +18 -0
  3000. package/python/tcl/tix8.4.3/bitmaps/folder.gif +0 -0
  3001. package/python/tcl/tix8.4.3/bitmaps/folder.xbm +5 -0
  3002. package/python/tcl/tix8.4.3/bitmaps/folder.xpm +21 -0
  3003. package/python/tcl/tix8.4.3/bitmaps/harddisk.xbm +14 -0
  3004. package/python/tcl/tix8.4.3/bitmaps/hourglas.mask +16 -0
  3005. package/python/tcl/tix8.4.3/bitmaps/hourglas.xbm +16 -0
  3006. package/python/tcl/tix8.4.3/bitmaps/incr.xbm +4 -0
  3007. package/python/tcl/tix8.4.3/bitmaps/info.gif +0 -0
  3008. package/python/tcl/tix8.4.3/bitmaps/info.xpm +38 -0
  3009. package/python/tcl/tix8.4.3/bitmaps/maximize.xbm +6 -0
  3010. package/python/tcl/tix8.4.3/bitmaps/minimize.xbm +6 -0
  3011. package/python/tcl/tix8.4.3/bitmaps/minus.gif +0 -0
  3012. package/python/tcl/tix8.4.3/bitmaps/minus.xbm +5 -0
  3013. package/python/tcl/tix8.4.3/bitmaps/minus.xpm +14 -0
  3014. package/python/tcl/tix8.4.3/bitmaps/minusarm.gif +0 -0
  3015. package/python/tcl/tix8.4.3/bitmaps/minusarm.xbm +5 -0
  3016. package/python/tcl/tix8.4.3/bitmaps/minusarm.xpm +15 -0
  3017. package/python/tcl/tix8.4.3/bitmaps/mktransgif.tcl +14 -0
  3018. package/python/tcl/tix8.4.3/bitmaps/network.xbm +14 -0
  3019. package/python/tcl/tix8.4.3/bitmaps/no_entry.gif +0 -0
  3020. package/python/tcl/tix8.4.3/bitmaps/no_entry.xpm +39 -0
  3021. package/python/tcl/tix8.4.3/bitmaps/openfile.xbm +5 -0
  3022. package/python/tcl/tix8.4.3/bitmaps/openfold.gif +0 -0
  3023. package/python/tcl/tix8.4.3/bitmaps/openfold.xbm +5 -0
  3024. package/python/tcl/tix8.4.3/bitmaps/openfold.xpm +21 -0
  3025. package/python/tcl/tix8.4.3/bitmaps/plus.gif +0 -0
  3026. package/python/tcl/tix8.4.3/bitmaps/plus.xbm +5 -0
  3027. package/python/tcl/tix8.4.3/bitmaps/plus.xpm +14 -0
  3028. package/python/tcl/tix8.4.3/bitmaps/plusarm.gif +0 -0
  3029. package/python/tcl/tix8.4.3/bitmaps/plusarm.xbm +5 -0
  3030. package/python/tcl/tix8.4.3/bitmaps/plusarm.xpm +15 -0
  3031. package/python/tcl/tix8.4.3/bitmaps/resize1.xbm +8 -0
  3032. package/python/tcl/tix8.4.3/bitmaps/resize2.xbm +8 -0
  3033. package/python/tcl/tix8.4.3/bitmaps/restore.xbm +6 -0
  3034. package/python/tcl/tix8.4.3/bitmaps/srcfile.gif +0 -0
  3035. package/python/tcl/tix8.4.3/bitmaps/srcfile.xbm +5 -0
  3036. package/python/tcl/tix8.4.3/bitmaps/srcfile.xpm +18 -0
  3037. package/python/tcl/tix8.4.3/bitmaps/system.xbm +6 -0
  3038. package/python/tcl/tix8.4.3/bitmaps/textfile.gif +0 -0
  3039. package/python/tcl/tix8.4.3/bitmaps/textfile.xbm +5 -0
  3040. package/python/tcl/tix8.4.3/bitmaps/textfile.xpm +18 -0
  3041. package/python/tcl/tix8.4.3/bitmaps/tick.xbm +6 -0
  3042. package/python/tcl/tix8.4.3/bitmaps/warning.gif +0 -0
  3043. package/python/tcl/tix8.4.3/bitmaps/warning.xpm +38 -0
  3044. package/python/tcl/tix8.4.3/demos/MkChoose.tcl +280 -0
  3045. package/python/tcl/tix8.4.3/demos/MkDirLis.tcl +69 -0
  3046. package/python/tcl/tix8.4.3/demos/MkSample.tcl +270 -0
  3047. package/python/tcl/tix8.4.3/demos/MkScroll.tcl +160 -0
  3048. package/python/tcl/tix8.4.3/demos/bitmaps/about.xpm +50 -0
  3049. package/python/tcl/tix8.4.3/demos/bitmaps/bold.xbm +6 -0
  3050. package/python/tcl/tix8.4.3/demos/bitmaps/capital.xbm +6 -0
  3051. package/python/tcl/tix8.4.3/demos/bitmaps/centerj.xbm +6 -0
  3052. package/python/tcl/tix8.4.3/demos/bitmaps/code.xpm +22 -0
  3053. package/python/tcl/tix8.4.3/demos/bitmaps/combobox.xbm +14 -0
  3054. package/python/tcl/tix8.4.3/demos/bitmaps/combobox.xpm +49 -0
  3055. package/python/tcl/tix8.4.3/demos/bitmaps/drivea.xbm +14 -0
  3056. package/python/tcl/tix8.4.3/demos/bitmaps/drivea.xpm +43 -0
  3057. package/python/tcl/tix8.4.3/demos/bitmaps/exit.xpm +48 -0
  3058. package/python/tcl/tix8.4.3/demos/bitmaps/filebox.xbm +14 -0
  3059. package/python/tcl/tix8.4.3/demos/bitmaps/filebox.xpm +49 -0
  3060. package/python/tcl/tix8.4.3/demos/bitmaps/harddisk.xbm +14 -0
  3061. package/python/tcl/tix8.4.3/demos/bitmaps/harddisk.xpm +43 -0
  3062. package/python/tcl/tix8.4.3/demos/bitmaps/italic.xbm +6 -0
  3063. package/python/tcl/tix8.4.3/demos/bitmaps/justify.xbm +6 -0
  3064. package/python/tcl/tix8.4.3/demos/bitmaps/leftj.xbm +6 -0
  3065. package/python/tcl/tix8.4.3/demos/bitmaps/netw.xbm +14 -0
  3066. package/python/tcl/tix8.4.3/demos/bitmaps/netw.xpm +45 -0
  3067. package/python/tcl/tix8.4.3/demos/bitmaps/network.xbm +14 -0
  3068. package/python/tcl/tix8.4.3/demos/bitmaps/network.xpm +45 -0
  3069. package/python/tcl/tix8.4.3/demos/bitmaps/optmenu.xpm +48 -0
  3070. package/python/tcl/tix8.4.3/demos/bitmaps/rightj.xbm +6 -0
  3071. package/python/tcl/tix8.4.3/demos/bitmaps/select.xpm +52 -0
  3072. package/python/tcl/tix8.4.3/demos/bitmaps/tix.gif +0 -0
  3073. package/python/tcl/tix8.4.3/demos/bitmaps/underlin.xbm +6 -0
  3074. package/python/tcl/tix8.4.3/demos/samples/AllSampl.tcl +201 -0
  3075. package/python/tcl/tix8.4.3/demos/samples/ArrowBtn.tcl +187 -0
  3076. package/python/tcl/tix8.4.3/demos/samples/Balloon.tcl +48 -0
  3077. package/python/tcl/tix8.4.3/demos/samples/BtnBox.tcl +57 -0
  3078. package/python/tcl/tix8.4.3/demos/samples/CObjView.tcl +80 -0
  3079. package/python/tcl/tix8.4.3/demos/samples/ChkList.tcl +179 -0
  3080. package/python/tcl/tix8.4.3/demos/samples/CmpImg.tcl +64 -0
  3081. package/python/tcl/tix8.4.3/demos/samples/CmpImg1.tcl +182 -0
  3082. package/python/tcl/tix8.4.3/demos/samples/CmpImg2.tcl +136 -0
  3083. package/python/tcl/tix8.4.3/demos/samples/CmpImg3.tcl +90 -0
  3084. package/python/tcl/tix8.4.3/demos/samples/CmpImg4.tcl +125 -0
  3085. package/python/tcl/tix8.4.3/demos/samples/ComboBox.tcl +119 -0
  3086. package/python/tcl/tix8.4.3/demos/samples/Control.tcl +133 -0
  3087. package/python/tcl/tix8.4.3/demos/samples/DirDlg.tcl +90 -0
  3088. package/python/tcl/tix8.4.3/demos/samples/DirList.tcl +91 -0
  3089. package/python/tcl/tix8.4.3/demos/samples/DirTree.tcl +92 -0
  3090. package/python/tcl/tix8.4.3/demos/samples/DragDrop.tcl +50 -0
  3091. package/python/tcl/tix8.4.3/demos/samples/DynTree.tcl +149 -0
  3092. package/python/tcl/tix8.4.3/demos/samples/EFileDlg.tcl +104 -0
  3093. package/python/tcl/tix8.4.3/demos/samples/EditGrid.tcl +281 -0
  3094. package/python/tcl/tix8.4.3/demos/samples/FileDlg.tcl +98 -0
  3095. package/python/tcl/tix8.4.3/demos/samples/FileEnt.tcl +81 -0
  3096. package/python/tcl/tix8.4.3/demos/samples/HList1.tcl +159 -0
  3097. package/python/tcl/tix8.4.3/demos/samples/LabEntry.tcl +94 -0
  3098. package/python/tcl/tix8.4.3/demos/samples/LabFrame.tcl +85 -0
  3099. package/python/tcl/tix8.4.3/demos/samples/ListNBK.tcl +86 -0
  3100. package/python/tcl/tix8.4.3/demos/samples/Meter.tcl +77 -0
  3101. package/python/tcl/tix8.4.3/demos/samples/NoteBook.tcl +102 -0
  3102. package/python/tcl/tix8.4.3/demos/samples/OptMenu.tcl +103 -0
  3103. package/python/tcl/tix8.4.3/demos/samples/PanedWin.tcl +112 -0
  3104. package/python/tcl/tix8.4.3/demos/samples/PopMenu.tcl +73 -0
  3105. package/python/tcl/tix8.4.3/demos/samples/SGrid0.tcl +135 -0
  3106. package/python/tcl/tix8.4.3/demos/samples/SGrid1.tcl +215 -0
  3107. package/python/tcl/tix8.4.3/demos/samples/SHList.tcl +111 -0
  3108. package/python/tcl/tix8.4.3/demos/samples/SHList2.tcl +159 -0
  3109. package/python/tcl/tix8.4.3/demos/samples/SListBox.tcl +84 -0
  3110. package/python/tcl/tix8.4.3/demos/samples/STList1.tcl +57 -0
  3111. package/python/tcl/tix8.4.3/demos/samples/STList2.tcl +85 -0
  3112. package/python/tcl/tix8.4.3/demos/samples/STList3.tcl +112 -0
  3113. package/python/tcl/tix8.4.3/demos/samples/SText.tcl +75 -0
  3114. package/python/tcl/tix8.4.3/demos/samples/SWindow.tcl +89 -0
  3115. package/python/tcl/tix8.4.3/demos/samples/Sample.tcl +36 -0
  3116. package/python/tcl/tix8.4.3/demos/samples/Select.tcl +114 -0
  3117. package/python/tcl/tix8.4.3/demos/samples/StdBBox.tcl +65 -0
  3118. package/python/tcl/tix8.4.3/demos/samples/Tree.tcl +91 -0
  3119. package/python/tcl/tix8.4.3/demos/samples/Xpm.tcl +89 -0
  3120. package/python/tcl/tix8.4.3/demos/samples/Xpm1.tcl +108 -0
  3121. package/python/tcl/tix8.4.3/demos/tclIndex +55 -0
  3122. package/python/tcl/tix8.4.3/demos/tixwidgets.tcl +344 -0
  3123. package/python/tcl/tix8.4.3/demos/widget +450 -0
  3124. package/python/tcl/tix8.4.3/fs.tcl +170 -0
  3125. package/python/tcl/tix8.4.3/pkgIndex.tcl +2 -0
  3126. package/python/tcl/tix8.4.3/pref/10Point.fs +23 -0
  3127. package/python/tcl/tix8.4.3/pref/10Point.fsc +44 -0
  3128. package/python/tcl/tix8.4.3/pref/12Point.fs +23 -0
  3129. package/python/tcl/tix8.4.3/pref/12Point.fsc +44 -0
  3130. package/python/tcl/tix8.4.3/pref/14Point.fs +22 -0
  3131. package/python/tcl/tix8.4.3/pref/14Point.fsc +50 -0
  3132. package/python/tcl/tix8.4.3/pref/Bisque.cs +35 -0
  3133. package/python/tcl/tix8.4.3/pref/Bisque.csc +338 -0
  3134. package/python/tcl/tix8.4.3/pref/Blue.cs +35 -0
  3135. package/python/tcl/tix8.4.3/pref/Blue.csc +338 -0
  3136. package/python/tcl/tix8.4.3/pref/Gray.cs +36 -0
  3137. package/python/tcl/tix8.4.3/pref/Gray.csc +339 -0
  3138. package/python/tcl/tix8.4.3/pref/Makefile +48 -0
  3139. package/python/tcl/tix8.4.3/pref/Old12Pt.fs +14 -0
  3140. package/python/tcl/tix8.4.3/pref/Old14Pt.fs +13 -0
  3141. package/python/tcl/tix8.4.3/pref/SGIGray.cs +38 -0
  3142. package/python/tcl/tix8.4.3/pref/SGIGray.csc +339 -0
  3143. package/python/tcl/tix8.4.3/pref/TK.cs +35 -0
  3144. package/python/tcl/tix8.4.3/pref/TK.csc +72 -0
  3145. package/python/tcl/tix8.4.3/pref/TK.fs +16 -0
  3146. package/python/tcl/tix8.4.3/pref/TK.fsc +19 -0
  3147. package/python/tcl/tix8.4.3/pref/TixGray.cs +36 -0
  3148. package/python/tcl/tix8.4.3/pref/TixGray.csc +339 -0
  3149. package/python/tcl/tix8.4.3/pref/TkWin.cs +68 -0
  3150. package/python/tcl/tix8.4.3/pref/TkWin.csc +333 -0
  3151. package/python/tcl/tix8.4.3/pref/TkWin.fs +16 -0
  3152. package/python/tcl/tix8.4.3/pref/TkWin.fsc +34 -0
  3153. package/python/tcl/tix8.4.3/pref/WmDefault.cs +45 -0
  3154. package/python/tcl/tix8.4.3/pref/WmDefault.csc +316 -0
  3155. package/python/tcl/tix8.4.3/pref/WmDefault.fs +23 -0
  3156. package/python/tcl/tix8.4.3/pref/WmDefault.fsc +57 -0
  3157. package/python/tcl/tix8.4.3/pref/WmDefault.py +96 -0
  3158. package/python/tcl/tix8.4.3/pref/WmDefault.tcl +1053 -0
  3159. package/python/tcl/tix8.4.3/pref/WmDefault.txt +142 -0
  3160. package/python/tcl/tix8.4.3/pref/pkgIndex.tcl +9 -0
  3161. package/python/tcl/tix8.4.3/pref/tixmkpref +381 -0
  3162. package/python/tcl/tix8.4.3/tix84.dll +0 -0
  3163. package/python/tcl/tix8.4.3/tix84.lib +0 -0
  3164. package/python/tcl/tk8.6/bgerror.tcl +272 -0
  3165. package/python/tcl/tk8.6/button.tcl +782 -0
  3166. package/python/tcl/tk8.6/choosedir.tcl +308 -0
  3167. package/python/tcl/tk8.6/clrpick.tcl +695 -0
  3168. package/python/tcl/tk8.6/comdlg.tcl +322 -0
  3169. package/python/tcl/tk8.6/console.tcl +1150 -0
  3170. package/python/tcl/tk8.6/demos/README +44 -0
  3171. package/python/tcl/tk8.6/demos/anilabel.tcl +160 -0
  3172. package/python/tcl/tk8.6/demos/aniwave.tcl +104 -0
  3173. package/python/tcl/tk8.6/demos/arrow.tcl +241 -0
  3174. package/python/tcl/tk8.6/demos/bind.tcl +78 -0
  3175. package/python/tcl/tk8.6/demos/bitmap.tcl +52 -0
  3176. package/python/tcl/tk8.6/demos/browse +66 -0
  3177. package/python/tcl/tk8.6/demos/button.tcl +47 -0
  3178. package/python/tcl/tk8.6/demos/check.tcl +71 -0
  3179. package/python/tcl/tk8.6/demos/clrpick.tcl +54 -0
  3180. package/python/tcl/tk8.6/demos/colors.tcl +99 -0
  3181. package/python/tcl/tk8.6/demos/combo.tcl +61 -0
  3182. package/python/tcl/tk8.6/demos/cscroll.tcl +172 -0
  3183. package/python/tcl/tk8.6/demos/ctext.tcl +176 -0
  3184. package/python/tcl/tk8.6/demos/dialog1.tcl +25 -0
  3185. package/python/tcl/tk8.6/demos/dialog2.tcl +18 -0
  3186. package/python/tcl/tk8.6/demos/en.msg +97 -0
  3187. package/python/tcl/tk8.6/demos/entry1.tcl +34 -0
  3188. package/python/tcl/tk8.6/demos/entry2.tcl +46 -0
  3189. package/python/tcl/tk8.6/demos/entry3.tcl +185 -0
  3190. package/python/tcl/tk8.6/demos/filebox.tcl +81 -0
  3191. package/python/tcl/tk8.6/demos/floor.tcl +1371 -0
  3192. package/python/tcl/tk8.6/demos/fontchoose.tcl +67 -0
  3193. package/python/tcl/tk8.6/demos/form.tcl +38 -0
  3194. package/python/tcl/tk8.6/demos/goldberg.tcl +1833 -0
  3195. package/python/tcl/tk8.6/demos/hello +22 -0
  3196. package/python/tcl/tk8.6/demos/hscale.tcl +45 -0
  3197. package/python/tcl/tk8.6/demos/icon.tcl +51 -0
  3198. package/python/tcl/tk8.6/demos/image1.tcl +35 -0
  3199. package/python/tcl/tk8.6/demos/image2.tcl +108 -0
  3200. package/python/tcl/tk8.6/demos/images/earth.gif +0 -0
  3201. package/python/tcl/tk8.6/demos/images/earthmenu.png +0 -0
  3202. package/python/tcl/tk8.6/demos/images/earthris.gif +0 -0
  3203. package/python/tcl/tk8.6/demos/images/flagdown.xbm +27 -0
  3204. package/python/tcl/tk8.6/demos/images/flagup.xbm +27 -0
  3205. package/python/tcl/tk8.6/demos/images/gray25.xbm +6 -0
  3206. package/python/tcl/tk8.6/demos/images/letters.xbm +27 -0
  3207. package/python/tcl/tk8.6/demos/images/noletter.xbm +27 -0
  3208. package/python/tcl/tk8.6/demos/images/ouster.png +0 -0
  3209. package/python/tcl/tk8.6/demos/images/pattern.xbm +6 -0
  3210. package/python/tcl/tk8.6/demos/images/tcllogo.gif +0 -0
  3211. package/python/tcl/tk8.6/demos/images/teapot.ppm +31 -0
  3212. package/python/tcl/tk8.6/demos/items.tcl +302 -0
  3213. package/python/tcl/tk8.6/demos/ixset +328 -0
  3214. package/python/tcl/tk8.6/demos/knightstour.tcl +268 -0
  3215. package/python/tcl/tk8.6/demos/label.tcl +40 -0
  3216. package/python/tcl/tk8.6/demos/labelframe.tcl +76 -0
  3217. package/python/tcl/tk8.6/demos/license.terms +40 -0
  3218. package/python/tcl/tk8.6/demos/mclist.tcl +119 -0
  3219. package/python/tcl/tk8.6/demos/menu.tcl +180 -0
  3220. package/python/tcl/tk8.6/demos/menubu.tcl +90 -0
  3221. package/python/tcl/tk8.6/demos/msgbox.tcl +62 -0
  3222. package/python/tcl/tk8.6/demos/nl.msg +125 -0
  3223. package/python/tcl/tk8.6/demos/paned1.tcl +32 -0
  3224. package/python/tcl/tk8.6/demos/paned2.tcl +74 -0
  3225. package/python/tcl/tk8.6/demos/pendulum.tcl +197 -0
  3226. package/python/tcl/tk8.6/demos/plot.tcl +97 -0
  3227. package/python/tcl/tk8.6/demos/puzzle.tcl +82 -0
  3228. package/python/tcl/tk8.6/demos/radio.tcl +66 -0
  3229. package/python/tcl/tk8.6/demos/rmt +210 -0
  3230. package/python/tcl/tk8.6/demos/rolodex +204 -0
  3231. package/python/tcl/tk8.6/demos/ruler.tcl +175 -0
  3232. package/python/tcl/tk8.6/demos/sayings.tcl +44 -0
  3233. package/python/tcl/tk8.6/demos/search.tcl +139 -0
  3234. package/python/tcl/tk8.6/demos/spin.tcl +53 -0
  3235. package/python/tcl/tk8.6/demos/square +60 -0
  3236. package/python/tcl/tk8.6/demos/states.tcl +54 -0
  3237. package/python/tcl/tk8.6/demos/style.tcl +155 -0
  3238. package/python/tcl/tk8.6/demos/tclIndex +67 -0
  3239. package/python/tcl/tk8.6/demos/tcolor +358 -0
  3240. package/python/tcl/tk8.6/demos/text.tcl +113 -0
  3241. package/python/tcl/tk8.6/demos/textpeer.tcl +62 -0
  3242. package/python/tcl/tk8.6/demos/timer +47 -0
  3243. package/python/tcl/tk8.6/demos/toolbar.tcl +92 -0
  3244. package/python/tcl/tk8.6/demos/tree.tcl +89 -0
  3245. package/python/tcl/tk8.6/demos/ttkbut.tcl +84 -0
  3246. package/python/tcl/tk8.6/demos/ttkmenu.tcl +53 -0
  3247. package/python/tcl/tk8.6/demos/ttknote.tcl +57 -0
  3248. package/python/tcl/tk8.6/demos/ttkpane.tcl +112 -0
  3249. package/python/tcl/tk8.6/demos/ttkprogress.tcl +46 -0
  3250. package/python/tcl/tk8.6/demos/ttkscale.tcl +39 -0
  3251. package/python/tcl/tk8.6/demos/twind.tcl +351 -0
  3252. package/python/tcl/tk8.6/demos/unicodeout.tcl +145 -0
  3253. package/python/tcl/tk8.6/demos/vscale.tcl +46 -0
  3254. package/python/tcl/tk8.6/demos/widget +734 -0
  3255. package/python/tcl/tk8.6/dialog.tcl +175 -0
  3256. package/python/tcl/tk8.6/entry.tcl +686 -0
  3257. package/python/tcl/tk8.6/focus.tcl +178 -0
  3258. package/python/tcl/tk8.6/fontchooser.tcl +456 -0
  3259. package/python/tcl/tk8.6/iconlist.tcl +717 -0
  3260. package/python/tcl/tk8.6/icons.tcl +153 -0
  3261. package/python/tcl/tk8.6/images/README +7 -0
  3262. package/python/tcl/tk8.6/images/logo.eps +2091 -0
  3263. package/python/tcl/tk8.6/images/logo100.gif +0 -0
  3264. package/python/tcl/tk8.6/images/logo64.gif +0 -0
  3265. package/python/tcl/tk8.6/images/logoLarge.gif +0 -0
  3266. package/python/tcl/tk8.6/images/logoMed.gif +0 -0
  3267. package/python/tcl/tk8.6/images/pwrdLogo.eps +1897 -0
  3268. package/python/tcl/tk8.6/images/pwrdLogo100.gif +0 -0
  3269. package/python/tcl/tk8.6/images/pwrdLogo150.gif +0 -0
  3270. package/python/tcl/tk8.6/images/pwrdLogo175.gif +0 -0
  3271. package/python/tcl/tk8.6/images/pwrdLogo200.gif +0 -0
  3272. package/python/tcl/tk8.6/images/pwrdLogo75.gif +0 -0
  3273. package/python/tcl/tk8.6/images/tai-ku.gif +0 -0
  3274. package/python/tcl/tk8.6/license.terms +40 -0
  3275. package/python/tcl/tk8.6/listbox.tcl +560 -0
  3276. package/python/tcl/tk8.6/megawidget.tcl +297 -0
  3277. package/python/tcl/tk8.6/menu.tcl +1377 -0
  3278. package/python/tcl/tk8.6/mkpsenc.tcl +1488 -0
  3279. package/python/tcl/tk8.6/msgbox.tcl +427 -0
  3280. package/python/tcl/tk8.6/msgs/cs.msg +77 -0
  3281. package/python/tcl/tk8.6/msgs/da.msg +78 -0
  3282. package/python/tcl/tk8.6/msgs/de.msg +91 -0
  3283. package/python/tcl/tk8.6/msgs/el.msg +86 -0
  3284. package/python/tcl/tk8.6/msgs/en.msg +91 -0
  3285. package/python/tcl/tk8.6/msgs/en_gb.msg +3 -0
  3286. package/python/tcl/tk8.6/msgs/eo.msg +75 -0
  3287. package/python/tcl/tk8.6/msgs/es.msg +76 -0
  3288. package/python/tcl/tk8.6/msgs/fr.msg +72 -0
  3289. package/python/tcl/tk8.6/msgs/hu.msg +78 -0
  3290. package/python/tcl/tk8.6/msgs/it.msg +73 -0
  3291. package/python/tcl/tk8.6/msgs/nl.msg +91 -0
  3292. package/python/tcl/tk8.6/msgs/pl.msg +91 -0
  3293. package/python/tcl/tk8.6/msgs/pt.msg +74 -0
  3294. package/python/tcl/tk8.6/msgs/ru.msg +75 -0
  3295. package/python/tcl/tk8.6/msgs/sv.msg +76 -0
  3296. package/python/tcl/tk8.6/obsolete.tcl +178 -0
  3297. package/python/tcl/tk8.6/optMenu.tcl +43 -0
  3298. package/python/tcl/tk8.6/palette.tcl +244 -0
  3299. package/python/tcl/tk8.6/panedwindow.tcl +194 -0
  3300. package/python/tcl/tk8.6/pkgIndex.tcl +7 -0
  3301. package/python/tcl/tk8.6/safetk.tcl +262 -0
  3302. package/python/tcl/tk8.6/scale.tcl +290 -0
  3303. package/python/tcl/tk8.6/scrlbar.tcl +456 -0
  3304. package/python/tcl/tk8.6/spinbox.tcl +593 -0
  3305. package/python/tcl/tk8.6/tclIndex +253 -0
  3306. package/python/tcl/tk8.6/tearoff.tcl +184 -0
  3307. package/python/tcl/tk8.6/text.tcl +1237 -0
  3308. package/python/tcl/tk8.6/tk.tcl +712 -0
  3309. package/python/tcl/tk8.6/tkfbox.tcl +1240 -0
  3310. package/python/tcl/tk8.6/ttk/altTheme.tcl +109 -0
  3311. package/python/tcl/tk8.6/ttk/aquaTheme.tcl +119 -0
  3312. package/python/tcl/tk8.6/ttk/button.tcl +83 -0
  3313. package/python/tcl/tk8.6/ttk/clamTheme.tcl +147 -0
  3314. package/python/tcl/tk8.6/ttk/classicTheme.tcl +115 -0
  3315. package/python/tcl/tk8.6/ttk/combobox.tcl +448 -0
  3316. package/python/tcl/tk8.6/ttk/cursors.tcl +208 -0
  3317. package/python/tcl/tk8.6/ttk/defaults.tcl +143 -0
  3318. package/python/tcl/tk8.6/ttk/entry.tcl +632 -0
  3319. package/python/tcl/tk8.6/ttk/fonts.tcl +157 -0
  3320. package/python/tcl/tk8.6/ttk/menubutton.tcl +241 -0
  3321. package/python/tcl/tk8.6/ttk/notebook.tcl +199 -0
  3322. package/python/tcl/tk8.6/ttk/panedwindow.tcl +91 -0
  3323. package/python/tcl/tk8.6/ttk/progress.tcl +49 -0
  3324. package/python/tcl/tk8.6/ttk/scale.tcl +94 -0
  3325. package/python/tcl/tk8.6/ttk/scrollbar.tcl +126 -0
  3326. package/python/tcl/tk8.6/ttk/sizegrip.tcl +102 -0
  3327. package/python/tcl/tk8.6/ttk/spinbox.tcl +192 -0
  3328. package/python/tcl/tk8.6/ttk/treeview.tcl +383 -0
  3329. package/python/tcl/tk8.6/ttk/ttk.tcl +176 -0
  3330. package/python/tcl/tk8.6/ttk/utils.tcl +337 -0
  3331. package/python/tcl/tk8.6/ttk/vistaTheme.tcl +229 -0
  3332. package/python/tcl/tk8.6/ttk/winTheme.tcl +84 -0
  3333. package/python/tcl/tk8.6/ttk/xpTheme.tcl +67 -0
  3334. package/python/tcl/tk8.6/unsupported.tcl +269 -0
  3335. package/python/tcl/tk8.6/xmfbox.tcl +989 -0
  3336. package/python/tcl/tk86t.lib +0 -0
  3337. package/python/tcl/tkstub86.lib +0 -0
  3338. package/python/vcruntime140.dll +0 -0
  3339. package/python/vcruntime140_1.dll +0 -0
  3340. package/runtime-manifest.json +7 -0
@@ -0,0 +1,4546 @@
1
+ #----------------------------------------------------------------------
2
+ #
3
+ # clock.tcl --
4
+ #
5
+ # This file implements the portions of the [clock] ensemble that are
6
+ # coded in Tcl. Refer to the users' manual to see the description of
7
+ # the [clock] command and its subcommands.
8
+ #
9
+ #
10
+ #----------------------------------------------------------------------
11
+ #
12
+ # Copyright (c) 2004-2007 Kevin B. Kenny
13
+ # See the file "license.terms" for information on usage and redistribution
14
+ # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
15
+ #
16
+ #----------------------------------------------------------------------
17
+
18
+ # We must have message catalogs that support the root locale, and we need
19
+ # access to the Registry on Windows systems.
20
+
21
+ uplevel \#0 {
22
+ package require msgcat 1.6
23
+ if { $::tcl_platform(platform) eq {windows} } {
24
+ if { [catch { package require registry 1.1 }] } {
25
+ namespace eval ::tcl::clock [list variable NoRegistry {}]
26
+ }
27
+ }
28
+ }
29
+
30
+ # Put the library directory into the namespace for the ensemble so that the
31
+ # library code can find message catalogs and time zone definition files.
32
+
33
+ namespace eval ::tcl::clock \
34
+ [list variable LibDir [file dirname [info script]]]
35
+
36
+ #----------------------------------------------------------------------
37
+ #
38
+ # clock --
39
+ #
40
+ # Manipulate times.
41
+ #
42
+ # The 'clock' command manipulates time. Refer to the user documentation for
43
+ # the available subcommands and what they do.
44
+ #
45
+ #----------------------------------------------------------------------
46
+
47
+ namespace eval ::tcl::clock {
48
+
49
+ # Export the subcommands
50
+
51
+ namespace export format
52
+ namespace export clicks
53
+ namespace export microseconds
54
+ namespace export milliseconds
55
+ namespace export scan
56
+ namespace export seconds
57
+ namespace export add
58
+
59
+ # Import the message catalog commands that we use.
60
+
61
+ namespace import ::msgcat::mcload
62
+ namespace import ::msgcat::mclocale
63
+ namespace import ::msgcat::mc
64
+ namespace import ::msgcat::mcpackagelocale
65
+
66
+ }
67
+
68
+ #----------------------------------------------------------------------
69
+ #
70
+ # ::tcl::clock::Initialize --
71
+ #
72
+ # Finish initializing the 'clock' subsystem
73
+ #
74
+ # Results:
75
+ # None.
76
+ #
77
+ # Side effects:
78
+ # Namespace variable in the 'clock' subsystem are initialized.
79
+ #
80
+ # The '::tcl::clock::Initialize' procedure initializes the namespace variables
81
+ # and root locale message catalog for the 'clock' subsystem. It is broken
82
+ # into a procedure rather than simply evaluated as a script so that it will be
83
+ # able to use local variables, avoiding the dangers of 'creative writing' as
84
+ # in Bug 1185933.
85
+ #
86
+ #----------------------------------------------------------------------
87
+
88
+ proc ::tcl::clock::Initialize {} {
89
+
90
+ rename ::tcl::clock::Initialize {}
91
+
92
+ variable LibDir
93
+
94
+ # Define the Greenwich time zone
95
+
96
+ proc InitTZData {} {
97
+ variable TZData
98
+ array unset TZData
99
+ set TZData(:Etc/GMT) {
100
+ {-9223372036854775808 0 0 GMT}
101
+ }
102
+ set TZData(:GMT) $TZData(:Etc/GMT)
103
+ set TZData(:Etc/UTC) {
104
+ {-9223372036854775808 0 0 UTC}
105
+ }
106
+ set TZData(:UTC) $TZData(:Etc/UTC)
107
+ set TZData(:localtime) {}
108
+ }
109
+ InitTZData
110
+
111
+ mcpackagelocale set {}
112
+ ::msgcat::mcpackageconfig set mcfolder [file join $LibDir msgs]
113
+ ::msgcat::mcpackageconfig set unknowncmd ""
114
+ ::msgcat::mcpackageconfig set changecmd ChangeCurrentLocale
115
+
116
+ # Define the message catalog for the root locale.
117
+
118
+ ::msgcat::mcmset {} {
119
+ AM {am}
120
+ BCE {B.C.E.}
121
+ CE {C.E.}
122
+ DATE_FORMAT {%m/%d/%Y}
123
+ DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
124
+ DAYS_OF_WEEK_ABBREV {
125
+ Sun Mon Tue Wed Thu Fri Sat
126
+ }
127
+ DAYS_OF_WEEK_FULL {
128
+ Sunday Monday Tuesday Wednesday Thursday Friday Saturday
129
+ }
130
+ GREGORIAN_CHANGE_DATE 2299161
131
+ LOCALE_DATE_FORMAT {%m/%d/%Y}
132
+ LOCALE_DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
133
+ LOCALE_ERAS {}
134
+ LOCALE_NUMERALS {
135
+ 00 01 02 03 04 05 06 07 08 09
136
+ 10 11 12 13 14 15 16 17 18 19
137
+ 20 21 22 23 24 25 26 27 28 29
138
+ 30 31 32 33 34 35 36 37 38 39
139
+ 40 41 42 43 44 45 46 47 48 49
140
+ 50 51 52 53 54 55 56 57 58 59
141
+ 60 61 62 63 64 65 66 67 68 69
142
+ 70 71 72 73 74 75 76 77 78 79
143
+ 80 81 82 83 84 85 86 87 88 89
144
+ 90 91 92 93 94 95 96 97 98 99
145
+ }
146
+ LOCALE_TIME_FORMAT {%H:%M:%S}
147
+ LOCALE_YEAR_FORMAT {%EC%Ey}
148
+ MONTHS_ABBREV {
149
+ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
150
+ }
151
+ MONTHS_FULL {
152
+ January February March
153
+ April May June
154
+ July August September
155
+ October November December
156
+ }
157
+ PM {pm}
158
+ TIME_FORMAT {%H:%M:%S}
159
+ TIME_FORMAT_12 {%I:%M:%S %P}
160
+ TIME_FORMAT_24 {%H:%M}
161
+ TIME_FORMAT_24_SECS {%H:%M:%S}
162
+ }
163
+
164
+ # Define a few Gregorian change dates for other locales. In most cases
165
+ # the change date follows a language, because a nation's colonies changed
166
+ # at the same time as the nation itself. In many cases, different
167
+ # national boundaries existed; the dominating rule is to follow the
168
+ # nation's capital.
169
+
170
+ # Italy, Spain, Portugal, Poland
171
+
172
+ ::msgcat::mcset it GREGORIAN_CHANGE_DATE 2299161
173
+ ::msgcat::mcset es GREGORIAN_CHANGE_DATE 2299161
174
+ ::msgcat::mcset pt GREGORIAN_CHANGE_DATE 2299161
175
+ ::msgcat::mcset pl GREGORIAN_CHANGE_DATE 2299161
176
+
177
+ # France, Austria
178
+
179
+ ::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227
180
+
181
+ # For Belgium, we follow Southern Netherlands; Liege Diocese changed
182
+ # several weeks later.
183
+
184
+ ::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238
185
+ ::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238
186
+
187
+ # Austria
188
+
189
+ ::msgcat::mcset de_AT GREGORIAN_CHANGE_DATE 2299527
190
+
191
+ # Hungary
192
+
193
+ ::msgcat::mcset hu GREGORIAN_CHANGE_DATE 2301004
194
+
195
+ # Germany, Norway, Denmark (Catholic Germany changed earlier)
196
+
197
+ ::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032
198
+ ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
199
+ ::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032
200
+ ::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032
201
+ ::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032
202
+
203
+ # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at
204
+ # various times)
205
+
206
+ ::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165
207
+
208
+ # Protestant Switzerland (Catholic cantons changed earlier)
209
+
210
+ ::msgcat::mcset fr_CH GREGORIAN_CHANGE_DATE 2361342
211
+ ::msgcat::mcset it_CH GREGORIAN_CHANGE_DATE 2361342
212
+ ::msgcat::mcset de_CH GREGORIAN_CHANGE_DATE 2361342
213
+
214
+ # English speaking countries
215
+
216
+ ::msgcat::mcset en GREGORIAN_CHANGE_DATE 2361222
217
+
218
+ # Sweden (had several changes onto and off of the Gregorian calendar)
219
+
220
+ ::msgcat::mcset sv GREGORIAN_CHANGE_DATE 2361390
221
+
222
+ # Russia
223
+
224
+ ::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
225
+
226
+ # Romania (Transylvania changed earler - perhaps de_RO should show the
227
+ # earlier date?)
228
+
229
+ ::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
230
+
231
+ # Greece
232
+
233
+ ::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480
234
+
235
+ #------------------------------------------------------------------
236
+ #
237
+ # CONSTANTS
238
+ #
239
+ #------------------------------------------------------------------
240
+
241
+ # Paths at which binary time zone data for the Olson libraries are known
242
+ # to reside on various operating systems
243
+
244
+ variable ZoneinfoPaths {}
245
+ foreach path {
246
+ /usr/share/zoneinfo
247
+ /usr/share/lib/zoneinfo
248
+ /usr/lib/zoneinfo
249
+ /usr/local/etc/zoneinfo
250
+ } {
251
+ if { [file isdirectory $path] } {
252
+ lappend ZoneinfoPaths $path
253
+ }
254
+ }
255
+
256
+ # Define the directories for time zone data and message catalogs.
257
+
258
+ variable DataDir [file join $LibDir tzdata]
259
+
260
+ # Number of days in the months, in common years and leap years.
261
+
262
+ variable DaysInRomanMonthInCommonYear \
263
+ { 31 28 31 30 31 30 31 31 30 31 30 31 }
264
+ variable DaysInRomanMonthInLeapYear \
265
+ { 31 29 31 30 31 30 31 31 30 31 30 31 }
266
+ variable DaysInPriorMonthsInCommonYear [list 0]
267
+ variable DaysInPriorMonthsInLeapYear [list 0]
268
+ set i 0
269
+ foreach j $DaysInRomanMonthInCommonYear {
270
+ lappend DaysInPriorMonthsInCommonYear [incr i $j]
271
+ }
272
+ set i 0
273
+ foreach j $DaysInRomanMonthInLeapYear {
274
+ lappend DaysInPriorMonthsInLeapYear [incr i $j]
275
+ }
276
+
277
+ # Another epoch (Hi, Jeff!)
278
+
279
+ variable Roddenberry 1946
280
+
281
+ # Integer ranges
282
+
283
+ variable MINWIDE -9223372036854775808
284
+ variable MAXWIDE 9223372036854775807
285
+
286
+ # Day before Leap Day
287
+
288
+ variable FEB_28 58
289
+
290
+ # Translation table to map Windows TZI onto cities, so that the Olson
291
+ # rules can apply. In some cases the mapping is ambiguous, so it's wise
292
+ # to specify $::env(TCL_TZ) rather than simply depending on the system
293
+ # time zone.
294
+
295
+ # The keys are long lists of values obtained from the time zone
296
+ # information in the Registry. In order, the list elements are:
297
+ # Bias StandardBias DaylightBias
298
+ # StandardDate.wYear StandardDate.wMonth StandardDate.wDayOfWeek
299
+ # StandardDate.wDay StandardDate.wHour StandardDate.wMinute
300
+ # StandardDate.wSecond StandardDate.wMilliseconds
301
+ # DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek
302
+ # DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute
303
+ # DaylightDate.wSecond DaylightDate.wMilliseconds
304
+ # The values are the names of time zones where those rules apply. There
305
+ # is considerable ambiguity in certain zones; an attempt has been made to
306
+ # make a reasonable guess, but this table needs to be taken with a grain
307
+ # of salt.
308
+
309
+ variable WinZoneInfo [dict create {*}{
310
+ {-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein
311
+ {-39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Midway
312
+ {-36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Honolulu
313
+ {-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
314
+ {-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
315
+ {-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
316
+ {-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
317
+ {-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
318
+ {-25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Phoenix
319
+ {-21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Regina
320
+ {-21600 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Chicago
321
+ {-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
322
+ {-18000 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/New_York
323
+ {-18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Indianapolis
324
+ {-14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Caracas
325
+ {-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
326
+ :America/Santiago
327
+ {-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
328
+ {-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
329
+ {-12600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/St_Johns
330
+ {-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
331
+ {-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
332
+ {-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
333
+ {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
334
+ {-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
335
+ {-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
336
+ {-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
337
+ {-3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Atlantic/Cape_Verde
338
+ {0 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :UTC
339
+ {0 0 3600 0 10 0 5 2 0 0 0 0 3 0 5 1 0 0 0} :Europe/London
340
+ {3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Kinshasa
341
+ {3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :CET
342
+ {7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Harare
343
+ {7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
344
+ :Africa/Cairo
345
+ {7200 0 3600 0 10 0 5 4 0 0 0 0 3 0 5 3 0 0 0} :Europe/Helsinki
346
+ {7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0} :Asia/Jerusalem
347
+ {7200 0 3600 0 9 0 5 1 0 0 0 0 3 0 5 0 0 0 0} :Europe/Bucharest
348
+ {7200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Athens
349
+ {7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0} :Asia/Amman
350
+ {7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
351
+ :Asia/Beirut
352
+ {7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0} :Africa/Windhoek
353
+ {10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Riyadh
354
+ {10800 0 3600 0 10 0 1 4 0 0 0 0 4 0 1 3 0 0 0} :Asia/Baghdad
355
+ {10800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Moscow
356
+ {12600 0 3600 0 9 2 4 2 0 0 0 0 3 0 1 2 0 0 0} :Asia/Tehran
357
+ {14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0} :Asia/Baku
358
+ {14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Muscat
359
+ {14400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Tbilisi
360
+ {16200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Kabul
361
+ {18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Karachi
362
+ {18000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yekaterinburg
363
+ {19800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Calcutta
364
+ {20700 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Katmandu
365
+ {21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Dhaka
366
+ {21600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Novosibirsk
367
+ {23400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Rangoon
368
+ {25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Bangkok
369
+ {25200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Krasnoyarsk
370
+ {28800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Chongqing
371
+ {28800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Irkutsk
372
+ {32400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Tokyo
373
+ {32400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yakutsk
374
+ {34200 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Adelaide
375
+ {34200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Darwin
376
+ {36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Brisbane
377
+ {36000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Vladivostok
378
+ {36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 1 2 0 0 0} :Australia/Hobart
379
+ {36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Sydney
380
+ {39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Noumea
381
+ {43200 0 3600 0 3 0 3 3 0 0 0 0 10 0 1 2 0 0 0} :Pacific/Auckland
382
+ {43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Fiji
383
+ {46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Tongatapu
384
+ }]
385
+
386
+ # Groups of fields that specify the date, priorities, and code bursts that
387
+ # determine Julian Day Number given those groups. The code in [clock
388
+ # scan] will choose the highest priority (lowest numbered) set of fields
389
+ # that determines the date.
390
+
391
+ variable DateParseActions {
392
+
393
+ { seconds } 0 {}
394
+
395
+ { julianDay } 1 {}
396
+
397
+ { era century yearOfCentury month dayOfMonth } 2 {
398
+ dict set date year [expr { 100 * [dict get $date century]
399
+ + [dict get $date yearOfCentury] }]
400
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
401
+ $changeover]
402
+ }
403
+ { era century yearOfCentury dayOfYear } 2 {
404
+ dict set date year [expr { 100 * [dict get $date century]
405
+ + [dict get $date yearOfCentury] }]
406
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
407
+ $changeover]
408
+ }
409
+
410
+ { century yearOfCentury month dayOfMonth } 3 {
411
+ dict set date era CE
412
+ dict set date year [expr { 100 * [dict get $date century]
413
+ + [dict get $date yearOfCentury] }]
414
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
415
+ $changeover]
416
+ }
417
+ { century yearOfCentury dayOfYear } 3 {
418
+ dict set date era CE
419
+ dict set date year [expr { 100 * [dict get $date century]
420
+ + [dict get $date yearOfCentury] }]
421
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
422
+ $changeover]
423
+ }
424
+ { iso8601Century iso8601YearOfCentury iso8601Week dayOfWeek } 3 {
425
+ dict set date era CE
426
+ dict set date iso8601Year \
427
+ [expr { 100 * [dict get $date iso8601Century]
428
+ + [dict get $date iso8601YearOfCentury] }]
429
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
430
+ $changeover]
431
+ }
432
+
433
+ { yearOfCentury month dayOfMonth } 4 {
434
+ set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
435
+ dict set date era CE
436
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
437
+ $changeover]
438
+ }
439
+ { yearOfCentury dayOfYear } 4 {
440
+ set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
441
+ dict set date era CE
442
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
443
+ $changeover]
444
+ }
445
+ { iso8601YearOfCentury iso8601Week dayOfWeek } 4 {
446
+ set date [InterpretTwoDigitYear \
447
+ $date[set date {}] $baseTime \
448
+ iso8601YearOfCentury iso8601Year]
449
+ dict set date era CE
450
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
451
+ $changeover]
452
+ }
453
+
454
+ { month dayOfMonth } 5 {
455
+ set date [AssignBaseYear $date[set date {}] \
456
+ $baseTime $timeZone $changeover]
457
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
458
+ $changeover]
459
+ }
460
+ { dayOfYear } 5 {
461
+ set date [AssignBaseYear $date[set date {}] \
462
+ $baseTime $timeZone $changeover]
463
+ set date [GetJulianDayFromEraYearDay $date[set date {}] \
464
+ $changeover]
465
+ }
466
+ { iso8601Week dayOfWeek } 5 {
467
+ set date [AssignBaseIso8601Year $date[set date {}] \
468
+ $baseTime $timeZone $changeover]
469
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
470
+ $changeover]
471
+ }
472
+
473
+ { dayOfMonth } 6 {
474
+ set date [AssignBaseMonth $date[set date {}] \
475
+ $baseTime $timeZone $changeover]
476
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
477
+ $changeover]
478
+ }
479
+
480
+ { dayOfWeek } 7 {
481
+ set date [AssignBaseWeek $date[set date {}] \
482
+ $baseTime $timeZone $changeover]
483
+ set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
484
+ $changeover]
485
+ }
486
+
487
+ {} 8 {
488
+ set date [AssignBaseJulianDay $date[set date {}] \
489
+ $baseTime $timeZone $changeover]
490
+ }
491
+ }
492
+
493
+ # Groups of fields that specify time of day, priorities, and code that
494
+ # processes them
495
+
496
+ variable TimeParseActions {
497
+
498
+ seconds 1 {}
499
+
500
+ { hourAMPM minute second amPmIndicator } 2 {
501
+ dict set date secondOfDay [InterpretHMSP $date]
502
+ }
503
+ { hour minute second } 2 {
504
+ dict set date secondOfDay [InterpretHMS $date]
505
+ }
506
+
507
+ { hourAMPM minute amPmIndicator } 3 {
508
+ dict set date second 0
509
+ dict set date secondOfDay [InterpretHMSP $date]
510
+ }
511
+ { hour minute } 3 {
512
+ dict set date second 0
513
+ dict set date secondOfDay [InterpretHMS $date]
514
+ }
515
+
516
+ { hourAMPM amPmIndicator } 4 {
517
+ dict set date minute 0
518
+ dict set date second 0
519
+ dict set date secondOfDay [InterpretHMSP $date]
520
+ }
521
+ { hour } 4 {
522
+ dict set date minute 0
523
+ dict set date second 0
524
+ dict set date secondOfDay [InterpretHMS $date]
525
+ }
526
+
527
+ { } 5 {
528
+ dict set date secondOfDay 0
529
+ }
530
+ }
531
+
532
+ # Legacy time zones, used primarily for parsing RFC822 dates.
533
+
534
+ variable LegacyTimeZone [dict create \
535
+ gmt +0000 \
536
+ ut +0000 \
537
+ utc +0000 \
538
+ bst +0100 \
539
+ wet +0000 \
540
+ wat -0100 \
541
+ at -0200 \
542
+ nft -0330 \
543
+ nst -0330 \
544
+ ndt -0230 \
545
+ ast -0400 \
546
+ adt -0300 \
547
+ est -0500 \
548
+ edt -0400 \
549
+ cst -0600 \
550
+ cdt -0500 \
551
+ mst -0700 \
552
+ mdt -0600 \
553
+ pst -0800 \
554
+ pdt -0700 \
555
+ yst -0900 \
556
+ ydt -0800 \
557
+ hst -1000 \
558
+ hdt -0900 \
559
+ cat -1000 \
560
+ ahst -1000 \
561
+ nt -1100 \
562
+ idlw -1200 \
563
+ cet +0100 \
564
+ cest +0200 \
565
+ met +0100 \
566
+ mewt +0100 \
567
+ mest +0200 \
568
+ swt +0100 \
569
+ sst +0200 \
570
+ fwt +0100 \
571
+ fst +0200 \
572
+ eet +0200 \
573
+ eest +0300 \
574
+ bt +0300 \
575
+ it +0330 \
576
+ zp4 +0400 \
577
+ zp5 +0500 \
578
+ ist +0530 \
579
+ zp6 +0600 \
580
+ wast +0700 \
581
+ wadt +0800 \
582
+ jt +0730 \
583
+ cct +0800 \
584
+ jst +0900 \
585
+ kst +0900 \
586
+ cast +0930 \
587
+ jdt +1000 \
588
+ kdt +1000 \
589
+ cadt +1030 \
590
+ east +1000 \
591
+ eadt +1030 \
592
+ gst +1000 \
593
+ nzt +1200 \
594
+ nzst +1200 \
595
+ nzdt +1300 \
596
+ idle +1200 \
597
+ a +0100 \
598
+ b +0200 \
599
+ c +0300 \
600
+ d +0400 \
601
+ e +0500 \
602
+ f +0600 \
603
+ g +0700 \
604
+ h +0800 \
605
+ i +0900 \
606
+ k +1000 \
607
+ l +1100 \
608
+ m +1200 \
609
+ n -0100 \
610
+ o -0200 \
611
+ p -0300 \
612
+ q -0400 \
613
+ r -0500 \
614
+ s -0600 \
615
+ t -0700 \
616
+ u -0800 \
617
+ v -0900 \
618
+ w -1000 \
619
+ x -1100 \
620
+ y -1200 \
621
+ z +0000 \
622
+ ]
623
+
624
+ # Caches
625
+
626
+ variable LocaleNumeralCache {}; # Dictionary whose keys are locale
627
+ # names and whose values are pairs
628
+ # comprising regexes matching numerals
629
+ # in the given locales and dictionaries
630
+ # mapping the numerals to their numeric
631
+ # values.
632
+ # variable CachedSystemTimeZone; # If 'CachedSystemTimeZone' exists,
633
+ # it contains the value of the
634
+ # system time zone, as determined from
635
+ # the environment.
636
+ variable TimeZoneBad {}; # Dictionary whose keys are time zone
637
+ # names and whose values are 1 if
638
+ # the time zone is unknown and 0
639
+ # if it is known.
640
+ variable TZData; # Array whose keys are time zone names
641
+ # and whose values are lists of quads
642
+ # comprising start time, UTC offset,
643
+ # Daylight Saving Time indicator, and
644
+ # time zone abbreviation.
645
+ variable FormatProc; # Array mapping format group
646
+ # and locale to the name of a procedure
647
+ # that renders the given format
648
+ }
649
+ ::tcl::clock::Initialize
650
+
651
+ #----------------------------------------------------------------------
652
+ #
653
+ # clock format --
654
+ #
655
+ # Formats a count of seconds since the Posix Epoch as a time of day.
656
+ #
657
+ # The 'clock format' command formats times of day for output. Refer to the
658
+ # user documentation to see what it does.
659
+ #
660
+ #----------------------------------------------------------------------
661
+
662
+ proc ::tcl::clock::format { args } {
663
+
664
+ variable FormatProc
665
+ variable TZData
666
+
667
+ lassign [ParseFormatArgs {*}$args] format locale timezone
668
+ set locale [string tolower $locale]
669
+ set clockval [lindex $args 0]
670
+
671
+ # Get the data for time changes in the given zone
672
+
673
+ if {$timezone eq ""} {
674
+ set timezone [GetSystemTimeZone]
675
+ }
676
+ if {![info exists TZData($timezone)]} {
677
+ if {[catch {SetupTimeZone $timezone} retval opts]} {
678
+ dict unset opts -errorinfo
679
+ return -options $opts $retval
680
+ }
681
+ }
682
+
683
+ # Build a procedure to format the result. Cache the built procedure's name
684
+ # in the 'FormatProc' array to avoid losing its internal representation,
685
+ # which contains the name resolution.
686
+
687
+ set procName formatproc'$format'$locale
688
+ set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
689
+ if {[info exists FormatProc($procName)]} {
690
+ set procName $FormatProc($procName)
691
+ } else {
692
+ set FormatProc($procName) \
693
+ [ParseClockFormatFormat $procName $format $locale]
694
+ }
695
+
696
+ return [$procName $clockval $timezone]
697
+
698
+ }
699
+
700
+ #----------------------------------------------------------------------
701
+ #
702
+ # ParseClockFormatFormat --
703
+ #
704
+ # Builds and caches a procedure that formats a time value.
705
+ #
706
+ # Parameters:
707
+ # format -- Format string to use
708
+ # locale -- Locale in which the format string is to be interpreted
709
+ #
710
+ # Results:
711
+ # Returns the name of the newly-built procedure.
712
+ #
713
+ #----------------------------------------------------------------------
714
+
715
+ proc ::tcl::clock::ParseClockFormatFormat {procName format locale} {
716
+
717
+ if {[namespace which $procName] ne {}} {
718
+ return $procName
719
+ }
720
+
721
+ # Map away the locale-dependent composite format groups
722
+
723
+ EnterLocale $locale
724
+
725
+ # Change locale if a fresh locale has been given on the command line.
726
+
727
+ try {
728
+ return [ParseClockFormatFormat2 $format $locale $procName]
729
+ } trap CLOCK {result opts} {
730
+ dict unset opts -errorinfo
731
+ return -options $opts $result
732
+ }
733
+ }
734
+
735
+ proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
736
+ set didLocaleEra 0
737
+ set didLocaleNumerals 0
738
+ set preFormatCode \
739
+ [string map [list @GREGORIAN_CHANGE_DATE@ \
740
+ [mc GREGORIAN_CHANGE_DATE]] \
741
+ {
742
+ variable TZData
743
+ set date [GetDateFields $clockval \
744
+ $TZData($timezone) \
745
+ @GREGORIAN_CHANGE_DATE@]
746
+ }]
747
+ set formatString {}
748
+ set substituents {}
749
+ set state {}
750
+
751
+ set format [LocalizeFormat $locale $format]
752
+
753
+ foreach char [split $format {}] {
754
+ switch -exact -- $state {
755
+ {} {
756
+ if { [string equal % $char] } {
757
+ set state percent
758
+ } else {
759
+ append formatString $char
760
+ }
761
+ }
762
+ percent { # Character following a '%' character
763
+ set state {}
764
+ switch -exact -- $char {
765
+ % { # A literal character, '%'
766
+ append formatString %%
767
+ }
768
+ a { # Day of week, abbreviated
769
+ append formatString %s
770
+ append substituents \
771
+ [string map \
772
+ [list @DAYS_OF_WEEK_ABBREV@ \
773
+ [list [mc DAYS_OF_WEEK_ABBREV]]] \
774
+ { [lindex @DAYS_OF_WEEK_ABBREV@ \
775
+ [expr {[dict get $date dayOfWeek] \
776
+ % 7}]]}]
777
+ }
778
+ A { # Day of week, spelt out.
779
+ append formatString %s
780
+ append substituents \
781
+ [string map \
782
+ [list @DAYS_OF_WEEK_FULL@ \
783
+ [list [mc DAYS_OF_WEEK_FULL]]] \
784
+ { [lindex @DAYS_OF_WEEK_FULL@ \
785
+ [expr {[dict get $date dayOfWeek] \
786
+ % 7}]]}]
787
+ }
788
+ b - h { # Name of month, abbreviated.
789
+ append formatString %s
790
+ append substituents \
791
+ [string map \
792
+ [list @MONTHS_ABBREV@ \
793
+ [list [mc MONTHS_ABBREV]]] \
794
+ { [lindex @MONTHS_ABBREV@ \
795
+ [expr {[dict get $date month]-1}]]}]
796
+ }
797
+ B { # Name of month, spelt out
798
+ append formatString %s
799
+ append substituents \
800
+ [string map \
801
+ [list @MONTHS_FULL@ \
802
+ [list [mc MONTHS_FULL]]] \
803
+ { [lindex @MONTHS_FULL@ \
804
+ [expr {[dict get $date month]-1}]]}]
805
+ }
806
+ C { # Century number
807
+ append formatString %02d
808
+ append substituents \
809
+ { [expr {[dict get $date year] / 100}]}
810
+ }
811
+ d { # Day of month, with leading zero
812
+ append formatString %02d
813
+ append substituents { [dict get $date dayOfMonth]}
814
+ }
815
+ e { # Day of month, without leading zero
816
+ append formatString %2d
817
+ append substituents { [dict get $date dayOfMonth]}
818
+ }
819
+ E { # Format group in a locale-dependent
820
+ # alternative era
821
+ set state percentE
822
+ if {!$didLocaleEra} {
823
+ append preFormatCode \
824
+ [string map \
825
+ [list @LOCALE_ERAS@ \
826
+ [list [mc LOCALE_ERAS]]] \
827
+ {
828
+ set date [GetLocaleEra \
829
+ $date[set date {}] \
830
+ @LOCALE_ERAS@]}] \n
831
+ set didLocaleEra 1
832
+ }
833
+ if {!$didLocaleNumerals} {
834
+ append preFormatCode \
835
+ [list set localeNumerals \
836
+ [mc LOCALE_NUMERALS]] \n
837
+ set didLocaleNumerals 1
838
+ }
839
+ }
840
+ g { # Two-digit year relative to ISO8601
841
+ # week number
842
+ append formatString %02d
843
+ append substituents \
844
+ { [expr { [dict get $date iso8601Year] % 100 }]}
845
+ }
846
+ G { # Four-digit year relative to ISO8601
847
+ # week number
848
+ append formatString %02d
849
+ append substituents { [dict get $date iso8601Year]}
850
+ }
851
+ H { # Hour in the 24-hour day, leading zero
852
+ append formatString %02d
853
+ append substituents \
854
+ { [expr { [dict get $date localSeconds] \
855
+ / 3600 % 24}]}
856
+ }
857
+ I { # Hour AM/PM, with leading zero
858
+ append formatString %02d
859
+ append substituents \
860
+ { [expr { ( ( ( [dict get $date localSeconds] \
861
+ % 86400 ) \
862
+ + 86400 \
863
+ - 3600 ) \
864
+ / 3600 ) \
865
+ % 12 + 1 }] }
866
+ }
867
+ j { # Day of year (001-366)
868
+ append formatString %03d
869
+ append substituents { [dict get $date dayOfYear]}
870
+ }
871
+ J { # Julian Day Number
872
+ append formatString %07ld
873
+ append substituents { [dict get $date julianDay]}
874
+ }
875
+ k { # Hour (0-23), no leading zero
876
+ append formatString %2d
877
+ append substituents \
878
+ { [expr { [dict get $date localSeconds]
879
+ / 3600
880
+ % 24 }]}
881
+ }
882
+ l { # Hour (12-11), no leading zero
883
+ append formatString %2d
884
+ append substituents \
885
+ { [expr { ( ( ( [dict get $date localSeconds]
886
+ % 86400 )
887
+ + 86400
888
+ - 3600 )
889
+ / 3600 )
890
+ % 12 + 1 }]}
891
+ }
892
+ m { # Month number, leading zero
893
+ append formatString %02d
894
+ append substituents { [dict get $date month]}
895
+ }
896
+ M { # Minute of the hour, leading zero
897
+ append formatString %02d
898
+ append substituents \
899
+ { [expr { [dict get $date localSeconds]
900
+ / 60
901
+ % 60 }]}
902
+ }
903
+ n { # A literal newline
904
+ append formatString \n
905
+ }
906
+ N { # Month number, no leading zero
907
+ append formatString %2d
908
+ append substituents { [dict get $date month]}
909
+ }
910
+ O { # A format group in the locale's
911
+ # alternative numerals
912
+ set state percentO
913
+ if {!$didLocaleNumerals} {
914
+ append preFormatCode \
915
+ [list set localeNumerals \
916
+ [mc LOCALE_NUMERALS]] \n
917
+ set didLocaleNumerals 1
918
+ }
919
+ }
920
+ p { # Localized 'AM' or 'PM' indicator
921
+ # converted to uppercase
922
+ append formatString %s
923
+ append preFormatCode \
924
+ [list set AM [string toupper [mc AM]]] \n \
925
+ [list set PM [string toupper [mc PM]]] \n
926
+ append substituents \
927
+ { [expr {(([dict get $date localSeconds]
928
+ % 86400) < 43200) ?
929
+ $AM : $PM}]}
930
+ }
931
+ P { # Localized 'AM' or 'PM' indicator
932
+ append formatString %s
933
+ append preFormatCode \
934
+ [list set am [mc AM]] \n \
935
+ [list set pm [mc PM]] \n
936
+ append substituents \
937
+ { [expr {(([dict get $date localSeconds]
938
+ % 86400) < 43200) ?
939
+ $am : $pm}]}
940
+
941
+ }
942
+ Q { # Hi, Jeff!
943
+ append formatString %s
944
+ append substituents { [FormatStarDate $date]}
945
+ }
946
+ s { # Seconds from the Posix Epoch
947
+ append formatString %s
948
+ append substituents { [dict get $date seconds]}
949
+ }
950
+ S { # Second of the minute, with
951
+ # leading zero
952
+ append formatString %02d
953
+ append substituents \
954
+ { [expr { [dict get $date localSeconds]
955
+ % 60 }]}
956
+ }
957
+ t { # A literal tab character
958
+ append formatString \t
959
+ }
960
+ u { # Day of the week (1-Monday, 7-Sunday)
961
+ append formatString %1d
962
+ append substituents { [dict get $date dayOfWeek]}
963
+ }
964
+ U { # Week of the year (00-53). The
965
+ # first Sunday of the year is the
966
+ # first day of week 01
967
+ append formatString %02d
968
+ append preFormatCode {
969
+ set dow [dict get $date dayOfWeek]
970
+ if { $dow == 7 } {
971
+ set dow 0
972
+ }
973
+ incr dow
974
+ set UweekNumber \
975
+ [expr { ( [dict get $date dayOfYear]
976
+ - $dow + 7 )
977
+ / 7 }]
978
+ }
979
+ append substituents { $UweekNumber}
980
+ }
981
+ V { # The ISO8601 week number
982
+ append formatString %02d
983
+ append substituents { [dict get $date iso8601Week]}
984
+ }
985
+ w { # Day of the week (0-Sunday,
986
+ # 6-Saturday)
987
+ append formatString %1d
988
+ append substituents \
989
+ { [expr { [dict get $date dayOfWeek] % 7 }]}
990
+ }
991
+ W { # Week of the year (00-53). The first
992
+ # Monday of the year is the first day
993
+ # of week 01.
994
+ append preFormatCode {
995
+ set WweekNumber \
996
+ [expr { ( [dict get $date dayOfYear]
997
+ - [dict get $date dayOfWeek]
998
+ + 7 )
999
+ / 7 }]
1000
+ }
1001
+ append formatString %02d
1002
+ append substituents { $WweekNumber}
1003
+ }
1004
+ y { # The two-digit year of the century
1005
+ append formatString %02d
1006
+ append substituents \
1007
+ { [expr { [dict get $date year] % 100 }]}
1008
+ }
1009
+ Y { # The four-digit year
1010
+ append formatString %04d
1011
+ append substituents { [dict get $date year]}
1012
+ }
1013
+ z { # The time zone as hours and minutes
1014
+ # east (+) or west (-) of Greenwich
1015
+ append formatString %s
1016
+ append substituents { [FormatNumericTimeZone \
1017
+ [dict get $date tzOffset]]}
1018
+ }
1019
+ Z { # The name of the time zone
1020
+ append formatString %s
1021
+ append substituents { [dict get $date tzName]}
1022
+ }
1023
+ % { # A literal percent character
1024
+ append formatString %%
1025
+ }
1026
+ default { # An unknown escape sequence
1027
+ append formatString %% $char
1028
+ }
1029
+ }
1030
+ }
1031
+ percentE { # Character following %E
1032
+ set state {}
1033
+ switch -exact -- $char {
1034
+ E {
1035
+ append formatString %s
1036
+ append substituents { } \
1037
+ [string map \
1038
+ [list @BCE@ [list [mc BCE]] \
1039
+ @CE@ [list [mc CE]]] \
1040
+ {[dict get {BCE @BCE@ CE @CE@} \
1041
+ [dict get $date era]]}]
1042
+ }
1043
+ C { # Locale-dependent era
1044
+ append formatString %s
1045
+ append substituents { [dict get $date localeEra]}
1046
+ }
1047
+ y { # Locale-dependent year of the era
1048
+ append preFormatCode {
1049
+ set y [dict get $date localeYear]
1050
+ if { $y >= 0 && $y < 100 } {
1051
+ set Eyear [lindex $localeNumerals $y]
1052
+ } else {
1053
+ set Eyear $y
1054
+ }
1055
+ }
1056
+ append formatString %s
1057
+ append substituents { $Eyear}
1058
+ }
1059
+ default { # Unknown %E format group
1060
+ append formatString %%E $char
1061
+ }
1062
+ }
1063
+ }
1064
+ percentO { # Character following %O
1065
+ set state {}
1066
+ switch -exact -- $char {
1067
+ d - e { # Day of the month in alternative
1068
+ # numerals
1069
+ append formatString %s
1070
+ append substituents \
1071
+ { [lindex $localeNumerals \
1072
+ [dict get $date dayOfMonth]]}
1073
+ }
1074
+ H - k { # Hour of the day in alternative
1075
+ # numerals
1076
+ append formatString %s
1077
+ append substituents \
1078
+ { [lindex $localeNumerals \
1079
+ [expr { [dict get $date localSeconds]
1080
+ / 3600
1081
+ % 24 }]]}
1082
+ }
1083
+ I - l { # Hour (12-11) AM/PM in alternative
1084
+ # numerals
1085
+ append formatString %s
1086
+ append substituents \
1087
+ { [lindex $localeNumerals \
1088
+ [expr { ( ( ( [dict get $date localSeconds]
1089
+ % 86400 )
1090
+ + 86400
1091
+ - 3600 )
1092
+ / 3600 )
1093
+ % 12 + 1 }]]}
1094
+ }
1095
+ m { # Month number in alternative numerals
1096
+ append formatString %s
1097
+ append substituents \
1098
+ { [lindex $localeNumerals [dict get $date month]]}
1099
+ }
1100
+ M { # Minute of the hour in alternative
1101
+ # numerals
1102
+ append formatString %s
1103
+ append substituents \
1104
+ { [lindex $localeNumerals \
1105
+ [expr { [dict get $date localSeconds]
1106
+ / 60
1107
+ % 60 }]]}
1108
+ }
1109
+ S { # Second of the minute in alternative
1110
+ # numerals
1111
+ append formatString %s
1112
+ append substituents \
1113
+ { [lindex $localeNumerals \
1114
+ [expr { [dict get $date localSeconds]
1115
+ % 60 }]]}
1116
+ }
1117
+ u { # Day of the week (Monday=1,Sunday=7)
1118
+ # in alternative numerals
1119
+ append formatString %s
1120
+ append substituents \
1121
+ { [lindex $localeNumerals \
1122
+ [dict get $date dayOfWeek]]}
1123
+ }
1124
+ w { # Day of the week (Sunday=0,Saturday=6)
1125
+ # in alternative numerals
1126
+ append formatString %s
1127
+ append substituents \
1128
+ { [lindex $localeNumerals \
1129
+ [expr { [dict get $date dayOfWeek] % 7 }]]}
1130
+ }
1131
+ y { # Year of the century in alternative
1132
+ # numerals
1133
+ append formatString %s
1134
+ append substituents \
1135
+ { [lindex $localeNumerals \
1136
+ [expr { [dict get $date year] % 100 }]]}
1137
+ }
1138
+ default { # Unknown format group
1139
+ append formatString %%O $char
1140
+ }
1141
+ }
1142
+ }
1143
+ }
1144
+ }
1145
+
1146
+ # Clean up any improperly terminated groups
1147
+
1148
+ switch -exact -- $state {
1149
+ percent {
1150
+ append formatString %%
1151
+ }
1152
+ percentE {
1153
+ append retval %%E
1154
+ }
1155
+ percentO {
1156
+ append retval %%O
1157
+ }
1158
+ }
1159
+
1160
+ proc $procName {clockval timezone} "
1161
+ $preFormatCode
1162
+ return \[::format [list $formatString] $substituents\]
1163
+ "
1164
+
1165
+ # puts [list $procName [info args $procName] [info body $procName]]
1166
+
1167
+ return $procName
1168
+ }
1169
+
1170
+ #----------------------------------------------------------------------
1171
+ #
1172
+ # clock scan --
1173
+ #
1174
+ # Inputs a count of seconds since the Posix Epoch as a time of day.
1175
+ #
1176
+ # The 'clock format' command scans times of day on input. Refer to the user
1177
+ # documentation to see what it does.
1178
+ #
1179
+ #----------------------------------------------------------------------
1180
+
1181
+ proc ::tcl::clock::scan { args } {
1182
+
1183
+ set format {}
1184
+
1185
+ # Check the count of args
1186
+
1187
+ if { [llength $args] < 1 || [llength $args] % 2 != 1 } {
1188
+ set cmdName "clock scan"
1189
+ return -code error \
1190
+ -errorcode [list CLOCK wrongNumArgs] \
1191
+ "wrong \# args: should be\
1192
+ \"$cmdName string\
1193
+ ?-base seconds?\
1194
+ ?-format string? ?-gmt boolean?\
1195
+ ?-locale LOCALE? ?-timezone ZONE?\""
1196
+ }
1197
+
1198
+ # Set defaults
1199
+
1200
+ set base [clock seconds]
1201
+ set string [lindex $args 0]
1202
+ set format {}
1203
+ set gmt 0
1204
+ set locale c
1205
+ set timezone [GetSystemTimeZone]
1206
+
1207
+ # Pick up command line options.
1208
+
1209
+ foreach { flag value } [lreplace $args 0 0] {
1210
+ set saw($flag) {}
1211
+ switch -exact -- $flag {
1212
+ -b - -ba - -bas - -base {
1213
+ set base $value
1214
+ }
1215
+ -f - -fo - -for - -form - -forma - -format {
1216
+ set format $value
1217
+ }
1218
+ -g - -gm - -gmt {
1219
+ set gmt $value
1220
+ }
1221
+ -l - -lo - -loc - -loca - -local - -locale {
1222
+ set locale [string tolower $value]
1223
+ }
1224
+ -t - -ti - -tim - -time - -timez - -timezo - -timezon - -timezone {
1225
+ set timezone $value
1226
+ }
1227
+ default {
1228
+ return -code error \
1229
+ -errorcode [list CLOCK badOption $flag] \
1230
+ "bad option \"$flag\",\
1231
+ must be -base, -format, -gmt, -locale or -timezone"
1232
+ }
1233
+ }
1234
+ }
1235
+
1236
+ # Check options for validity
1237
+
1238
+ if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
1239
+ return -code error \
1240
+ -errorcode [list CLOCK gmtWithTimezone] \
1241
+ "cannot use -gmt and -timezone in same call"
1242
+ }
1243
+ if { [catch { expr { wide($base) } } result] } {
1244
+ return -code error "expected integer but got \"$base\""
1245
+ }
1246
+ if { ![string is boolean -strict $gmt] } {
1247
+ return -code error "expected boolean value but got \"$gmt\""
1248
+ } elseif { $gmt } {
1249
+ set timezone :GMT
1250
+ }
1251
+
1252
+ if { ![info exists saw(-format)] } {
1253
+ # Perhaps someday we'll localize the legacy code. Right now, it's not
1254
+ # localized.
1255
+ if { [info exists saw(-locale)] } {
1256
+ return -code error \
1257
+ -errorcode [list CLOCK flagWithLegacyFormat] \
1258
+ "legacy \[clock scan\] does not support -locale"
1259
+
1260
+ }
1261
+ return [FreeScan $string $base $timezone $locale]
1262
+ }
1263
+
1264
+ # Change locale if a fresh locale has been given on the command line.
1265
+
1266
+ EnterLocale $locale
1267
+
1268
+ try {
1269
+ # Map away the locale-dependent composite format groups
1270
+
1271
+ set scanner [ParseClockScanFormat $format $locale]
1272
+ return [$scanner $string $base $timezone]
1273
+ } trap CLOCK {result opts} {
1274
+ # Conceal location of generation of expected errors
1275
+ dict unset opts -errorinfo
1276
+ return -options $opts $result
1277
+ }
1278
+ }
1279
+
1280
+ #----------------------------------------------------------------------
1281
+ #
1282
+ # FreeScan --
1283
+ #
1284
+ # Scans a time in free format
1285
+ #
1286
+ # Parameters:
1287
+ # string - String containing the time to scan
1288
+ # base - Base time, expressed in seconds from the Epoch
1289
+ # timezone - Default time zone in which the time will be expressed
1290
+ # locale - (Unused) Name of the locale where the time will be scanned.
1291
+ #
1292
+ # Results:
1293
+ # Returns the date and time extracted from the string in seconds from
1294
+ # the epoch
1295
+ #
1296
+ #----------------------------------------------------------------------
1297
+
1298
+ proc ::tcl::clock::FreeScan { string base timezone locale } {
1299
+
1300
+ variable TZData
1301
+
1302
+ # Get the data for time changes in the given zone
1303
+
1304
+ try {
1305
+ SetupTimeZone $timezone
1306
+ } on error {retval opts} {
1307
+ dict unset opts -errorinfo
1308
+ return -options $opts $retval
1309
+ }
1310
+
1311
+ # Extract year, month and day from the base time for the parser to use as
1312
+ # defaults
1313
+
1314
+ set date [GetDateFields $base $TZData($timezone) 2361222]
1315
+ dict set date secondOfDay [expr {
1316
+ [dict get $date localSeconds] % 86400
1317
+ }]
1318
+
1319
+ # Parse the date. The parser will return a list comprising date, time,
1320
+ # time zone, relative month/day/seconds, relative weekday, ordinal month.
1321
+
1322
+ try {
1323
+ set scanned [Oldscan $string \
1324
+ [dict get $date year] \
1325
+ [dict get $date month] \
1326
+ [dict get $date dayOfMonth]]
1327
+ lassign $scanned \
1328
+ parseDate parseTime parseZone parseRel \
1329
+ parseWeekday parseOrdinalMonth
1330
+ } on error message {
1331
+ return -code error \
1332
+ "unable to convert date-time string \"$string\": $message"
1333
+ }
1334
+
1335
+ # If the caller supplied a date in the string, update the 'date' dict with
1336
+ # the value. If the caller didn't specify a time with the date, default to
1337
+ # midnight.
1338
+
1339
+ if { [llength $parseDate] > 0 } {
1340
+ lassign $parseDate y m d
1341
+ if { $y < 100 } {
1342
+ if { $y >= 39 } {
1343
+ incr y 1900
1344
+ } else {
1345
+ incr y 2000
1346
+ }
1347
+ }
1348
+ dict set date era CE
1349
+ dict set date year $y
1350
+ dict set date month $m
1351
+ dict set date dayOfMonth $d
1352
+ if { $parseTime eq {} } {
1353
+ set parseTime 0
1354
+ }
1355
+ }
1356
+
1357
+ # If the caller supplied a time zone in the string, it comes back as a
1358
+ # two-element list; the first element is the number of minutes east of
1359
+ # Greenwich, and the second is a Daylight Saving Time indicator (1 == yes,
1360
+ # 0 == no, -1 == unknown). We make it into a time zone indicator of
1361
+ # +-hhmm.
1362
+
1363
+ if { [llength $parseZone] > 0 } {
1364
+ lassign $parseZone minEast dstFlag
1365
+ set timezone [FormatNumericTimeZone \
1366
+ [expr { 60 * $minEast + 3600 * $dstFlag }]]
1367
+ SetupTimeZone $timezone
1368
+ }
1369
+ dict set date tzName $timezone
1370
+
1371
+ # Assemble date, time, zone into seconds-from-epoch
1372
+
1373
+ set date [GetJulianDayFromEraYearMonthDay $date[set date {}] 2361222]
1374
+ if { $parseTime ne {} } {
1375
+ dict set date secondOfDay $parseTime
1376
+ } elseif { [llength $parseWeekday] != 0
1377
+ || [llength $parseOrdinalMonth] != 0
1378
+ || ( [llength $parseRel] != 0
1379
+ && ( [lindex $parseRel 0] != 0
1380
+ || [lindex $parseRel 1] != 0 ) ) } {
1381
+ dict set date secondOfDay 0
1382
+ }
1383
+
1384
+ dict set date localSeconds [expr {
1385
+ -210866803200
1386
+ + ( 86400 * wide([dict get $date julianDay]) )
1387
+ + [dict get $date secondOfDay]
1388
+ }]
1389
+ dict set date tzName $timezone
1390
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) 2361222]
1391
+ set seconds [dict get $date seconds]
1392
+
1393
+ # Do relative times
1394
+
1395
+ if { [llength $parseRel] > 0 } {
1396
+ lassign $parseRel relMonth relDay relSecond
1397
+ set seconds [add $seconds \
1398
+ $relMonth months $relDay days $relSecond seconds \
1399
+ -timezone $timezone -locale $locale]
1400
+ }
1401
+
1402
+ # Do relative weekday
1403
+
1404
+ if { [llength $parseWeekday] > 0 } {
1405
+ lassign $parseWeekday dayOrdinal dayOfWeek
1406
+ set date2 [GetDateFields $seconds $TZData($timezone) 2361222]
1407
+ dict set date2 era CE
1408
+ set jdwkday [WeekdayOnOrBefore $dayOfWeek [expr {
1409
+ [dict get $date2 julianDay] + 6
1410
+ }]]
1411
+ incr jdwkday [expr { 7 * $dayOrdinal }]
1412
+ if { $dayOrdinal > 0 } {
1413
+ incr jdwkday -7
1414
+ }
1415
+ dict set date2 secondOfDay \
1416
+ [expr { [dict get $date2 localSeconds] % 86400 }]
1417
+ dict set date2 julianDay $jdwkday
1418
+ dict set date2 localSeconds [expr {
1419
+ -210866803200
1420
+ + ( 86400 * wide([dict get $date2 julianDay]) )
1421
+ + [dict get $date secondOfDay]
1422
+ }]
1423
+ dict set date2 tzName $timezone
1424
+ set date2 [ConvertLocalToUTC $date2[set date2 {}] $TZData($timezone) \
1425
+ 2361222]
1426
+ set seconds [dict get $date2 seconds]
1427
+
1428
+ }
1429
+
1430
+ # Do relative month
1431
+
1432
+ if { [llength $parseOrdinalMonth] > 0 } {
1433
+ lassign $parseOrdinalMonth monthOrdinal monthNumber
1434
+ if { $monthOrdinal > 0 } {
1435
+ set monthDiff [expr { $monthNumber - [dict get $date month] }]
1436
+ if { $monthDiff <= 0 } {
1437
+ incr monthDiff 12
1438
+ }
1439
+ incr monthOrdinal -1
1440
+ } else {
1441
+ set monthDiff [expr { [dict get $date month] - $monthNumber }]
1442
+ if { $monthDiff >= 0 } {
1443
+ incr monthDiff -12
1444
+ }
1445
+ incr monthOrdinal
1446
+ }
1447
+ set seconds [add $seconds $monthOrdinal years $monthDiff months \
1448
+ -timezone $timezone -locale $locale]
1449
+ }
1450
+
1451
+ return $seconds
1452
+ }
1453
+
1454
+
1455
+ #----------------------------------------------------------------------
1456
+ #
1457
+ # ParseClockScanFormat --
1458
+ #
1459
+ # Parses a format string given to [clock scan -format]
1460
+ #
1461
+ # Parameters:
1462
+ # formatString - The format being parsed
1463
+ # locale - The current locale
1464
+ #
1465
+ # Results:
1466
+ # Constructs and returns a procedure that accepts the string being
1467
+ # scanned, the base time, and the time zone. The procedure will either
1468
+ # return the scanned time or else throw an error that should be rethrown
1469
+ # to the caller of [clock scan]
1470
+ #
1471
+ # Side effects:
1472
+ # The given procedure is defined in the ::tcl::clock namespace. Scan
1473
+ # procedures are not deleted once installed.
1474
+ #
1475
+ # Why do we parse dates by defining a procedure to parse them? The reason is
1476
+ # that by doing so, we have one convenient place to cache all the information:
1477
+ # the regular expressions that match the patterns (which will be compiled),
1478
+ # the code that assembles the date information, everything lands in one place.
1479
+ # In this way, when a given format is reused at run time, all the information
1480
+ # of how to apply it is available in a single place.
1481
+ #
1482
+ #----------------------------------------------------------------------
1483
+
1484
+ proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
1485
+ # Check whether the format has been parsed previously, and return the
1486
+ # existing recognizer if it has.
1487
+
1488
+ set procName scanproc'$formatString'$locale
1489
+ set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
1490
+ if { [namespace which $procName] != {} } {
1491
+ return $procName
1492
+ }
1493
+
1494
+ variable DateParseActions
1495
+ variable TimeParseActions
1496
+
1497
+ # Localize the %x, %X, etc. groups
1498
+
1499
+ set formatString [LocalizeFormat $locale $formatString]
1500
+
1501
+ # Condense whitespace
1502
+
1503
+ regsub -all {[[:space:]]+} $formatString { } formatString
1504
+
1505
+ # Walk through the groups of the format string. In this loop, we
1506
+ # accumulate:
1507
+ # - a regular expression that matches the string,
1508
+ # - the count of capturing brackets in the regexp
1509
+ # - a set of code that post-processes the fields captured by the regexp,
1510
+ # - a dictionary whose keys are the names of fields that are present
1511
+ # in the format string.
1512
+
1513
+ set re {^[[:space:]]*}
1514
+ set captureCount 0
1515
+ set postcode {}
1516
+ set fieldSet [dict create]
1517
+ set fieldCount 0
1518
+ set postSep {}
1519
+ set state {}
1520
+
1521
+ foreach c [split $formatString {}] {
1522
+ switch -exact -- $state {
1523
+ {} {
1524
+ if { $c eq "%" } {
1525
+ set state %
1526
+ } elseif { $c eq " " } {
1527
+ append re {[[:space:]]+}
1528
+ } else {
1529
+ if { ! [string is alnum $c] } {
1530
+ append re "\\"
1531
+ }
1532
+ append re $c
1533
+ }
1534
+ }
1535
+ % {
1536
+ set state {}
1537
+ switch -exact -- $c {
1538
+ % {
1539
+ append re %
1540
+ }
1541
+ { } {
1542
+ append re "\[\[:space:\]\]*"
1543
+ }
1544
+ a - A { # Day of week, in words
1545
+ set l {}
1546
+ foreach \
1547
+ i {7 1 2 3 4 5 6} \
1548
+ abr [mc DAYS_OF_WEEK_ABBREV] \
1549
+ full [mc DAYS_OF_WEEK_FULL] {
1550
+ dict set l [string tolower $abr] $i
1551
+ dict set l [string tolower $full] $i
1552
+ incr i
1553
+ }
1554
+ lassign [UniquePrefixRegexp $l] regex lookup
1555
+ append re ( $regex )
1556
+ dict set fieldSet dayOfWeek [incr fieldCount]
1557
+ append postcode "dict set date dayOfWeek \[" \
1558
+ "dict get " [list $lookup] " " \
1559
+ \[ {string tolower $field} [incr captureCount] \] \
1560
+ "\]\n"
1561
+ }
1562
+ b - B - h { # Name of month
1563
+ set i 0
1564
+ set l {}
1565
+ foreach \
1566
+ abr [mc MONTHS_ABBREV] \
1567
+ full [mc MONTHS_FULL] {
1568
+ incr i
1569
+ dict set l [string tolower $abr] $i
1570
+ dict set l [string tolower $full] $i
1571
+ }
1572
+ lassign [UniquePrefixRegexp $l] regex lookup
1573
+ append re ( $regex )
1574
+ dict set fieldSet month [incr fieldCount]
1575
+ append postcode "dict set date month \[" \
1576
+ "dict get " [list $lookup] \
1577
+ " " \[ {string tolower $field} \
1578
+ [incr captureCount] \] \
1579
+ "\]\n"
1580
+ }
1581
+ C { # Gregorian century
1582
+ append re \\s*(\\d\\d?)
1583
+ dict set fieldSet century [incr fieldCount]
1584
+ append postcode "dict set date century \[" \
1585
+ "::scan \$field" [incr captureCount] " %d" \
1586
+ "\]\n"
1587
+ }
1588
+ d - e { # Day of month
1589
+ append re \\s*(\\d\\d?)
1590
+ dict set fieldSet dayOfMonth [incr fieldCount]
1591
+ append postcode "dict set date dayOfMonth \[" \
1592
+ "::scan \$field" [incr captureCount] " %d" \
1593
+ "\]\n"
1594
+ }
1595
+ E { # Prefix for locale-specific codes
1596
+ set state %E
1597
+ }
1598
+ g { # ISO8601 2-digit year
1599
+ append re \\s*(\\d\\d)
1600
+ dict set fieldSet iso8601YearOfCentury \
1601
+ [incr fieldCount]
1602
+ append postcode \
1603
+ "dict set date iso8601YearOfCentury \[" \
1604
+ "::scan \$field" [incr captureCount] " %d" \
1605
+ "\]\n"
1606
+ }
1607
+ G { # ISO8601 4-digit year
1608
+ append re \\s*(\\d\\d)(\\d\\d)
1609
+ dict set fieldSet iso8601Century [incr fieldCount]
1610
+ dict set fieldSet iso8601YearOfCentury \
1611
+ [incr fieldCount]
1612
+ append postcode \
1613
+ "dict set date iso8601Century \[" \
1614
+ "::scan \$field" [incr captureCount] " %d" \
1615
+ "\]\n" \
1616
+ "dict set date iso8601YearOfCentury \[" \
1617
+ "::scan \$field" [incr captureCount] " %d" \
1618
+ "\]\n"
1619
+ }
1620
+ H - k { # Hour of day
1621
+ append re \\s*(\\d\\d?)
1622
+ dict set fieldSet hour [incr fieldCount]
1623
+ append postcode "dict set date hour \[" \
1624
+ "::scan \$field" [incr captureCount] " %d" \
1625
+ "\]\n"
1626
+ }
1627
+ I - l { # Hour, AM/PM
1628
+ append re \\s*(\\d\\d?)
1629
+ dict set fieldSet hourAMPM [incr fieldCount]
1630
+ append postcode "dict set date hourAMPM \[" \
1631
+ "::scan \$field" [incr captureCount] " %d" \
1632
+ "\]\n"
1633
+ }
1634
+ j { # Day of year
1635
+ append re \\s*(\\d\\d?\\d?)
1636
+ dict set fieldSet dayOfYear [incr fieldCount]
1637
+ append postcode "dict set date dayOfYear \[" \
1638
+ "::scan \$field" [incr captureCount] " %d" \
1639
+ "\]\n"
1640
+ }
1641
+ J { # Julian Day Number
1642
+ append re \\s*(\\d+)
1643
+ dict set fieldSet julianDay [incr fieldCount]
1644
+ append postcode "dict set date julianDay \[" \
1645
+ "::scan \$field" [incr captureCount] " %ld" \
1646
+ "\]\n"
1647
+ }
1648
+ m - N { # Month number
1649
+ append re \\s*(\\d\\d?)
1650
+ dict set fieldSet month [incr fieldCount]
1651
+ append postcode "dict set date month \[" \
1652
+ "::scan \$field" [incr captureCount] " %d" \
1653
+ "\]\n"
1654
+ }
1655
+ M { # Minute
1656
+ append re \\s*(\\d\\d?)
1657
+ dict set fieldSet minute [incr fieldCount]
1658
+ append postcode "dict set date minute \[" \
1659
+ "::scan \$field" [incr captureCount] " %d" \
1660
+ "\]\n"
1661
+ }
1662
+ n { # Literal newline
1663
+ append re \\n
1664
+ }
1665
+ O { # Prefix for locale numerics
1666
+ set state %O
1667
+ }
1668
+ p - P { # AM/PM indicator
1669
+ set l [list [string tolower [mc AM]] 0 \
1670
+ [string tolower [mc PM]] 1]
1671
+ lassign [UniquePrefixRegexp $l] regex lookup
1672
+ append re ( $regex )
1673
+ dict set fieldSet amPmIndicator [incr fieldCount]
1674
+ append postcode "dict set date amPmIndicator \[" \
1675
+ "dict get " [list $lookup] " \[string tolower " \
1676
+ "\$field" \
1677
+ [incr captureCount] \
1678
+ "\]\]\n"
1679
+ }
1680
+ Q { # Hi, Jeff!
1681
+ append re {Stardate\s+([-+]?\d+)(\d\d\d)[.](\d)}
1682
+ incr captureCount
1683
+ dict set fieldSet seconds [incr fieldCount]
1684
+ append postcode {dict set date seconds } \[ \
1685
+ {ParseStarDate $field} [incr captureCount] \
1686
+ { $field} [incr captureCount] \
1687
+ { $field} [incr captureCount] \
1688
+ \] \n
1689
+ }
1690
+ s { # Seconds from Posix Epoch
1691
+ # This next case is insanely difficult, because it's
1692
+ # problematic to determine whether the field is
1693
+ # actually within the range of a wide integer.
1694
+ append re {\s*([-+]?\d+)}
1695
+ dict set fieldSet seconds [incr fieldCount]
1696
+ append postcode {dict set date seconds } \[ \
1697
+ {ScanWide $field} [incr captureCount] \] \n
1698
+ }
1699
+ S { # Second
1700
+ append re \\s*(\\d\\d?)
1701
+ dict set fieldSet second [incr fieldCount]
1702
+ append postcode "dict set date second \[" \
1703
+ "::scan \$field" [incr captureCount] " %d" \
1704
+ "\]\n"
1705
+ }
1706
+ t { # Literal tab character
1707
+ append re \\t
1708
+ }
1709
+ u - w { # Day number within week, 0 or 7 == Sun
1710
+ # 1=Mon, 6=Sat
1711
+ append re \\s*(\\d)
1712
+ dict set fieldSet dayOfWeek [incr fieldCount]
1713
+ append postcode {::scan $field} [incr captureCount] \
1714
+ { %d dow} \n \
1715
+ {
1716
+ if { $dow == 0 } {
1717
+ set dow 7
1718
+ } elseif { $dow > 7 } {
1719
+ return -code error \
1720
+ -errorcode [list CLOCK badDayOfWeek] \
1721
+ "day of week is greater than 7"
1722
+ }
1723
+ dict set date dayOfWeek $dow
1724
+ }
1725
+ }
1726
+ U { # Week of year. The first Sunday of
1727
+ # the year is the first day of week
1728
+ # 01. No scan rule uses this group.
1729
+ append re \\s*\\d\\d?
1730
+ }
1731
+ V { # Week of ISO8601 year
1732
+
1733
+ append re \\s*(\\d\\d?)
1734
+ dict set fieldSet iso8601Week [incr fieldCount]
1735
+ append postcode "dict set date iso8601Week \[" \
1736
+ "::scan \$field" [incr captureCount] " %d" \
1737
+ "\]\n"
1738
+ }
1739
+ W { # Week of the year (00-53). The first
1740
+ # Monday of the year is the first day
1741
+ # of week 01. No scan rule uses this
1742
+ # group.
1743
+ append re \\s*\\d\\d?
1744
+ }
1745
+ y { # Two-digit Gregorian year
1746
+ append re \\s*(\\d\\d?)
1747
+ dict set fieldSet yearOfCentury [incr fieldCount]
1748
+ append postcode "dict set date yearOfCentury \[" \
1749
+ "::scan \$field" [incr captureCount] " %d" \
1750
+ "\]\n"
1751
+ }
1752
+ Y { # 4-digit Gregorian year
1753
+ append re \\s*(\\d\\d)(\\d\\d)
1754
+ dict set fieldSet century [incr fieldCount]
1755
+ dict set fieldSet yearOfCentury [incr fieldCount]
1756
+ append postcode \
1757
+ "dict set date century \[" \
1758
+ "::scan \$field" [incr captureCount] " %d" \
1759
+ "\]\n" \
1760
+ "dict set date yearOfCentury \[" \
1761
+ "::scan \$field" [incr captureCount] " %d" \
1762
+ "\]\n"
1763
+ }
1764
+ z - Z { # Time zone name
1765
+ append re {(?:([-+]\d\d(?::?\d\d(?::?\d\d)?)?)|([[:alnum:]]{1,4}))}
1766
+ dict set fieldSet tzName [incr fieldCount]
1767
+ append postcode \
1768
+ {if } \{ { $field} [incr captureCount] \
1769
+ { ne "" } \} { } \{ \n \
1770
+ {dict set date tzName $field} \
1771
+ $captureCount \n \
1772
+ \} { else } \{ \n \
1773
+ {dict set date tzName } \[ \
1774
+ {ConvertLegacyTimeZone $field} \
1775
+ [incr captureCount] \] \n \
1776
+ \} \n \
1777
+ }
1778
+ % { # Literal percent character
1779
+ append re %
1780
+ }
1781
+ default {
1782
+ append re %
1783
+ if { ! [string is alnum $c] } {
1784
+ append re \\
1785
+ }
1786
+ append re $c
1787
+ }
1788
+ }
1789
+ }
1790
+ %E {
1791
+ switch -exact -- $c {
1792
+ C { # Locale-dependent era
1793
+ set d {}
1794
+ foreach triple [mc LOCALE_ERAS] {
1795
+ lassign $triple t symbol year
1796
+ dict set d [string tolower $symbol] $year
1797
+ }
1798
+ lassign [UniquePrefixRegexp $d] regex lookup
1799
+ append re (?: $regex )
1800
+ }
1801
+ E {
1802
+ set l {}
1803
+ dict set l [string tolower [mc BCE]] BCE
1804
+ dict set l [string tolower [mc CE]] CE
1805
+ dict set l b.c.e. BCE
1806
+ dict set l c.e. CE
1807
+ dict set l b.c. BCE
1808
+ dict set l a.d. CE
1809
+ lassign [UniquePrefixRegexp $l] regex lookup
1810
+ append re ( $regex )
1811
+ dict set fieldSet era [incr fieldCount]
1812
+ append postcode "dict set date era \["\
1813
+ "dict get " [list $lookup] \
1814
+ { } \[ {string tolower $field} \
1815
+ [incr captureCount] \] \
1816
+ "\]\n"
1817
+ }
1818
+ y { # Locale-dependent year of the era
1819
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1820
+ append re $regex
1821
+ incr captureCount
1822
+ }
1823
+ default {
1824
+ append re %E
1825
+ if { ! [string is alnum $c] } {
1826
+ append re \\
1827
+ }
1828
+ append re $c
1829
+ }
1830
+ }
1831
+ set state {}
1832
+ }
1833
+ %O {
1834
+ switch -exact -- $c {
1835
+ d - e {
1836
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1837
+ append re $regex
1838
+ dict set fieldSet dayOfMonth [incr fieldCount]
1839
+ append postcode "dict set date dayOfMonth \[" \
1840
+ "dict get " [list $lookup] " \$field" \
1841
+ [incr captureCount] \
1842
+ "\]\n"
1843
+ }
1844
+ H - k {
1845
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1846
+ append re $regex
1847
+ dict set fieldSet hour [incr fieldCount]
1848
+ append postcode "dict set date hour \[" \
1849
+ "dict get " [list $lookup] " \$field" \
1850
+ [incr captureCount] \
1851
+ "\]\n"
1852
+ }
1853
+ I - l {
1854
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1855
+ append re $regex
1856
+ dict set fieldSet hourAMPM [incr fieldCount]
1857
+ append postcode "dict set date hourAMPM \[" \
1858
+ "dict get " [list $lookup] " \$field" \
1859
+ [incr captureCount] \
1860
+ "\]\n"
1861
+ }
1862
+ m {
1863
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1864
+ append re $regex
1865
+ dict set fieldSet month [incr fieldCount]
1866
+ append postcode "dict set date month \[" \
1867
+ "dict get " [list $lookup] " \$field" \
1868
+ [incr captureCount] \
1869
+ "\]\n"
1870
+ }
1871
+ M {
1872
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1873
+ append re $regex
1874
+ dict set fieldSet minute [incr fieldCount]
1875
+ append postcode "dict set date minute \[" \
1876
+ "dict get " [list $lookup] " \$field" \
1877
+ [incr captureCount] \
1878
+ "\]\n"
1879
+ }
1880
+ S {
1881
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1882
+ append re $regex
1883
+ dict set fieldSet second [incr fieldCount]
1884
+ append postcode "dict set date second \[" \
1885
+ "dict get " [list $lookup] " \$field" \
1886
+ [incr captureCount] \
1887
+ "\]\n"
1888
+ }
1889
+ u - w {
1890
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1891
+ append re $regex
1892
+ dict set fieldSet dayOfWeek [incr fieldCount]
1893
+ append postcode "set dow \[dict get " [list $lookup] \
1894
+ { $field} [incr captureCount] \] \n \
1895
+ {
1896
+ if { $dow == 0 } {
1897
+ set dow 7
1898
+ } elseif { $dow > 7 } {
1899
+ return -code error \
1900
+ -errorcode [list CLOCK badDayOfWeek] \
1901
+ "day of week is greater than 7"
1902
+ }
1903
+ dict set date dayOfWeek $dow
1904
+ }
1905
+ }
1906
+ y {
1907
+ lassign [LocaleNumeralMatcher $locale] regex lookup
1908
+ append re $regex
1909
+ dict set fieldSet yearOfCentury [incr fieldCount]
1910
+ append postcode {dict set date yearOfCentury } \[ \
1911
+ {dict get } [list $lookup] { $field} \
1912
+ [incr captureCount] \] \n
1913
+ }
1914
+ default {
1915
+ append re %O
1916
+ if { ! [string is alnum $c] } {
1917
+ append re \\
1918
+ }
1919
+ append re $c
1920
+ }
1921
+ }
1922
+ set state {}
1923
+ }
1924
+ }
1925
+ }
1926
+
1927
+ # Clean up any unfinished format groups
1928
+
1929
+ append re $state \\s*\$
1930
+
1931
+ # Build the procedure
1932
+
1933
+ set procBody {}
1934
+ append procBody "variable ::tcl::clock::TZData" \n
1935
+ append procBody "if \{ !\[ regexp -nocase [list $re] \$string ->"
1936
+ for { set i 1 } { $i <= $captureCount } { incr i } {
1937
+ append procBody " " field $i
1938
+ }
1939
+ append procBody "\] \} \{" \n
1940
+ append procBody {
1941
+ return -code error -errorcode [list CLOCK badInputString] \
1942
+ {input string does not match supplied format}
1943
+ }
1944
+ append procBody \}\n
1945
+ append procBody "set date \[dict create\]" \n
1946
+ append procBody {dict set date tzName $timeZone} \n
1947
+ append procBody $postcode
1948
+ append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n
1949
+
1950
+ # Set up the time zone before doing anything with a default base date
1951
+ # that might need a timezone to interpret it.
1952
+
1953
+ if { ![dict exists $fieldSet seconds]
1954
+ && ![dict exists $fieldSet starDate] } {
1955
+ if { [dict exists $fieldSet tzName] } {
1956
+ append procBody {
1957
+ set timeZone [dict get $date tzName]
1958
+ }
1959
+ }
1960
+ append procBody {
1961
+ ::tcl::clock::SetupTimeZone $timeZone
1962
+ }
1963
+ }
1964
+
1965
+ # Add code that gets Julian Day Number from the fields.
1966
+
1967
+ append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions]
1968
+
1969
+ # Get time of day
1970
+
1971
+ append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions]
1972
+
1973
+ # Assemble seconds from the Julian day and second of the day.
1974
+ # Convert to local time unless epoch seconds or stardate are
1975
+ # being processed - they're always absolute
1976
+
1977
+ if { ![dict exists $fieldSet seconds]
1978
+ && ![dict exists $fieldSet starDate] } {
1979
+ append procBody {
1980
+ if { [dict get $date julianDay] > 5373484 } {
1981
+ return -code error -errorcode [list CLOCK dateTooLarge] \
1982
+ "requested date too large to represent"
1983
+ }
1984
+ dict set date localSeconds [expr {
1985
+ -210866803200
1986
+ + ( 86400 * wide([dict get $date julianDay]) )
1987
+ + [dict get $date secondOfDay]
1988
+ }]
1989
+ }
1990
+
1991
+ # Finally, convert the date to local time
1992
+
1993
+ append procBody {
1994
+ set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \
1995
+ $TZData($timeZone) $changeover]
1996
+ }
1997
+ }
1998
+
1999
+ # Return result
2000
+
2001
+ append procBody {return [dict get $date seconds]} \n
2002
+
2003
+ proc $procName { string baseTime timeZone } $procBody
2004
+
2005
+ # puts [list proc $procName [list string baseTime timeZone] $procBody]
2006
+
2007
+ return $procName
2008
+ }
2009
+
2010
+ #----------------------------------------------------------------------
2011
+ #
2012
+ # LocaleNumeralMatcher --
2013
+ #
2014
+ # Composes a regexp that captures the numerals in the given locale, and
2015
+ # a dictionary to map them to conventional numerals.
2016
+ #
2017
+ # Parameters:
2018
+ # locale - Name of the current locale
2019
+ #
2020
+ # Results:
2021
+ # Returns a two-element list comprising the regexp and the dictionary.
2022
+ #
2023
+ # Side effects:
2024
+ # Caches the result.
2025
+ #
2026
+ #----------------------------------------------------------------------
2027
+
2028
+ proc ::tcl::clock::LocaleNumeralMatcher {l} {
2029
+ variable LocaleNumeralCache
2030
+
2031
+ if { ![dict exists $LocaleNumeralCache $l] } {
2032
+ set d {}
2033
+ set i 0
2034
+ set sep \(
2035
+ foreach n [mc LOCALE_NUMERALS] {
2036
+ dict set d $n $i
2037
+ regsub -all {[^[:alnum:]]} $n \\\\& subex
2038
+ append re $sep $subex
2039
+ set sep |
2040
+ incr i
2041
+ }
2042
+ append re \)
2043
+ dict set LocaleNumeralCache $l [list $re $d]
2044
+ }
2045
+ return [dict get $LocaleNumeralCache $l]
2046
+ }
2047
+
2048
+
2049
+
2050
+ #----------------------------------------------------------------------
2051
+ #
2052
+ # UniquePrefixRegexp --
2053
+ #
2054
+ # Composes a regexp that performs unique-prefix matching. The RE
2055
+ # matches one of a supplied set of strings, or any unique prefix
2056
+ # thereof.
2057
+ #
2058
+ # Parameters:
2059
+ # data - List of alternating match-strings and values.
2060
+ # Match-strings with distinct values are considered
2061
+ # distinct.
2062
+ #
2063
+ # Results:
2064
+ # Returns a two-element list. The first is a regexp that matches any
2065
+ # unique prefix of any of the strings. The second is a dictionary whose
2066
+ # keys are match values from the regexp and whose values are the
2067
+ # corresponding values from 'data'.
2068
+ #
2069
+ # Side effects:
2070
+ # None.
2071
+ #
2072
+ #----------------------------------------------------------------------
2073
+
2074
+ proc ::tcl::clock::UniquePrefixRegexp { data } {
2075
+ # The 'successors' dictionary will contain, for each string that is a
2076
+ # prefix of any key, all characters that may follow that prefix. The
2077
+ # 'prefixMapping' dictionary will have keys that are prefixes of keys and
2078
+ # values that correspond to the keys.
2079
+
2080
+ set prefixMapping [dict create]
2081
+ set successors [dict create {} {}]
2082
+
2083
+ # Walk the key-value pairs
2084
+
2085
+ foreach { key value } $data {
2086
+ # Construct all prefixes of the key;
2087
+
2088
+ set prefix {}
2089
+ foreach char [split $key {}] {
2090
+ set oldPrefix $prefix
2091
+ dict set successors $oldPrefix $char {}
2092
+ append prefix $char
2093
+
2094
+ # Put the prefixes in the 'prefixMapping' and 'successors'
2095
+ # dictionaries
2096
+
2097
+ dict lappend prefixMapping $prefix $value
2098
+ if { ![dict exists $successors $prefix] } {
2099
+ dict set successors $prefix {}
2100
+ }
2101
+ }
2102
+ }
2103
+
2104
+ # Identify those prefixes that designate unique values, and those that are
2105
+ # the full keys
2106
+
2107
+ set uniquePrefixMapping {}
2108
+ dict for { key valueList } $prefixMapping {
2109
+ if { [llength $valueList] == 1 } {
2110
+ dict set uniquePrefixMapping $key [lindex $valueList 0]
2111
+ }
2112
+ }
2113
+ foreach { key value } $data {
2114
+ dict set uniquePrefixMapping $key $value
2115
+ }
2116
+
2117
+ # Construct the re.
2118
+
2119
+ return [list \
2120
+ [MakeUniquePrefixRegexp $successors $uniquePrefixMapping {}] \
2121
+ $uniquePrefixMapping]
2122
+ }
2123
+
2124
+ #----------------------------------------------------------------------
2125
+ #
2126
+ # MakeUniquePrefixRegexp --
2127
+ #
2128
+ # Service procedure for 'UniquePrefixRegexp' that constructs a regular
2129
+ # expresison that matches the unique prefixes.
2130
+ #
2131
+ # Parameters:
2132
+ # successors - Dictionary whose keys are all prefixes
2133
+ # of keys passed to 'UniquePrefixRegexp' and whose
2134
+ # values are dictionaries whose keys are the characters
2135
+ # that may follow those prefixes.
2136
+ # uniquePrefixMapping - Dictionary whose keys are the unique
2137
+ # prefixes and whose values are not examined.
2138
+ # prefixString - Current prefix being processed.
2139
+ #
2140
+ # Results:
2141
+ # Returns a constructed regular expression that matches the set of
2142
+ # unique prefixes beginning with the 'prefixString'.
2143
+ #
2144
+ # Side effects:
2145
+ # None.
2146
+ #
2147
+ #----------------------------------------------------------------------
2148
+
2149
+ proc ::tcl::clock::MakeUniquePrefixRegexp { successors
2150
+ uniquePrefixMapping
2151
+ prefixString } {
2152
+
2153
+ # Get the characters that may follow the current prefix string
2154
+
2155
+ set schars [lsort -ascii [dict keys [dict get $successors $prefixString]]]
2156
+ if { [llength $schars] == 0 } {
2157
+ return {}
2158
+ }
2159
+
2160
+ # If there is more than one successor character, or if the current prefix
2161
+ # is a unique prefix, surround the generated re with non-capturing
2162
+ # parentheses.
2163
+
2164
+ set re {}
2165
+ if {
2166
+ [dict exists $uniquePrefixMapping $prefixString]
2167
+ || [llength $schars] > 1
2168
+ } then {
2169
+ append re "(?:"
2170
+ }
2171
+
2172
+ # Generate a regexp that matches the successors.
2173
+
2174
+ set sep ""
2175
+ foreach { c } $schars {
2176
+ set nextPrefix $prefixString$c
2177
+ regsub -all {[^[:alnum:]]} $c \\\\& rechar
2178
+ append re $sep $rechar \
2179
+ [MakeUniquePrefixRegexp \
2180
+ $successors $uniquePrefixMapping $nextPrefix]
2181
+ set sep |
2182
+ }
2183
+
2184
+ # If the current prefix is a unique prefix, make all following text
2185
+ # optional. Otherwise, if there is more than one successor character,
2186
+ # close the non-capturing parentheses.
2187
+
2188
+ if { [dict exists $uniquePrefixMapping $prefixString] } {
2189
+ append re ")?"
2190
+ } elseif { [llength $schars] > 1 } {
2191
+ append re ")"
2192
+ }
2193
+
2194
+ return $re
2195
+ }
2196
+
2197
+ #----------------------------------------------------------------------
2198
+ #
2199
+ # MakeParseCodeFromFields --
2200
+ #
2201
+ # Composes Tcl code to extract the Julian Day Number from a dictionary
2202
+ # containing date fields.
2203
+ #
2204
+ # Parameters:
2205
+ # dateFields -- Dictionary whose keys are fields of the date,
2206
+ # and whose values are the rightmost positions
2207
+ # at which those fields appear.
2208
+ # parseActions -- List of triples: field set, priority, and
2209
+ # code to emit. Smaller priorities are better, and
2210
+ # the list must be in ascending order by priority
2211
+ #
2212
+ # Results:
2213
+ # Returns a burst of code that extracts the day number from the given
2214
+ # date.
2215
+ #
2216
+ # Side effects:
2217
+ # None.
2218
+ #
2219
+ #----------------------------------------------------------------------
2220
+
2221
+ proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
2222
+
2223
+ set currPrio 999
2224
+ set currFieldPos [list]
2225
+ set currCodeBurst {
2226
+ error "in ::tcl::clock::MakeParseCodeFromFields: can't happen"
2227
+ }
2228
+
2229
+ foreach { fieldSet prio parseAction } $parseActions {
2230
+ # If we've found an answer that's better than any that follow, quit
2231
+ # now.
2232
+
2233
+ if { $prio > $currPrio } {
2234
+ break
2235
+ }
2236
+
2237
+ # Accumulate the field positions that are used in the current field
2238
+ # grouping.
2239
+
2240
+ set fieldPos [list]
2241
+ set ok true
2242
+ foreach field $fieldSet {
2243
+ if { ! [dict exists $dateFields $field] } {
2244
+ set ok 0
2245
+ break
2246
+ }
2247
+ lappend fieldPos [dict get $dateFields $field]
2248
+ }
2249
+
2250
+ # Quit if we don't have a complete set of fields
2251
+ if { !$ok } {
2252
+ continue
2253
+ }
2254
+
2255
+ # Determine whether the current answer is better than the last.
2256
+
2257
+ set fPos [lsort -integer -decreasing $fieldPos]
2258
+
2259
+ if { $prio == $currPrio } {
2260
+ foreach currPos $currFieldPos newPos $fPos {
2261
+ if {
2262
+ ![string is integer $newPos]
2263
+ || ![string is integer $currPos]
2264
+ || $newPos > $currPos
2265
+ } then {
2266
+ break
2267
+ }
2268
+ if { $newPos < $currPos } {
2269
+ set ok 0
2270
+ break
2271
+ }
2272
+ }
2273
+ }
2274
+ if { !$ok } {
2275
+ continue
2276
+ }
2277
+
2278
+ # Remember the best possibility for extracting date information
2279
+
2280
+ set currPrio $prio
2281
+ set currFieldPos $fPos
2282
+ set currCodeBurst $parseAction
2283
+ }
2284
+
2285
+ return $currCodeBurst
2286
+ }
2287
+
2288
+ #----------------------------------------------------------------------
2289
+ #
2290
+ # EnterLocale --
2291
+ #
2292
+ # Switch [mclocale] to a given locale if necessary
2293
+ #
2294
+ # Parameters:
2295
+ # locale -- Desired locale
2296
+ #
2297
+ # Results:
2298
+ # Returns the locale that was previously current.
2299
+ #
2300
+ # Side effects:
2301
+ # Does [mclocale]. If necessary, loades the designated locale's files.
2302
+ #
2303
+ #----------------------------------------------------------------------
2304
+
2305
+ proc ::tcl::clock::EnterLocale { locale } {
2306
+ if { $locale eq {system} } {
2307
+ if { $::tcl_platform(platform) ne {windows} } {
2308
+ # On a non-windows platform, the 'system' locale is the same as
2309
+ # the 'current' locale
2310
+
2311
+ set locale current
2312
+ } else {
2313
+ # On a windows platform, the 'system' locale is adapted from the
2314
+ # 'current' locale by applying the date and time formats from the
2315
+ # Control Panel. First, load the 'current' locale if it's not yet
2316
+ # loaded
2317
+
2318
+ mcpackagelocale set [mclocale]
2319
+
2320
+ # Make a new locale string for the system locale, and get the
2321
+ # Control Panel information
2322
+
2323
+ set locale [mclocale]_windows
2324
+ if { ! [mcpackagelocale present $locale] } {
2325
+ LoadWindowsDateTimeFormats $locale
2326
+ }
2327
+ }
2328
+ }
2329
+ if { $locale eq {current}} {
2330
+ set locale [mclocale]
2331
+ }
2332
+ # Eventually load the locale
2333
+ mcpackagelocale set $locale
2334
+ }
2335
+
2336
+ #----------------------------------------------------------------------
2337
+ #
2338
+ # LoadWindowsDateTimeFormats --
2339
+ #
2340
+ # Load the date/time formats from the Control Panel in Windows and
2341
+ # convert them so that they're usable by Tcl.
2342
+ #
2343
+ # Parameters:
2344
+ # locale - Name of the locale in whose message catalog
2345
+ # the converted formats are to be stored.
2346
+ #
2347
+ # Results:
2348
+ # None.
2349
+ #
2350
+ # Side effects:
2351
+ # Updates the given message catalog with the locale strings.
2352
+ #
2353
+ # Presumes that on entry, [mclocale] is set to the current locale, so that
2354
+ # default strings can be obtained if the Registry query fails.
2355
+ #
2356
+ #----------------------------------------------------------------------
2357
+
2358
+ proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
2359
+ # Bail out if we can't find the Registry
2360
+
2361
+ variable NoRegistry
2362
+ if { [info exists NoRegistry] } return
2363
+
2364
+ if { ![catch {
2365
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
2366
+ sShortDate
2367
+ } string] } {
2368
+ set quote {}
2369
+ set datefmt {}
2370
+ foreach { unquoted quoted } [split $string '] {
2371
+ append datefmt $quote [string map {
2372
+ dddd %A
2373
+ ddd %a
2374
+ dd %d
2375
+ d %e
2376
+ MMMM %B
2377
+ MMM %b
2378
+ MM %m
2379
+ M %N
2380
+ yyyy %Y
2381
+ yy %y
2382
+ y %y
2383
+ gg {}
2384
+ } $unquoted]
2385
+ if { $quoted eq {} } {
2386
+ set quote '
2387
+ } else {
2388
+ set quote $quoted
2389
+ }
2390
+ }
2391
+ ::msgcat::mcset $locale DATE_FORMAT $datefmt
2392
+ }
2393
+
2394
+ if { ![catch {
2395
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
2396
+ sLongDate
2397
+ } string] } {
2398
+ set quote {}
2399
+ set ldatefmt {}
2400
+ foreach { unquoted quoted } [split $string '] {
2401
+ append ldatefmt $quote [string map {
2402
+ dddd %A
2403
+ ddd %a
2404
+ dd %d
2405
+ d %e
2406
+ MMMM %B
2407
+ MMM %b
2408
+ MM %m
2409
+ M %N
2410
+ yyyy %Y
2411
+ yy %y
2412
+ y %y
2413
+ gg {}
2414
+ } $unquoted]
2415
+ if { $quoted eq {} } {
2416
+ set quote '
2417
+ } else {
2418
+ set quote $quoted
2419
+ }
2420
+ }
2421
+ ::msgcat::mcset $locale LOCALE_DATE_FORMAT $ldatefmt
2422
+ }
2423
+
2424
+ if { ![catch {
2425
+ registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
2426
+ sTimeFormat
2427
+ } string] } {
2428
+ set quote {}
2429
+ set timefmt {}
2430
+ foreach { unquoted quoted } [split $string '] {
2431
+ append timefmt $quote [string map {
2432
+ HH %H
2433
+ H %k
2434
+ hh %I
2435
+ h %l
2436
+ mm %M
2437
+ m %M
2438
+ ss %S
2439
+ s %S
2440
+ tt %p
2441
+ t %p
2442
+ } $unquoted]
2443
+ if { $quoted eq {} } {
2444
+ set quote '
2445
+ } else {
2446
+ set quote $quoted
2447
+ }
2448
+ }
2449
+ ::msgcat::mcset $locale TIME_FORMAT $timefmt
2450
+ }
2451
+
2452
+ catch {
2453
+ ::msgcat::mcset $locale DATE_TIME_FORMAT "$datefmt $timefmt"
2454
+ }
2455
+ catch {
2456
+ ::msgcat::mcset $locale LOCALE_DATE_TIME_FORMAT "$ldatefmt $timefmt"
2457
+ }
2458
+
2459
+ return
2460
+
2461
+ }
2462
+
2463
+ #----------------------------------------------------------------------
2464
+ #
2465
+ # LocalizeFormat --
2466
+ #
2467
+ # Map away locale-dependent format groups in a clock format.
2468
+ #
2469
+ # Parameters:
2470
+ # locale -- Current [mclocale] locale, supplied to avoid
2471
+ # an extra call
2472
+ # format -- Format supplied to [clock scan] or [clock format]
2473
+ #
2474
+ # Results:
2475
+ # Returns the string with locale-dependent composite format groups
2476
+ # substituted out.
2477
+ #
2478
+ # Side effects:
2479
+ # None.
2480
+ #
2481
+ #----------------------------------------------------------------------
2482
+
2483
+ proc ::tcl::clock::LocalizeFormat { locale format } {
2484
+
2485
+ # message catalog key to cache this format
2486
+ set key FORMAT_$format
2487
+
2488
+ if { [::msgcat::mcexists -exactlocale -exactnamespace $key] } {
2489
+ return [mc $key]
2490
+ }
2491
+ # Handle locale-dependent format groups by mapping them out of the format
2492
+ # string. Note that the order of the [string map] operations is
2493
+ # significant because later formats can refer to later ones; for example
2494
+ # %c can refer to %X, which in turn can refer to %T.
2495
+
2496
+ set list {
2497
+ %% %%
2498
+ %D %m/%d/%Y
2499
+ %+ {%a %b %e %H:%M:%S %Z %Y}
2500
+ }
2501
+ lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]]
2502
+ lappend list %T [string map $list [mc TIME_FORMAT_24_SECS]]
2503
+ lappend list %R [string map $list [mc TIME_FORMAT_24]]
2504
+ lappend list %r [string map $list [mc TIME_FORMAT_12]]
2505
+ lappend list %X [string map $list [mc TIME_FORMAT]]
2506
+ lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]]
2507
+ lappend list %x [string map $list [mc DATE_FORMAT]]
2508
+ lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]]
2509
+ lappend list %c [string map $list [mc DATE_TIME_FORMAT]]
2510
+ lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]]
2511
+ set format [string map $list $format]
2512
+
2513
+ ::msgcat::mcset $locale $key $format
2514
+ return $format
2515
+ }
2516
+
2517
+ #----------------------------------------------------------------------
2518
+ #
2519
+ # FormatNumericTimeZone --
2520
+ #
2521
+ # Formats a time zone as +hhmmss
2522
+ #
2523
+ # Parameters:
2524
+ # z - Time zone in seconds east of Greenwich
2525
+ #
2526
+ # Results:
2527
+ # Returns the time zone formatted in a numeric form
2528
+ #
2529
+ # Side effects:
2530
+ # None.
2531
+ #
2532
+ #----------------------------------------------------------------------
2533
+
2534
+ proc ::tcl::clock::FormatNumericTimeZone { z } {
2535
+ if { $z < 0 } {
2536
+ set z [expr { - $z }]
2537
+ set retval -
2538
+ } else {
2539
+ set retval +
2540
+ }
2541
+ append retval [::format %02d [expr { $z / 3600 }]]
2542
+ set z [expr { $z % 3600 }]
2543
+ append retval [::format %02d [expr { $z / 60 }]]
2544
+ set z [expr { $z % 60 }]
2545
+ if { $z != 0 } {
2546
+ append retval [::format %02d $z]
2547
+ }
2548
+ return $retval
2549
+ }
2550
+
2551
+ #----------------------------------------------------------------------
2552
+ #
2553
+ # FormatStarDate --
2554
+ #
2555
+ # Formats a date as a StarDate.
2556
+ #
2557
+ # Parameters:
2558
+ # date - Dictionary containing 'year', 'dayOfYear', and
2559
+ # 'localSeconds' fields.
2560
+ #
2561
+ # Results:
2562
+ # Returns the given date formatted as a StarDate.
2563
+ #
2564
+ # Side effects:
2565
+ # None.
2566
+ #
2567
+ # Jeff Hobbs put this in to support an atrocious pun about Tcl being
2568
+ # "Enterprise ready." Now we're stuck with it.
2569
+ #
2570
+ #----------------------------------------------------------------------
2571
+
2572
+ proc ::tcl::clock::FormatStarDate { date } {
2573
+ variable Roddenberry
2574
+
2575
+ # Get day of year, zero based
2576
+
2577
+ set doy [expr { [dict get $date dayOfYear] - 1 }]
2578
+
2579
+ # Determine whether the year is a leap year
2580
+
2581
+ set lp [IsGregorianLeapYear $date]
2582
+
2583
+ # Convert day of year to a fractional year
2584
+
2585
+ if { $lp } {
2586
+ set fractYear [expr { 1000 * $doy / 366 }]
2587
+ } else {
2588
+ set fractYear [expr { 1000 * $doy / 365 }]
2589
+ }
2590
+
2591
+ # Put together the StarDate
2592
+
2593
+ return [::format "Stardate %02d%03d.%1d" \
2594
+ [expr { [dict get $date year] - $Roddenberry }] \
2595
+ $fractYear \
2596
+ [expr { [dict get $date localSeconds] % 86400
2597
+ / ( 86400 / 10 ) }]]
2598
+ }
2599
+
2600
+ #----------------------------------------------------------------------
2601
+ #
2602
+ # ParseStarDate --
2603
+ #
2604
+ # Parses a StarDate
2605
+ #
2606
+ # Parameters:
2607
+ # year - Year from the Roddenberry epoch
2608
+ # fractYear - Fraction of a year specifiying the day of year.
2609
+ # fractDay - Fraction of a day
2610
+ #
2611
+ # Results:
2612
+ # Returns a count of seconds from the Posix epoch.
2613
+ #
2614
+ # Side effects:
2615
+ # None.
2616
+ #
2617
+ # Jeff Hobbs put this in to support an atrocious pun about Tcl being
2618
+ # "Enterprise ready." Now we're stuck with it.
2619
+ #
2620
+ #----------------------------------------------------------------------
2621
+
2622
+ proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
2623
+ variable Roddenberry
2624
+
2625
+ # Build a tentative date from year and fraction.
2626
+
2627
+ set date [dict create \
2628
+ gregorian 1 \
2629
+ era CE \
2630
+ year [expr { $year + $Roddenberry }] \
2631
+ dayOfYear [expr { $fractYear * 365 / 1000 + 1 }]]
2632
+ set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
2633
+
2634
+ # Determine whether the given year is a leap year
2635
+
2636
+ set lp [IsGregorianLeapYear $date]
2637
+
2638
+ # Reconvert the fractional year according to whether the given year is a
2639
+ # leap year
2640
+
2641
+ if { $lp } {
2642
+ dict set date dayOfYear \
2643
+ [expr { $fractYear * 366 / 1000 + 1 }]
2644
+ } else {
2645
+ dict set date dayOfYear \
2646
+ [expr { $fractYear * 365 / 1000 + 1 }]
2647
+ }
2648
+ dict unset date julianDay
2649
+ dict unset date gregorian
2650
+ set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
2651
+
2652
+ return [expr {
2653
+ 86400 * [dict get $date julianDay]
2654
+ - 210866803200
2655
+ + ( 86400 / 10 ) * $fractDay
2656
+ }]
2657
+ }
2658
+
2659
+ #----------------------------------------------------------------------
2660
+ #
2661
+ # ScanWide --
2662
+ #
2663
+ # Scans a wide integer from an input
2664
+ #
2665
+ # Parameters:
2666
+ # str - String containing a decimal wide integer
2667
+ #
2668
+ # Results:
2669
+ # Returns the string as a pure wide integer. Throws an error if the
2670
+ # string is misformatted or out of range.
2671
+ #
2672
+ #----------------------------------------------------------------------
2673
+
2674
+ proc ::tcl::clock::ScanWide { str } {
2675
+ set count [::scan $str {%ld %c} result junk]
2676
+ if { $count != 1 } {
2677
+ return -code error -errorcode [list CLOCK notAnInteger $str] \
2678
+ "\"$str\" is not an integer"
2679
+ }
2680
+ if { [incr result 0] != $str } {
2681
+ return -code error -errorcode [list CLOCK integervalueTooLarge] \
2682
+ "integer value too large to represent"
2683
+ }
2684
+ return $result
2685
+ }
2686
+
2687
+ #----------------------------------------------------------------------
2688
+ #
2689
+ # InterpretTwoDigitYear --
2690
+ #
2691
+ # Given a date that contains only the year of the century, determines
2692
+ # the target value of a two-digit year.
2693
+ #
2694
+ # Parameters:
2695
+ # date - Dictionary containing fields of the date.
2696
+ # baseTime - Base time relative to which the date is expressed.
2697
+ # twoDigitField - Name of the field that stores the two-digit year.
2698
+ # Default is 'yearOfCentury'
2699
+ # fourDigitField - Name of the field that will receive the four-digit
2700
+ # year. Default is 'year'
2701
+ #
2702
+ # Results:
2703
+ # Returns the dictionary augmented with the four-digit year, stored in
2704
+ # the given key.
2705
+ #
2706
+ # Side effects:
2707
+ # None.
2708
+ #
2709
+ # The current rule for interpreting a two-digit year is that the year shall be
2710
+ # between 1937 and 2037, thus staying within the range of a 32-bit signed
2711
+ # value for time. This rule may change to a sliding window in future
2712
+ # versions, so the 'baseTime' parameter (which is currently ignored) is
2713
+ # provided in the procedure signature.
2714
+ #
2715
+ #----------------------------------------------------------------------
2716
+
2717
+ proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
2718
+ { twoDigitField yearOfCentury }
2719
+ { fourDigitField year } } {
2720
+ set yr [dict get $date $twoDigitField]
2721
+ if { $yr <= 37 } {
2722
+ dict set date $fourDigitField [expr { $yr + 2000 }]
2723
+ } else {
2724
+ dict set date $fourDigitField [expr { $yr + 1900 }]
2725
+ }
2726
+ return $date
2727
+ }
2728
+
2729
+ #----------------------------------------------------------------------
2730
+ #
2731
+ # AssignBaseYear --
2732
+ #
2733
+ # Places the number of the current year into a dictionary.
2734
+ #
2735
+ # Parameters:
2736
+ # date - Dictionary value to update
2737
+ # baseTime - Base time from which to extract the year, expressed
2738
+ # in seconds from the Posix epoch
2739
+ # timezone - the time zone in which the date is being scanned
2740
+ # changeover - the Julian Day on which the Gregorian calendar
2741
+ # was adopted in the target locale.
2742
+ #
2743
+ # Results:
2744
+ # Returns the dictionary with the current year assigned.
2745
+ #
2746
+ # Side effects:
2747
+ # None.
2748
+ #
2749
+ #----------------------------------------------------------------------
2750
+
2751
+ proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
2752
+ variable TZData
2753
+
2754
+ # Find the Julian Day Number corresponding to the base time, and
2755
+ # find the Gregorian year corresponding to that Julian Day.
2756
+
2757
+ set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
2758
+
2759
+ # Store the converted year
2760
+
2761
+ dict set date era [dict get $date2 era]
2762
+ dict set date year [dict get $date2 year]
2763
+
2764
+ return $date
2765
+ }
2766
+
2767
+ #----------------------------------------------------------------------
2768
+ #
2769
+ # AssignBaseIso8601Year --
2770
+ #
2771
+ # Determines the base year in the ISO8601 fiscal calendar.
2772
+ #
2773
+ # Parameters:
2774
+ # date - Dictionary containing the fields of the date that
2775
+ # is to be augmented with the base year.
2776
+ # baseTime - Base time expressed in seconds from the Posix epoch.
2777
+ # timeZone - Target time zone
2778
+ # changeover - Julian Day of adoption of the Gregorian calendar in
2779
+ # the target locale.
2780
+ #
2781
+ # Results:
2782
+ # Returns the given date with "iso8601Year" set to the
2783
+ # base year.
2784
+ #
2785
+ # Side effects:
2786
+ # None.
2787
+ #
2788
+ #----------------------------------------------------------------------
2789
+
2790
+ proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
2791
+ variable TZData
2792
+
2793
+ # Find the Julian Day Number corresponding to the base time
2794
+
2795
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
2796
+
2797
+ # Calculate the ISO8601 date and transfer the year
2798
+
2799
+ dict set date era CE
2800
+ dict set date iso8601Year [dict get $date2 iso8601Year]
2801
+ return $date
2802
+ }
2803
+
2804
+ #----------------------------------------------------------------------
2805
+ #
2806
+ # AssignBaseMonth --
2807
+ #
2808
+ # Places the number of the current year and month into a
2809
+ # dictionary.
2810
+ #
2811
+ # Parameters:
2812
+ # date - Dictionary value to update
2813
+ # baseTime - Time from which the year and month are to be
2814
+ # obtained, expressed in seconds from the Posix epoch.
2815
+ # timezone - Name of the desired time zone
2816
+ # changeover - Julian Day on which the Gregorian calendar was adopted.
2817
+ #
2818
+ # Results:
2819
+ # Returns the dictionary with the base year and month assigned.
2820
+ #
2821
+ # Side effects:
2822
+ # None.
2823
+ #
2824
+ #----------------------------------------------------------------------
2825
+
2826
+ proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
2827
+ variable TZData
2828
+
2829
+ # Find the year and month corresponding to the base time
2830
+
2831
+ set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
2832
+ dict set date era [dict get $date2 era]
2833
+ dict set date year [dict get $date2 year]
2834
+ dict set date month [dict get $date2 month]
2835
+ return $date
2836
+ }
2837
+
2838
+ #----------------------------------------------------------------------
2839
+ #
2840
+ # AssignBaseWeek --
2841
+ #
2842
+ # Determines the base year and week in the ISO8601 fiscal calendar.
2843
+ #
2844
+ # Parameters:
2845
+ # date - Dictionary containing the fields of the date that
2846
+ # is to be augmented with the base year and week.
2847
+ # baseTime - Base time expressed in seconds from the Posix epoch.
2848
+ # changeover - Julian Day on which the Gregorian calendar was adopted
2849
+ # in the target locale.
2850
+ #
2851
+ # Results:
2852
+ # Returns the given date with "iso8601Year" set to the
2853
+ # base year and "iso8601Week" to the week number.
2854
+ #
2855
+ # Side effects:
2856
+ # None.
2857
+ #
2858
+ #----------------------------------------------------------------------
2859
+
2860
+ proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} {
2861
+ variable TZData
2862
+
2863
+ # Find the Julian Day Number corresponding to the base time
2864
+
2865
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
2866
+
2867
+ # Calculate the ISO8601 date and transfer the year
2868
+
2869
+ dict set date era CE
2870
+ dict set date iso8601Year [dict get $date2 iso8601Year]
2871
+ dict set date iso8601Week [dict get $date2 iso8601Week]
2872
+ return $date
2873
+ }
2874
+
2875
+ #----------------------------------------------------------------------
2876
+ #
2877
+ # AssignBaseJulianDay --
2878
+ #
2879
+ # Determines the base day for a time-of-day conversion.
2880
+ #
2881
+ # Parameters:
2882
+ # date - Dictionary that is to get the base day
2883
+ # baseTime - Base time expressed in seconds from the Posix epoch
2884
+ # changeover - Julian day on which the Gregorian calendar was
2885
+ # adpoted in the target locale.
2886
+ #
2887
+ # Results:
2888
+ # Returns the given dictionary augmented with a 'julianDay' field
2889
+ # that contains the base day.
2890
+ #
2891
+ # Side effects:
2892
+ # None.
2893
+ #
2894
+ #----------------------------------------------------------------------
2895
+
2896
+ proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } {
2897
+ variable TZData
2898
+
2899
+ # Find the Julian Day Number corresponding to the base time
2900
+
2901
+ set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
2902
+ dict set date julianDay [dict get $date2 julianDay]
2903
+
2904
+ return $date
2905
+ }
2906
+
2907
+ #----------------------------------------------------------------------
2908
+ #
2909
+ # InterpretHMSP --
2910
+ #
2911
+ # Interprets a time in the form "hh:mm:ss am".
2912
+ #
2913
+ # Parameters:
2914
+ # date -- Dictionary containing "hourAMPM", "minute", "second"
2915
+ # and "amPmIndicator" fields.
2916
+ #
2917
+ # Results:
2918
+ # Returns the number of seconds from local midnight.
2919
+ #
2920
+ # Side effects:
2921
+ # None.
2922
+ #
2923
+ #----------------------------------------------------------------------
2924
+
2925
+ proc ::tcl::clock::InterpretHMSP { date } {
2926
+ set hr [dict get $date hourAMPM]
2927
+ if { $hr == 12 } {
2928
+ set hr 0
2929
+ }
2930
+ if { [dict get $date amPmIndicator] } {
2931
+ incr hr 12
2932
+ }
2933
+ dict set date hour $hr
2934
+ return [InterpretHMS $date[set date {}]]
2935
+ }
2936
+
2937
+ #----------------------------------------------------------------------
2938
+ #
2939
+ # InterpretHMS --
2940
+ #
2941
+ # Interprets a 24-hour time "hh:mm:ss"
2942
+ #
2943
+ # Parameters:
2944
+ # date -- Dictionary containing the "hour", "minute" and "second"
2945
+ # fields.
2946
+ #
2947
+ # Results:
2948
+ # Returns the given dictionary augmented with a "secondOfDay"
2949
+ # field containing the number of seconds from local midnight.
2950
+ #
2951
+ # Side effects:
2952
+ # None.
2953
+ #
2954
+ #----------------------------------------------------------------------
2955
+
2956
+ proc ::tcl::clock::InterpretHMS { date } {
2957
+ return [expr {
2958
+ ( [dict get $date hour] * 60
2959
+ + [dict get $date minute] ) * 60
2960
+ + [dict get $date second]
2961
+ }]
2962
+ }
2963
+
2964
+ #----------------------------------------------------------------------
2965
+ #
2966
+ # GetSystemTimeZone --
2967
+ #
2968
+ # Determines the system time zone, which is the default for the
2969
+ # 'clock' command if no other zone is supplied.
2970
+ #
2971
+ # Parameters:
2972
+ # None.
2973
+ #
2974
+ # Results:
2975
+ # Returns the system time zone.
2976
+ #
2977
+ # Side effects:
2978
+ # Stores the sustem time zone in the 'CachedSystemTimeZone'
2979
+ # variable, since determining it may be an expensive process.
2980
+ #
2981
+ #----------------------------------------------------------------------
2982
+
2983
+ proc ::tcl::clock::GetSystemTimeZone {} {
2984
+ variable CachedSystemTimeZone
2985
+ variable TimeZoneBad
2986
+
2987
+ if {[set result [getenv TCL_TZ]] ne {}} {
2988
+ set timezone $result
2989
+ } elseif {[set result [getenv TZ]] ne {}} {
2990
+ set timezone $result
2991
+ } else {
2992
+ # Cache the time zone only if it was detected by one of the
2993
+ # expensive methods.
2994
+ if { [info exists CachedSystemTimeZone] } {
2995
+ set timezone $CachedSystemTimeZone
2996
+ } elseif { $::tcl_platform(platform) eq {windows} } {
2997
+ set timezone [GuessWindowsTimeZone]
2998
+ } elseif { [file exists /etc/localtime]
2999
+ && ![catch {ReadZoneinfoFile \
3000
+ Tcl/Localtime /etc/localtime}] } {
3001
+ set timezone :Tcl/Localtime
3002
+ } else {
3003
+ set timezone :localtime
3004
+ }
3005
+ set CachedSystemTimeZone $timezone
3006
+ }
3007
+ if { ![dict exists $TimeZoneBad $timezone] } {
3008
+ dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}]
3009
+ }
3010
+ if { [dict get $TimeZoneBad $timezone] } {
3011
+ return :localtime
3012
+ } else {
3013
+ return $timezone
3014
+ }
3015
+ }
3016
+
3017
+ #----------------------------------------------------------------------
3018
+ #
3019
+ # ConvertLegacyTimeZone --
3020
+ #
3021
+ # Given an alphanumeric time zone identifier and the system time zone,
3022
+ # convert the alphanumeric identifier to an unambiguous time zone.
3023
+ #
3024
+ # Parameters:
3025
+ # tzname - Name of the time zone to convert
3026
+ #
3027
+ # Results:
3028
+ # Returns a time zone name corresponding to tzname, but in an
3029
+ # unambiguous form, generally +hhmm.
3030
+ #
3031
+ # This procedure is implemented primarily to allow the parsing of RFC822
3032
+ # date/time strings. Processing a time zone name on input is not recommended
3033
+ # practice, because there is considerable room for ambiguity; for instance, is
3034
+ # BST Brazilian Standard Time, or British Summer Time?
3035
+ #
3036
+ #----------------------------------------------------------------------
3037
+
3038
+ proc ::tcl::clock::ConvertLegacyTimeZone { tzname } {
3039
+ variable LegacyTimeZone
3040
+
3041
+ set tzname [string tolower $tzname]
3042
+ if { ![dict exists $LegacyTimeZone $tzname] } {
3043
+ return -code error -errorcode [list CLOCK badTZName $tzname] \
3044
+ "time zone \"$tzname\" not found"
3045
+ }
3046
+ return [dict get $LegacyTimeZone $tzname]
3047
+ }
3048
+
3049
+ #----------------------------------------------------------------------
3050
+ #
3051
+ # SetupTimeZone --
3052
+ #
3053
+ # Given the name or specification of a time zone, sets up its in-memory
3054
+ # data.
3055
+ #
3056
+ # Parameters:
3057
+ # tzname - Name of a time zone
3058
+ #
3059
+ # Results:
3060
+ # Unless the time zone is ':localtime', sets the TZData array to contain
3061
+ # the lookup table for local<->UTC conversion. Returns an error if the
3062
+ # time zone cannot be parsed.
3063
+ #
3064
+ #----------------------------------------------------------------------
3065
+
3066
+ proc ::tcl::clock::SetupTimeZone { timezone } {
3067
+ variable TZData
3068
+
3069
+ if {! [info exists TZData($timezone)] } {
3070
+ variable MINWIDE
3071
+ if { $timezone eq {:localtime} } {
3072
+ # Nothing to do, we'll convert using the localtime function
3073
+
3074
+ } elseif {
3075
+ [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
3076
+ -> s hh mm ss]
3077
+ } then {
3078
+ # Make a fixed offset
3079
+
3080
+ ::scan $hh %d hh
3081
+ if { $mm eq {} } {
3082
+ set mm 0
3083
+ } else {
3084
+ ::scan $mm %d mm
3085
+ }
3086
+ if { $ss eq {} } {
3087
+ set ss 0
3088
+ } else {
3089
+ ::scan $ss %d ss
3090
+ }
3091
+ set offset [expr { ( $hh * 60 + $mm ) * 60 + $ss }]
3092
+ if { $s eq {-} } {
3093
+ set offset [expr { - $offset }]
3094
+ }
3095
+ set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]]
3096
+
3097
+ } elseif { [string index $timezone 0] eq {:} } {
3098
+ # Convert using a time zone file
3099
+
3100
+ if {
3101
+ [catch {
3102
+ LoadTimeZoneFile [string range $timezone 1 end]
3103
+ }] && [catch {
3104
+ LoadZoneinfoFile [string range $timezone 1 end]
3105
+ }]
3106
+ } then {
3107
+ return -code error \
3108
+ -errorcode [list CLOCK badTimeZone $timezone] \
3109
+ "time zone \"$timezone\" not found"
3110
+ }
3111
+ } elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } {
3112
+ # This looks like a POSIX time zone - try to process it
3113
+
3114
+ if { [catch {ProcessPosixTimeZone $tzfields} data opts] } {
3115
+ if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } {
3116
+ dict unset opts -errorinfo
3117
+ }
3118
+ return -options $opts $data
3119
+ } else {
3120
+ set TZData($timezone) $data
3121
+ }
3122
+
3123
+ } else {
3124
+ # We couldn't parse this as a POSIX time zone. Try again with a
3125
+ # time zone file - this time without a colon
3126
+
3127
+ if { [catch { LoadTimeZoneFile $timezone }]
3128
+ && [catch { LoadZoneinfoFile $timezone } - opts] } {
3129
+ dict unset opts -errorinfo
3130
+ return -options $opts "time zone $timezone not found"
3131
+ }
3132
+ set TZData($timezone) $TZData(:$timezone)
3133
+ }
3134
+ }
3135
+
3136
+ return
3137
+ }
3138
+
3139
+ #----------------------------------------------------------------------
3140
+ #
3141
+ # GuessWindowsTimeZone --
3142
+ #
3143
+ # Determines the system time zone on windows.
3144
+ #
3145
+ # Parameters:
3146
+ # None.
3147
+ #
3148
+ # Results:
3149
+ # Returns a time zone specifier that corresponds to the system time zone
3150
+ # information found in the Registry.
3151
+ #
3152
+ # Bugs:
3153
+ # Fixed dates for DST change are unimplemented at present, because no
3154
+ # time zone information supplied with Windows actually uses them!
3155
+ #
3156
+ # On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified,
3157
+ # GuessWindowsTimeZone looks in the Registry for the system time zone
3158
+ # information. It then attempts to find an entry in WinZoneInfo for a time
3159
+ # zone that uses the same rules. If it finds one, it returns it; otherwise,
3160
+ # it constructs a Posix-style time zone string and returns that.
3161
+ #
3162
+ #----------------------------------------------------------------------
3163
+
3164
+ proc ::tcl::clock::GuessWindowsTimeZone {} {
3165
+ variable WinZoneInfo
3166
+ variable NoRegistry
3167
+ variable TimeZoneBad
3168
+
3169
+ if { [info exists NoRegistry] } {
3170
+ return :localtime
3171
+ }
3172
+
3173
+ # Dredge time zone information out of the registry
3174
+
3175
+ if { [catch {
3176
+ set rpath HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\TimeZoneInformation
3177
+ set data [list \
3178
+ [expr { -60
3179
+ * [registry get $rpath Bias] }] \
3180
+ [expr { -60
3181
+ * [registry get $rpath StandardBias] }] \
3182
+ [expr { -60 \
3183
+ * [registry get $rpath DaylightBias] }]]
3184
+ set stdtzi [registry get $rpath StandardStart]
3185
+ foreach ind {0 2 14 4 6 8 10 12} {
3186
+ binary scan $stdtzi @${ind}s val
3187
+ lappend data $val
3188
+ }
3189
+ set daytzi [registry get $rpath DaylightStart]
3190
+ foreach ind {0 2 14 4 6 8 10 12} {
3191
+ binary scan $daytzi @${ind}s val
3192
+ lappend data $val
3193
+ }
3194
+ }] } {
3195
+ # Missing values in the Registry - bail out
3196
+
3197
+ return :localtime
3198
+ }
3199
+
3200
+ # Make up a Posix time zone specifier if we can't find one. Check here
3201
+ # that the tzdata file exists, in case we're running in an environment
3202
+ # (e.g. starpack) where tzdata is incomplete. (Bug 1237907)
3203
+
3204
+ if { [dict exists $WinZoneInfo $data] } {
3205
+ set tzname [dict get $WinZoneInfo $data]
3206
+ if { ! [dict exists $TimeZoneBad $tzname] } {
3207
+ dict set TimeZoneBad $tzname [catch {SetupTimeZone $tzname}]
3208
+ }
3209
+ } else {
3210
+ set tzname {}
3211
+ }
3212
+ if { $tzname eq {} || [dict get $TimeZoneBad $tzname] } {
3213
+ lassign $data \
3214
+ bias stdBias dstBias \
3215
+ stdYear stdMonth stdDayOfWeek stdDayOfMonth \
3216
+ stdHour stdMinute stdSecond stdMillisec \
3217
+ dstYear dstMonth dstDayOfWeek dstDayOfMonth \
3218
+ dstHour dstMinute dstSecond dstMillisec
3219
+ set stdDelta [expr { $bias + $stdBias }]
3220
+ set dstDelta [expr { $bias + $dstBias }]
3221
+ if { $stdDelta <= 0 } {
3222
+ set stdSignum +
3223
+ set stdDelta [expr { - $stdDelta }]
3224
+ set dispStdSignum -
3225
+ } else {
3226
+ set stdSignum -
3227
+ set dispStdSignum +
3228
+ }
3229
+ set hh [::format %02d [expr { $stdDelta / 3600 }]]
3230
+ set mm [::format %02d [expr { ($stdDelta / 60 ) % 60 }]]
3231
+ set ss [::format %02d [expr { $stdDelta % 60 }]]
3232
+ set tzname {}
3233
+ append tzname < $dispStdSignum $hh $mm > $stdSignum $hh : $mm : $ss
3234
+ if { $stdMonth >= 0 } {
3235
+ if { $dstDelta <= 0 } {
3236
+ set dstSignum +
3237
+ set dstDelta [expr { - $dstDelta }]
3238
+ set dispDstSignum -
3239
+ } else {
3240
+ set dstSignum -
3241
+ set dispDstSignum +
3242
+ }
3243
+ set hh [::format %02d [expr { $dstDelta / 3600 }]]
3244
+ set mm [::format %02d [expr { ($dstDelta / 60 ) % 60 }]]
3245
+ set ss [::format %02d [expr { $dstDelta % 60 }]]
3246
+ append tzname < $dispDstSignum $hh $mm > $dstSignum $hh : $mm : $ss
3247
+ if { $dstYear == 0 } {
3248
+ append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek
3249
+ } else {
3250
+ # I have not been able to find any locale on which Windows
3251
+ # converts time zone on a fixed day of the year, hence don't
3252
+ # know how to interpret the fields. If someone can inform me,
3253
+ # I'd be glad to code it up. For right now, we bail out in
3254
+ # such a case.
3255
+ return :localtime
3256
+ }
3257
+ append tzname / [::format %02d $dstHour] \
3258
+ : [::format %02d $dstMinute] \
3259
+ : [::format %02d $dstSecond]
3260
+ if { $stdYear == 0 } {
3261
+ append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek
3262
+ } else {
3263
+ # I have not been able to find any locale on which Windows
3264
+ # converts time zone on a fixed day of the year, hence don't
3265
+ # know how to interpret the fields. If someone can inform me,
3266
+ # I'd be glad to code it up. For right now, we bail out in
3267
+ # such a case.
3268
+ return :localtime
3269
+ }
3270
+ append tzname / [::format %02d $stdHour] \
3271
+ : [::format %02d $stdMinute] \
3272
+ : [::format %02d $stdSecond]
3273
+ }
3274
+ dict set WinZoneInfo $data $tzname
3275
+ }
3276
+
3277
+ return [dict get $WinZoneInfo $data]
3278
+ }
3279
+
3280
+ #----------------------------------------------------------------------
3281
+ #
3282
+ # LoadTimeZoneFile --
3283
+ #
3284
+ # Load the data file that specifies the conversion between a
3285
+ # given time zone and Greenwich.
3286
+ #
3287
+ # Parameters:
3288
+ # fileName -- Name of the file to load
3289
+ #
3290
+ # Results:
3291
+ # None.
3292
+ #
3293
+ # Side effects:
3294
+ # TZData(:fileName) contains the time zone data
3295
+ #
3296
+ #----------------------------------------------------------------------
3297
+
3298
+ proc ::tcl::clock::LoadTimeZoneFile { fileName } {
3299
+ variable DataDir
3300
+ variable TZData
3301
+
3302
+ if { [info exists TZData($fileName)] } {
3303
+ return
3304
+ }
3305
+
3306
+ # Since an unsafe interp uses the [clock] command in the parent, this code
3307
+ # is security sensitive. Make sure that the path name cannot escape the
3308
+ # given directory.
3309
+
3310
+ if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
3311
+ return -code error \
3312
+ -errorcode [list CLOCK badTimeZone $:fileName] \
3313
+ "time zone \":$fileName\" not valid"
3314
+ }
3315
+ try {
3316
+ source -encoding utf-8 [file join $DataDir $fileName]
3317
+ } on error {} {
3318
+ return -code error \
3319
+ -errorcode [list CLOCK badTimeZone :$fileName] \
3320
+ "time zone \":$fileName\" not found"
3321
+ }
3322
+ return
3323
+ }
3324
+
3325
+ #----------------------------------------------------------------------
3326
+ #
3327
+ # LoadZoneinfoFile --
3328
+ #
3329
+ # Loads a binary time zone information file in Olson format.
3330
+ #
3331
+ # Parameters:
3332
+ # fileName - Relative path name of the file to load.
3333
+ #
3334
+ # Results:
3335
+ # Returns an empty result normally; returns an error if no Olson file
3336
+ # was found or the file was malformed in some way.
3337
+ #
3338
+ # Side effects:
3339
+ # TZData(:fileName) contains the time zone data
3340
+ #
3341
+ #----------------------------------------------------------------------
3342
+
3343
+ proc ::tcl::clock::LoadZoneinfoFile { fileName } {
3344
+ variable ZoneinfoPaths
3345
+
3346
+ # Since an unsafe interp uses the [clock] command in the parent, this code
3347
+ # is security sensitive. Make sure that the path name cannot escape the
3348
+ # given directory.
3349
+
3350
+ if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
3351
+ return -code error \
3352
+ -errorcode [list CLOCK badTimeZone $:fileName] \
3353
+ "time zone \":$fileName\" not valid"
3354
+ }
3355
+ foreach d $ZoneinfoPaths {
3356
+ set fname [file join $d $fileName]
3357
+ if { [file readable $fname] && [file isfile $fname] } {
3358
+ break
3359
+ }
3360
+ unset fname
3361
+ }
3362
+ ReadZoneinfoFile $fileName $fname
3363
+ }
3364
+
3365
+ #----------------------------------------------------------------------
3366
+ #
3367
+ # ReadZoneinfoFile --
3368
+ #
3369
+ # Loads a binary time zone information file in Olson format.
3370
+ #
3371
+ # Parameters:
3372
+ # fileName - Name of the time zone (relative path name of the
3373
+ # file).
3374
+ # fname - Absolute path name of the file.
3375
+ #
3376
+ # Results:
3377
+ # Returns an empty result normally; returns an error if no Olson file
3378
+ # was found or the file was malformed in some way.
3379
+ #
3380
+ # Side effects:
3381
+ # TZData(:fileName) contains the time zone data
3382
+ #
3383
+ #----------------------------------------------------------------------
3384
+
3385
+ proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
3386
+ variable MINWIDE
3387
+ variable TZData
3388
+ if { ![file exists $fname] } {
3389
+ return -code error "$fileName not found"
3390
+ }
3391
+
3392
+ if { [file size $fname] > 262144 } {
3393
+ return -code error "$fileName too big"
3394
+ }
3395
+
3396
+ # Suck in all the data from the file
3397
+
3398
+ set f [open $fname r]
3399
+ fconfigure $f -translation binary
3400
+ set d [read $f]
3401
+ close $f
3402
+
3403
+ # The file begins with a magic number, sixteen reserved bytes, and then
3404
+ # six 4-byte integers giving counts of fileds in the file.
3405
+
3406
+ binary scan $d a4a1x15IIIIII \
3407
+ magic version nIsGMT nIsStd nLeap nTime nType nChar
3408
+ set seek 44
3409
+ set ilen 4
3410
+ set iformat I
3411
+ if { $magic != {TZif} } {
3412
+ return -code error "$fileName not a time zone information file"
3413
+ }
3414
+ if { $nType > 255 } {
3415
+ return -code error "$fileName contains too many time types"
3416
+ }
3417
+ # Accept only Posix-style zoneinfo. Sorry, 'leaps' bigots.
3418
+ if { $nLeap != 0 } {
3419
+ return -code error "$fileName contains leap seconds"
3420
+ }
3421
+
3422
+ # In a version 2 file, we use the second part of the file, which contains
3423
+ # 64-bit transition times.
3424
+
3425
+ if {$version eq "2"} {
3426
+ set seek [expr {
3427
+ 44
3428
+ + 5 * $nTime
3429
+ + 6 * $nType
3430
+ + 4 * $nLeap
3431
+ + $nIsStd
3432
+ + $nIsGMT
3433
+ + $nChar
3434
+ }]
3435
+ binary scan $d @${seek}a4a1x15IIIIII \
3436
+ magic version nIsGMT nIsStd nLeap nTime nType nChar
3437
+ if {$magic ne {TZif}} {
3438
+ return -code error "seek address $seek miscomputed, magic = $magic"
3439
+ }
3440
+ set iformat W
3441
+ set ilen 8
3442
+ incr seek 44
3443
+ }
3444
+
3445
+ # Next come ${nTime} transition times, followed by ${nTime} time type
3446
+ # codes. The type codes are unsigned 1-byte quantities. We insert an
3447
+ # arbitrary start time in front of the transitions.
3448
+
3449
+ binary scan $d @${seek}${iformat}${nTime}c${nTime} times tempCodes
3450
+ incr seek [expr { ($ilen + 1) * $nTime }]
3451
+ set times [linsert $times 0 $MINWIDE]
3452
+ set codes {}
3453
+ foreach c $tempCodes {
3454
+ lappend codes [expr { $c & 0xFF }]
3455
+ }
3456
+ set codes [linsert $codes 0 0]
3457
+
3458
+ # Next come ${nType} time type descriptions, each of which has an offset
3459
+ # (seconds east of GMT), a DST indicator, and an index into the
3460
+ # abbreviation text.
3461
+
3462
+ for { set i 0 } { $i < $nType } { incr i } {
3463
+ binary scan $d @${seek}Icc gmtOff isDst abbrInd
3464
+ lappend types [list $gmtOff $isDst $abbrInd]
3465
+ incr seek 6
3466
+ }
3467
+
3468
+ # Next come $nChar characters of time zone name abbreviations, which are
3469
+ # null-terminated.
3470
+ # We build them up into a dictionary indexed by character index, because
3471
+ # that's what's in the indices above.
3472
+
3473
+ binary scan $d @${seek}a${nChar} abbrs
3474
+ incr seek ${nChar}
3475
+ set abbrList [split $abbrs \0]
3476
+ set i 0
3477
+ set abbrevs {}
3478
+ foreach a $abbrList {
3479
+ for {set j 0} {$j <= [string length $a]} {incr j} {
3480
+ dict set abbrevs $i [string range $a $j end]
3481
+ incr i
3482
+ }
3483
+ }
3484
+
3485
+ # Package up a list of tuples, each of which contains transition time,
3486
+ # seconds east of Greenwich, DST flag and time zone abbreviation.
3487
+
3488
+ set r {}
3489
+ set lastTime $MINWIDE
3490
+ foreach t $times c $codes {
3491
+ if { $t < $lastTime } {
3492
+ return -code error "$fileName has times out of order"
3493
+ }
3494
+ set lastTime $t
3495
+ lassign [lindex $types $c] gmtoff isDst abbrInd
3496
+ set abbrev [dict get $abbrevs $abbrInd]
3497
+ lappend r [list $t $gmtoff $isDst $abbrev]
3498
+ }
3499
+
3500
+ # In a version 2 file, there is also a POSIX-style time zone description
3501
+ # at the very end of the file. To get to it, skip over nLeap leap second
3502
+ # values (8 bytes each),
3503
+ # nIsStd standard/DST indicators and nIsGMT UTC/local indicators.
3504
+
3505
+ if {$version eq {2}} {
3506
+ set seek [expr {$seek + 8 * $nLeap + $nIsStd + $nIsGMT + 1}]
3507
+ set last [string first \n $d $seek]
3508
+ set posix [string range $d $seek [expr {$last-1}]]
3509
+ if {[llength $posix] > 0} {
3510
+ set posixFields [ParsePosixTimeZone $posix]
3511
+ foreach tuple [ProcessPosixTimeZone $posixFields] {
3512
+ lassign $tuple t gmtoff isDst abbrev
3513
+ if {$t > $lastTime} {
3514
+ lappend r $tuple
3515
+ }
3516
+ }
3517
+ }
3518
+ }
3519
+
3520
+ set TZData(:$fileName) $r
3521
+
3522
+ return
3523
+ }
3524
+
3525
+ #----------------------------------------------------------------------
3526
+ #
3527
+ # ParsePosixTimeZone --
3528
+ #
3529
+ # Parses the TZ environment variable in Posix form
3530
+ #
3531
+ # Parameters:
3532
+ # tz Time zone specifier to be interpreted
3533
+ #
3534
+ # Results:
3535
+ # Returns a dictionary whose values contain the various pieces of the
3536
+ # time zone specification.
3537
+ #
3538
+ # Side effects:
3539
+ # None.
3540
+ #
3541
+ # Errors:
3542
+ # Throws an error if the syntax of the time zone is incorrect.
3543
+ #
3544
+ # The following keys are present in the dictionary:
3545
+ # stdName - Name of the time zone when Daylight Saving Time
3546
+ # is not in effect.
3547
+ # stdSignum - Sign (+, -, or empty) of the offset from Greenwich
3548
+ # to the given (non-DST) time zone. + and the empty
3549
+ # string denote zones west of Greenwich, - denotes east
3550
+ # of Greenwich; this is contrary to the ISO convention
3551
+ # but follows Posix.
3552
+ # stdHours - Hours part of the offset from Greenwich to the given
3553
+ # (non-DST) time zone.
3554
+ # stdMinutes - Minutes part of the offset from Greenwich to the
3555
+ # given (non-DST) time zone. Empty denotes zero.
3556
+ # stdSeconds - Seconds part of the offset from Greenwich to the
3557
+ # given (non-DST) time zone. Empty denotes zero.
3558
+ # dstName - Name of the time zone when DST is in effect, or the
3559
+ # empty string if the time zone does not observe Daylight
3560
+ # Saving Time.
3561
+ # dstSignum, dstHours, dstMinutes, dstSeconds -
3562
+ # Fields corresponding to stdSignum, stdHours, stdMinutes,
3563
+ # stdSeconds for the Daylight Saving Time version of the
3564
+ # time zone. If dstHours is empty, it is presumed to be 1.
3565
+ # startDayOfYear - The ordinal number of the day of the year on which
3566
+ # Daylight Saving Time begins. If this field is
3567
+ # empty, then DST begins on a given month-week-day,
3568
+ # as below.
3569
+ # startJ - The letter J, or an empty string. If a J is present in
3570
+ # this field, then startDayOfYear does not count February 29
3571
+ # even in leap years.
3572
+ # startMonth - The number of the month in which Daylight Saving Time
3573
+ # begins, supplied if startDayOfYear is empty. If both
3574
+ # startDayOfYear and startMonth are empty, then US rules
3575
+ # are presumed.
3576
+ # startWeekOfMonth - The number of the week in the month in which
3577
+ # Daylight Saving Time begins, in the range 1-5.
3578
+ # 5 denotes the last week of the month even in a
3579
+ # 4-week month.
3580
+ # startDayOfWeek - The number of the day of the week (Sunday=0,
3581
+ # Saturday=6) on which Daylight Saving Time begins.
3582
+ # startHours - The hours part of the time of day at which Daylight
3583
+ # Saving Time begins. An empty string is presumed to be 2.
3584
+ # startMinutes - The minutes part of the time of day at which DST begins.
3585
+ # An empty string is presumed zero.
3586
+ # startSeconds - The seconds part of the time of day at which DST begins.
3587
+ # An empty string is presumed zero.
3588
+ # endDayOfYear, endJ, endMonth, endWeekOfMonth, endDayOfWeek,
3589
+ # endHours, endMinutes, endSeconds -
3590
+ # Specify the end of DST in the same way that the start* fields
3591
+ # specify the beginning of DST.
3592
+ #
3593
+ # This procedure serves only to break the time specifier into fields. No
3594
+ # attempt is made to canonicalize the fields or supply default values.
3595
+ #
3596
+ #----------------------------------------------------------------------
3597
+
3598
+ proc ::tcl::clock::ParsePosixTimeZone { tz } {
3599
+ if {[regexp -expanded -nocase -- {
3600
+ ^
3601
+ # 1 - Standard time zone name
3602
+ ([[:alpha:]]+ | <[-+[:alnum:]]+>)
3603
+ # 2 - Standard time zone offset, signum
3604
+ ([-+]?)
3605
+ # 3 - Standard time zone offset, hours
3606
+ ([[:digit:]]{1,2})
3607
+ (?:
3608
+ # 4 - Standard time zone offset, minutes
3609
+ : ([[:digit:]]{1,2})
3610
+ (?:
3611
+ # 5 - Standard time zone offset, seconds
3612
+ : ([[:digit:]]{1,2} )
3613
+ )?
3614
+ )?
3615
+ (?:
3616
+ # 6 - DST time zone name
3617
+ ([[:alpha:]]+ | <[-+[:alnum:]]+>)
3618
+ (?:
3619
+ (?:
3620
+ # 7 - DST time zone offset, signum
3621
+ ([-+]?)
3622
+ # 8 - DST time zone offset, hours
3623
+ ([[:digit:]]{1,2})
3624
+ (?:
3625
+ # 9 - DST time zone offset, minutes
3626
+ : ([[:digit:]]{1,2})
3627
+ (?:
3628
+ # 10 - DST time zone offset, seconds
3629
+ : ([[:digit:]]{1,2})
3630
+ )?
3631
+ )?
3632
+ )?
3633
+ (?:
3634
+ ,
3635
+ (?:
3636
+ # 11 - Optional J in n and Jn form 12 - Day of year
3637
+ ( J ? ) ( [[:digit:]]+ )
3638
+ | M
3639
+ # 13 - Month number 14 - Week of month 15 - Day of week
3640
+ ( [[:digit:]] + )
3641
+ [.] ( [[:digit:]] + )
3642
+ [.] ( [[:digit:]] + )
3643
+ )
3644
+ (?:
3645
+ # 16 - Start time of DST - hours
3646
+ / ( [[:digit:]]{1,2} )
3647
+ (?:
3648
+ # 17 - Start time of DST - minutes
3649
+ : ( [[:digit:]]{1,2} )
3650
+ (?:
3651
+ # 18 - Start time of DST - seconds
3652
+ : ( [[:digit:]]{1,2} )
3653
+ )?
3654
+ )?
3655
+ )?
3656
+ ,
3657
+ (?:
3658
+ # 19 - Optional J in n and Jn form 20 - Day of year
3659
+ ( J ? ) ( [[:digit:]]+ )
3660
+ | M
3661
+ # 21 - Month number 22 - Week of month 23 - Day of week
3662
+ ( [[:digit:]] + )
3663
+ [.] ( [[:digit:]] + )
3664
+ [.] ( [[:digit:]] + )
3665
+ )
3666
+ (?:
3667
+ # 24 - End time of DST - hours
3668
+ / ( [[:digit:]]{1,2} )
3669
+ (?:
3670
+ # 25 - End time of DST - minutes
3671
+ : ( [[:digit:]]{1,2} )
3672
+ (?:
3673
+ # 26 - End time of DST - seconds
3674
+ : ( [[:digit:]]{1,2} )
3675
+ )?
3676
+ )?
3677
+ )?
3678
+ )?
3679
+ )?
3680
+ )?
3681
+ $
3682
+ } $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \
3683
+ x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \
3684
+ x(startJ) x(startDayOfYear) \
3685
+ x(startMonth) x(startWeekOfMonth) x(startDayOfWeek) \
3686
+ x(startHours) x(startMinutes) x(startSeconds) \
3687
+ x(endJ) x(endDayOfYear) \
3688
+ x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \
3689
+ x(endHours) x(endMinutes) x(endSeconds)] } {
3690
+ # it's a good timezone
3691
+
3692
+ return [array get x]
3693
+ }
3694
+
3695
+ return -code error\
3696
+ -errorcode [list CLOCK badTimeZone $tz] \
3697
+ "unable to parse time zone specification \"$tz\""
3698
+ }
3699
+
3700
+ #----------------------------------------------------------------------
3701
+ #
3702
+ # ProcessPosixTimeZone --
3703
+ #
3704
+ # Handle a Posix time zone after it's been broken out into fields.
3705
+ #
3706
+ # Parameters:
3707
+ # z - Dictionary returned from 'ParsePosixTimeZone'
3708
+ #
3709
+ # Results:
3710
+ # Returns time zone information for the 'TZData' array.
3711
+ #
3712
+ # Side effects:
3713
+ # None.
3714
+ #
3715
+ #----------------------------------------------------------------------
3716
+
3717
+ proc ::tcl::clock::ProcessPosixTimeZone { z } {
3718
+ variable MINWIDE
3719
+ variable TZData
3720
+
3721
+ # Determine the standard time zone name and seconds east of Greenwich
3722
+
3723
+ set stdName [dict get $z stdName]
3724
+ if { [string index $stdName 0] eq {<} } {
3725
+ set stdName [string range $stdName 1 end-1]
3726
+ }
3727
+ if { [dict get $z stdSignum] eq {-} } {
3728
+ set stdSignum +1
3729
+ } else {
3730
+ set stdSignum -1
3731
+ }
3732
+ set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
3733
+ if { [dict get $z stdMinutes] ne {} } {
3734
+ set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
3735
+ } else {
3736
+ set stdMinutes 0
3737
+ }
3738
+ if { [dict get $z stdSeconds] ne {} } {
3739
+ set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
3740
+ } else {
3741
+ set stdSeconds 0
3742
+ }
3743
+ set stdOffset [expr {
3744
+ (($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum
3745
+ }]
3746
+ set data [list [list $MINWIDE $stdOffset 0 $stdName]]
3747
+
3748
+ # If there's no daylight zone, we're done
3749
+
3750
+ set dstName [dict get $z dstName]
3751
+ if { $dstName eq {} } {
3752
+ return $data
3753
+ }
3754
+ if { [string index $dstName 0] eq {<} } {
3755
+ set dstName [string range $dstName 1 end-1]
3756
+ }
3757
+
3758
+ # Determine the daylight name
3759
+
3760
+ if { [dict get $z dstSignum] eq {-} } {
3761
+ set dstSignum +1
3762
+ } else {
3763
+ set dstSignum -1
3764
+ }
3765
+ if { [dict get $z dstHours] eq {} } {
3766
+ set dstOffset [expr { 3600 + $stdOffset }]
3767
+ } else {
3768
+ set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
3769
+ if { [dict get $z dstMinutes] ne {} } {
3770
+ set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
3771
+ } else {
3772
+ set dstMinutes 0
3773
+ }
3774
+ if { [dict get $z dstSeconds] ne {} } {
3775
+ set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
3776
+ } else {
3777
+ set dstSeconds 0
3778
+ }
3779
+ set dstOffset [expr {
3780
+ (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum
3781
+ }]
3782
+ }
3783
+
3784
+ # Fill in defaults for European or US DST rules
3785
+ # US start time is the second Sunday in March
3786
+ # EU start time is the last Sunday in March
3787
+ # US end time is the first Sunday in November.
3788
+ # EU end time is the last Sunday in October
3789
+
3790
+ if {
3791
+ [dict get $z startDayOfYear] eq {}
3792
+ && [dict get $z startMonth] eq {}
3793
+ } then {
3794
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
3795
+ # EU
3796
+ dict set z startWeekOfMonth 5
3797
+ if {$stdHours>2} {
3798
+ dict set z startHours 2
3799
+ } else {
3800
+ dict set z startHours [expr {$stdHours+1}]
3801
+ }
3802
+ } else {
3803
+ # US
3804
+ dict set z startWeekOfMonth 2
3805
+ dict set z startHours 2
3806
+ }
3807
+ dict set z startMonth 3
3808
+ dict set z startDayOfWeek 0
3809
+ dict set z startMinutes 0
3810
+ dict set z startSeconds 0
3811
+ }
3812
+ if {
3813
+ [dict get $z endDayOfYear] eq {}
3814
+ && [dict get $z endMonth] eq {}
3815
+ } then {
3816
+ if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
3817
+ # EU
3818
+ dict set z endMonth 10
3819
+ dict set z endWeekOfMonth 5
3820
+ if {$stdHours>2} {
3821
+ dict set z endHours 3
3822
+ } else {
3823
+ dict set z endHours [expr {$stdHours+2}]
3824
+ }
3825
+ } else {
3826
+ # US
3827
+ dict set z endMonth 11
3828
+ dict set z endWeekOfMonth 1
3829
+ dict set z endHours 2
3830
+ }
3831
+ dict set z endDayOfWeek 0
3832
+ dict set z endMinutes 0
3833
+ dict set z endSeconds 0
3834
+ }
3835
+
3836
+ # Put DST in effect in all years from 1916 to 2099.
3837
+
3838
+ for { set y 1916 } { $y < 2100 } { incr y } {
3839
+ set startTime [DeterminePosixDSTTime $z start $y]
3840
+ incr startTime [expr { - wide($stdOffset) }]
3841
+ set endTime [DeterminePosixDSTTime $z end $y]
3842
+ incr endTime [expr { - wide($dstOffset) }]
3843
+ if { $startTime < $endTime } {
3844
+ lappend data \
3845
+ [list $startTime $dstOffset 1 $dstName] \
3846
+ [list $endTime $stdOffset 0 $stdName]
3847
+ } else {
3848
+ lappend data \
3849
+ [list $endTime $stdOffset 0 $stdName] \
3850
+ [list $startTime $dstOffset 1 $dstName]
3851
+ }
3852
+ }
3853
+
3854
+ return $data
3855
+ }
3856
+
3857
+ #----------------------------------------------------------------------
3858
+ #
3859
+ # DeterminePosixDSTTime --
3860
+ #
3861
+ # Determines the time that Daylight Saving Time starts or ends from a
3862
+ # Posix time zone specification.
3863
+ #
3864
+ # Parameters:
3865
+ # z - Time zone data returned from ParsePosixTimeZone.
3866
+ # Missing fields are expected to be filled in with
3867
+ # default values.
3868
+ # bound - The word 'start' or 'end'
3869
+ # y - The year for which the transition time is to be determined.
3870
+ #
3871
+ # Results:
3872
+ # Returns the transition time as a count of seconds from the epoch. The
3873
+ # time is relative to the wall clock, not UTC.
3874
+ #
3875
+ #----------------------------------------------------------------------
3876
+
3877
+ proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
3878
+
3879
+ variable FEB_28
3880
+
3881
+ # Determine the start or end day of DST
3882
+
3883
+ set date [dict create era CE year $y]
3884
+ set doy [dict get $z ${bound}DayOfYear]
3885
+ if { $doy ne {} } {
3886
+
3887
+ # Time was specified as a day of the year
3888
+
3889
+ if { [dict get $z ${bound}J] ne {}
3890
+ && [IsGregorianLeapYear $y]
3891
+ && ( $doy > $FEB_28 ) } {
3892
+ incr doy
3893
+ }
3894
+ dict set date dayOfYear $doy
3895
+ set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222]
3896
+ } else {
3897
+ # Time was specified as a day of the week within a month
3898
+
3899
+ dict set date month [dict get $z ${bound}Month]
3900
+ dict set date dayOfWeek [dict get $z ${bound}DayOfWeek]
3901
+ set dowim [dict get $z ${bound}WeekOfMonth]
3902
+ if { $dowim >= 5 } {
3903
+ set dowim -1
3904
+ }
3905
+ dict set date dayOfWeekInMonth $dowim
3906
+ set date [GetJulianDayFromEraYearMonthWeekDay $date[set date {}] 2361222]
3907
+
3908
+ }
3909
+
3910
+ set jd [dict get $date julianDay]
3911
+ set seconds [expr {
3912
+ wide($jd) * wide(86400) - wide(210866803200)
3913
+ }]
3914
+
3915
+ set h [dict get $z ${bound}Hours]
3916
+ if { $h eq {} } {
3917
+ set h 2
3918
+ } else {
3919
+ set h [lindex [::scan $h %d] 0]
3920
+ }
3921
+ set m [dict get $z ${bound}Minutes]
3922
+ if { $m eq {} } {
3923
+ set m 0
3924
+ } else {
3925
+ set m [lindex [::scan $m %d] 0]
3926
+ }
3927
+ set s [dict get $z ${bound}Seconds]
3928
+ if { $s eq {} } {
3929
+ set s 0
3930
+ } else {
3931
+ set s [lindex [::scan $s %d] 0]
3932
+ }
3933
+ set tod [expr { ( $h * 60 + $m ) * 60 + $s }]
3934
+ return [expr { $seconds + $tod }]
3935
+ }
3936
+
3937
+ #----------------------------------------------------------------------
3938
+ #
3939
+ # GetLocaleEra --
3940
+ #
3941
+ # Given local time expressed in seconds from the Posix epoch,
3942
+ # determine localized era and year within the era.
3943
+ #
3944
+ # Parameters:
3945
+ # date - Dictionary that must contain the keys, 'localSeconds',
3946
+ # whose value is expressed as the appropriate local time;
3947
+ # and 'year', whose value is the Gregorian year.
3948
+ # etable - Value of the LOCALE_ERAS key in the message catalogue
3949
+ # for the target locale.
3950
+ #
3951
+ # Results:
3952
+ # Returns the dictionary, augmented with the keys, 'localeEra' and
3953
+ # 'localeYear'.
3954
+ #
3955
+ #----------------------------------------------------------------------
3956
+
3957
+ proc ::tcl::clock::GetLocaleEra { date etable } {
3958
+ set index [BSearch $etable [dict get $date localSeconds]]
3959
+ if { $index < 0} {
3960
+ dict set date localeEra \
3961
+ [::format %02d [expr { [dict get $date year] / 100 }]]
3962
+ dict set date localeYear [expr {
3963
+ [dict get $date year] % 100
3964
+ }]
3965
+ } else {
3966
+ dict set date localeEra [lindex $etable $index 1]
3967
+ dict set date localeYear [expr {
3968
+ [dict get $date year] - [lindex $etable $index 2]
3969
+ }]
3970
+ }
3971
+ return $date
3972
+ }
3973
+
3974
+ #----------------------------------------------------------------------
3975
+ #
3976
+ # GetJulianDayFromEraYearDay --
3977
+ #
3978
+ # Given a year, month and day on the Gregorian calendar, determines
3979
+ # the Julian Day Number beginning at noon on that date.
3980
+ #
3981
+ # Parameters:
3982
+ # date -- A dictionary in which the 'era', 'year', and
3983
+ # 'dayOfYear' slots are populated. The calendar in use
3984
+ # is determined by the date itself relative to:
3985
+ # changeover -- Julian day on which the Gregorian calendar was
3986
+ # adopted in the current locale.
3987
+ #
3988
+ # Results:
3989
+ # Returns the given dictionary augmented with a 'julianDay' key whose
3990
+ # value is the desired Julian Day Number, and a 'gregorian' key that
3991
+ # specifies whether the calendar is Gregorian (1) or Julian (0).
3992
+ #
3993
+ # Side effects:
3994
+ # None.
3995
+ #
3996
+ # Bugs:
3997
+ # This code needs to be moved to the C layer.
3998
+ #
3999
+ #----------------------------------------------------------------------
4000
+
4001
+ proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
4002
+ # Get absolute year number from the civil year
4003
+
4004
+ switch -exact -- [dict get $date era] {
4005
+ BCE {
4006
+ set year [expr { 1 - [dict get $date year] }]
4007
+ }
4008
+ CE {
4009
+ set year [dict get $date year]
4010
+ }
4011
+ }
4012
+ set ym1 [expr { $year - 1 }]
4013
+
4014
+ # Try the Gregorian calendar first.
4015
+
4016
+ dict set date gregorian 1
4017
+ set jd [expr {
4018
+ 1721425
4019
+ + [dict get $date dayOfYear]
4020
+ + ( 365 * $ym1 )
4021
+ + ( $ym1 / 4 )
4022
+ - ( $ym1 / 100 )
4023
+ + ( $ym1 / 400 )
4024
+ }]
4025
+
4026
+ # If the date is before the Gregorian change, use the Julian calendar.
4027
+
4028
+ if { $jd < $changeover } {
4029
+ dict set date gregorian 0
4030
+ set jd [expr {
4031
+ 1721423
4032
+ + [dict get $date dayOfYear]
4033
+ + ( 365 * $ym1 )
4034
+ + ( $ym1 / 4 )
4035
+ }]
4036
+ }
4037
+
4038
+ dict set date julianDay $jd
4039
+ return $date
4040
+ }
4041
+
4042
+ #----------------------------------------------------------------------
4043
+ #
4044
+ # GetJulianDayFromEraYearMonthWeekDay --
4045
+ #
4046
+ # Determines the Julian Day number corresponding to the nth given
4047
+ # day-of-the-week in a given month.
4048
+ #
4049
+ # Parameters:
4050
+ # date - Dictionary containing the keys, 'era', 'year', 'month'
4051
+ # 'weekOfMonth', 'dayOfWeek', and 'dayOfWeekInMonth'.
4052
+ # changeover - Julian Day of adoption of the Gregorian calendar
4053
+ #
4054
+ # Results:
4055
+ # Returns the given dictionary, augmented with a 'julianDay' key.
4056
+ #
4057
+ # Side effects:
4058
+ # None.
4059
+ #
4060
+ # Bugs:
4061
+ # This code needs to be moved to the C layer.
4062
+ #
4063
+ #----------------------------------------------------------------------
4064
+
4065
+ proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
4066
+ # Come up with a reference day; either the zeroeth day of the given month
4067
+ # (dayOfWeekInMonth >= 0) or the seventh day of the following month
4068
+ # (dayOfWeekInMonth < 0)
4069
+
4070
+ set date2 $date
4071
+ set week [dict get $date dayOfWeekInMonth]
4072
+ if { $week >= 0 } {
4073
+ dict set date2 dayOfMonth 0
4074
+ } else {
4075
+ dict incr date2 month
4076
+ dict set date2 dayOfMonth 7
4077
+ }
4078
+ set date2 [GetJulianDayFromEraYearMonthDay $date2[set date2 {}] \
4079
+ $changeover]
4080
+ set wd0 [WeekdayOnOrBefore [dict get $date dayOfWeek] \
4081
+ [dict get $date2 julianDay]]
4082
+ dict set date julianDay [expr { $wd0 + 7 * $week }]
4083
+ return $date
4084
+ }
4085
+
4086
+ #----------------------------------------------------------------------
4087
+ #
4088
+ # IsGregorianLeapYear --
4089
+ #
4090
+ # Determines whether a given date represents a leap year in the
4091
+ # Gregorian calendar.
4092
+ #
4093
+ # Parameters:
4094
+ # date -- The date to test. The fields, 'era', 'year' and 'gregorian'
4095
+ # must be set.
4096
+ #
4097
+ # Results:
4098
+ # Returns 1 if the year is a leap year, 0 otherwise.
4099
+ #
4100
+ # Side effects:
4101
+ # None.
4102
+ #
4103
+ #----------------------------------------------------------------------
4104
+
4105
+ proc ::tcl::clock::IsGregorianLeapYear { date } {
4106
+ switch -exact -- [dict get $date era] {
4107
+ BCE {
4108
+ set year [expr { 1 - [dict get $date year]}]
4109
+ }
4110
+ CE {
4111
+ set year [dict get $date year]
4112
+ }
4113
+ }
4114
+ if { $year % 4 != 0 } {
4115
+ return 0
4116
+ } elseif { ![dict get $date gregorian] } {
4117
+ return 1
4118
+ } elseif { $year % 400 == 0 } {
4119
+ return 1
4120
+ } elseif { $year % 100 == 0 } {
4121
+ return 0
4122
+ } else {
4123
+ return 1
4124
+ }
4125
+ }
4126
+
4127
+ #----------------------------------------------------------------------
4128
+ #
4129
+ # WeekdayOnOrBefore --
4130
+ #
4131
+ # Determine the nearest day of week (given by the 'weekday' parameter,
4132
+ # Sunday==0) on or before a given Julian Day.
4133
+ #
4134
+ # Parameters:
4135
+ # weekday -- Day of the week
4136
+ # j -- Julian Day number
4137
+ #
4138
+ # Results:
4139
+ # Returns the Julian Day Number of the desired date.
4140
+ #
4141
+ # Side effects:
4142
+ # None.
4143
+ #
4144
+ #----------------------------------------------------------------------
4145
+
4146
+ proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
4147
+ set k [expr { ( $weekday + 6 ) % 7 }]
4148
+ return [expr { $j - ( $j - $k ) % 7 }]
4149
+ }
4150
+
4151
+ #----------------------------------------------------------------------
4152
+ #
4153
+ # BSearch --
4154
+ #
4155
+ # Service procedure that does binary search in several places inside the
4156
+ # 'clock' command.
4157
+ #
4158
+ # Parameters:
4159
+ # list - List of lists, sorted in ascending order by the
4160
+ # first elements
4161
+ # key - Value to search for
4162
+ #
4163
+ # Results:
4164
+ # Returns the index of the greatest element in $list that is less than
4165
+ # or equal to $key.
4166
+ #
4167
+ # Side effects:
4168
+ # None.
4169
+ #
4170
+ #----------------------------------------------------------------------
4171
+
4172
+ proc ::tcl::clock::BSearch { list key } {
4173
+ if {[llength $list] == 0} {
4174
+ return -1
4175
+ }
4176
+ if { $key < [lindex $list 0 0] } {
4177
+ return -1
4178
+ }
4179
+
4180
+ set l 0
4181
+ set u [expr { [llength $list] - 1 }]
4182
+
4183
+ while { $l < $u } {
4184
+ # At this point, we know that
4185
+ # $k >= [lindex $list $l 0]
4186
+ # Either $u == [llength $list] or else $k < [lindex $list $u+1 0]
4187
+ # We find the midpoint of the interval {l,u} rounded UP, compare
4188
+ # against it, and set l or u to maintain the invariant. Note that the
4189
+ # interval shrinks at each step, guaranteeing convergence.
4190
+
4191
+ set m [expr { ( $l + $u + 1 ) / 2 }]
4192
+ if { $key >= [lindex $list $m 0] } {
4193
+ set l $m
4194
+ } else {
4195
+ set u [expr { $m - 1 }]
4196
+ }
4197
+ }
4198
+
4199
+ return $l
4200
+ }
4201
+
4202
+ #----------------------------------------------------------------------
4203
+ #
4204
+ # clock add --
4205
+ #
4206
+ # Adds an offset to a given time.
4207
+ #
4208
+ # Syntax:
4209
+ # clock add clockval ?count unit?... ?-option value?
4210
+ #
4211
+ # Parameters:
4212
+ # clockval -- Starting time value
4213
+ # count -- Amount of a unit of time to add
4214
+ # unit -- Unit of time to add, must be one of:
4215
+ # years year months month weeks week
4216
+ # days day hours hour minutes minute
4217
+ # seconds second
4218
+ #
4219
+ # Options:
4220
+ # -gmt BOOLEAN
4221
+ # (Deprecated) Flag synonymous with '-timezone :GMT'
4222
+ # -timezone ZONE
4223
+ # Name of the time zone in which calculations are to be done.
4224
+ # -locale NAME
4225
+ # Name of the locale in which calculations are to be done.
4226
+ # Used to determine the Gregorian change date.
4227
+ #
4228
+ # Results:
4229
+ # Returns the given time adjusted by the given offset(s) in
4230
+ # order.
4231
+ #
4232
+ # Notes:
4233
+ # It is possible that adding a number of months or years will adjust the
4234
+ # day of the month as well. For instance, the time at one month after
4235
+ # 31 January is either 28 or 29 February, because February has fewer
4236
+ # than 31 days.
4237
+ #
4238
+ #----------------------------------------------------------------------
4239
+
4240
+ proc ::tcl::clock::add { clockval args } {
4241
+ if { [llength $args] % 2 != 0 } {
4242
+ set cmdName "clock add"
4243
+ return -code error \
4244
+ -errorcode [list CLOCK wrongNumArgs] \
4245
+ "wrong \# args: should be\
4246
+ \"$cmdName clockval ?number units?...\
4247
+ ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\""
4248
+ }
4249
+ if { [catch { expr {wide($clockval)} } result] } {
4250
+ return -code error $result
4251
+ }
4252
+
4253
+ set offsets {}
4254
+ set gmt 0
4255
+ set locale c
4256
+ set timezone [GetSystemTimeZone]
4257
+
4258
+ foreach { a b } $args {
4259
+ if { [string is integer -strict $a] } {
4260
+ lappend offsets $a $b
4261
+ } else {
4262
+ switch -exact -- $a {
4263
+ -g - -gm - -gmt {
4264
+ set gmt $b
4265
+ }
4266
+ -l - -lo - -loc - -loca - -local - -locale {
4267
+ set locale [string tolower $b]
4268
+ }
4269
+ -t - -ti - -tim - -time - -timez - -timezo - -timezon -
4270
+ -timezone {
4271
+ set timezone $b
4272
+ }
4273
+ default {
4274
+ throw [list CLOCK badOption $a] \
4275
+ "bad option \"$a\",\
4276
+ must be -gmt, -locale or -timezone"
4277
+ }
4278
+ }
4279
+ }
4280
+ }
4281
+
4282
+ # Check options for validity
4283
+
4284
+ if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
4285
+ return -code error \
4286
+ -errorcode [list CLOCK gmtWithTimezone] \
4287
+ "cannot use -gmt and -timezone in same call"
4288
+ }
4289
+ if { [catch { expr { wide($clockval) } } result] } {
4290
+ return -code error "expected integer but got \"$clockval\""
4291
+ }
4292
+ if { ![string is boolean -strict $gmt] } {
4293
+ return -code error "expected boolean value but got \"$gmt\""
4294
+ } elseif { $gmt } {
4295
+ set timezone :GMT
4296
+ }
4297
+
4298
+ EnterLocale $locale
4299
+
4300
+ set changeover [mc GREGORIAN_CHANGE_DATE]
4301
+
4302
+ if {[catch {SetupTimeZone $timezone} retval opts]} {
4303
+ dict unset opts -errorinfo
4304
+ return -options $opts $retval
4305
+ }
4306
+
4307
+ try {
4308
+ foreach { quantity unit } $offsets {
4309
+ switch -exact -- $unit {
4310
+ years - year {
4311
+ set clockval [AddMonths [expr { 12 * $quantity }] \
4312
+ $clockval $timezone $changeover]
4313
+ }
4314
+ months - month {
4315
+ set clockval [AddMonths $quantity $clockval $timezone \
4316
+ $changeover]
4317
+ }
4318
+
4319
+ weeks - week {
4320
+ set clockval [AddDays [expr { 7 * $quantity }] \
4321
+ $clockval $timezone $changeover]
4322
+ }
4323
+ days - day {
4324
+ set clockval [AddDays $quantity $clockval $timezone \
4325
+ $changeover]
4326
+ }
4327
+
4328
+ hours - hour {
4329
+ set clockval [expr { 3600 * $quantity + $clockval }]
4330
+ }
4331
+ minutes - minute {
4332
+ set clockval [expr { 60 * $quantity + $clockval }]
4333
+ }
4334
+ seconds - second {
4335
+ set clockval [expr { $quantity + $clockval }]
4336
+ }
4337
+
4338
+ default {
4339
+ throw [list CLOCK badUnit $unit] \
4340
+ "unknown unit \"$unit\", must be \
4341
+ years, months, weeks, days, hours, minutes or seconds"
4342
+ }
4343
+ }
4344
+ }
4345
+ return $clockval
4346
+ } trap CLOCK {result opts} {
4347
+ # Conceal the innards of [clock] when it's an expected error
4348
+ dict unset opts -errorinfo
4349
+ return -options $opts $result
4350
+ }
4351
+ }
4352
+
4353
+ #----------------------------------------------------------------------
4354
+ #
4355
+ # AddMonths --
4356
+ #
4357
+ # Add a given number of months to a given clock value in a given
4358
+ # time zone.
4359
+ #
4360
+ # Parameters:
4361
+ # months - Number of months to add (may be negative)
4362
+ # clockval - Seconds since the epoch before the operation
4363
+ # timezone - Time zone in which the operation is to be performed
4364
+ #
4365
+ # Results:
4366
+ # Returns the new clock value as a number of seconds since
4367
+ # the epoch.
4368
+ #
4369
+ # Side effects:
4370
+ # None.
4371
+ #
4372
+ #----------------------------------------------------------------------
4373
+
4374
+ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
4375
+ variable DaysInRomanMonthInCommonYear
4376
+ variable DaysInRomanMonthInLeapYear
4377
+ variable TZData
4378
+
4379
+ # Convert the time to year, month, day, and fraction of day.
4380
+
4381
+ set date [GetDateFields $clockval $TZData($timezone) $changeover]
4382
+ dict set date secondOfDay [expr {
4383
+ [dict get $date localSeconds] % 86400
4384
+ }]
4385
+ dict set date tzName $timezone
4386
+
4387
+ # Add the requisite number of months
4388
+
4389
+ set m [dict get $date month]
4390
+ incr m $months
4391
+ incr m -1
4392
+ set delta [expr { $m / 12 }]
4393
+ set mm [expr { $m % 12 }]
4394
+ dict set date month [expr { $mm + 1 }]
4395
+ dict incr date year $delta
4396
+
4397
+ # If the date doesn't exist in the current month, repair it
4398
+
4399
+ if { [IsGregorianLeapYear $date] } {
4400
+ set hath [lindex $DaysInRomanMonthInLeapYear $mm]
4401
+ } else {
4402
+ set hath [lindex $DaysInRomanMonthInCommonYear $mm]
4403
+ }
4404
+ if { [dict get $date dayOfMonth] > $hath } {
4405
+ dict set date dayOfMonth $hath
4406
+ }
4407
+
4408
+ # Reconvert to a number of seconds
4409
+
4410
+ set date [GetJulianDayFromEraYearMonthDay \
4411
+ $date[set date {}]\
4412
+ $changeover]
4413
+ dict set date localSeconds [expr {
4414
+ -210866803200
4415
+ + ( 86400 * wide([dict get $date julianDay]) )
4416
+ + [dict get $date secondOfDay]
4417
+ }]
4418
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
4419
+ $changeover]
4420
+
4421
+ return [dict get $date seconds]
4422
+
4423
+ }
4424
+
4425
+ #----------------------------------------------------------------------
4426
+ #
4427
+ # AddDays --
4428
+ #
4429
+ # Add a given number of days to a given clock value in a given time
4430
+ # zone.
4431
+ #
4432
+ # Parameters:
4433
+ # days - Number of days to add (may be negative)
4434
+ # clockval - Seconds since the epoch before the operation
4435
+ # timezone - Time zone in which the operation is to be performed
4436
+ # changeover - Julian Day on which the Gregorian calendar was adopted
4437
+ # in the target locale.
4438
+ #
4439
+ # Results:
4440
+ # Returns the new clock value as a number of seconds since the epoch.
4441
+ #
4442
+ # Side effects:
4443
+ # None.
4444
+ #
4445
+ #----------------------------------------------------------------------
4446
+
4447
+ proc ::tcl::clock::AddDays { days clockval timezone changeover } {
4448
+ variable TZData
4449
+
4450
+ # Convert the time to Julian Day
4451
+
4452
+ set date [GetDateFields $clockval $TZData($timezone) $changeover]
4453
+ dict set date secondOfDay [expr {
4454
+ [dict get $date localSeconds] % 86400
4455
+ }]
4456
+ dict set date tzName $timezone
4457
+
4458
+ # Add the requisite number of days
4459
+
4460
+ dict incr date julianDay $days
4461
+
4462
+ # Reconvert to a number of seconds
4463
+
4464
+ dict set date localSeconds [expr {
4465
+ -210866803200
4466
+ + ( 86400 * wide([dict get $date julianDay]) )
4467
+ + [dict get $date secondOfDay]
4468
+ }]
4469
+ set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
4470
+ $changeover]
4471
+
4472
+ return [dict get $date seconds]
4473
+
4474
+ }
4475
+
4476
+ #----------------------------------------------------------------------
4477
+ #
4478
+ # ChangeCurrentLocale --
4479
+ #
4480
+ # The global locale was changed within msgcat.
4481
+ # Clears the buffered parse functions of the current locale.
4482
+ #
4483
+ # Parameters:
4484
+ # loclist (ignored)
4485
+ #
4486
+ # Results:
4487
+ # None.
4488
+ #
4489
+ # Side effects:
4490
+ # Buffered parse functions are cleared.
4491
+ #
4492
+ #----------------------------------------------------------------------
4493
+
4494
+ proc ::tcl::clock::ChangeCurrentLocale {args} {
4495
+ variable FormatProc
4496
+ variable LocaleNumeralCache
4497
+ variable CachedSystemTimeZone
4498
+ variable TimeZoneBad
4499
+
4500
+ foreach p [info procs [namespace current]::scanproc'*'current] {
4501
+ rename $p {}
4502
+ }
4503
+ foreach p [info procs [namespace current]::formatproc'*'current] {
4504
+ rename $p {}
4505
+ }
4506
+
4507
+ catch {array unset FormatProc *'current}
4508
+ set LocaleNumeralCache {}
4509
+ }
4510
+
4511
+ #----------------------------------------------------------------------
4512
+ #
4513
+ # ClearCaches --
4514
+ #
4515
+ # Clears all caches to reclaim the memory used in [clock]
4516
+ #
4517
+ # Parameters:
4518
+ # None.
4519
+ #
4520
+ # Results:
4521
+ # None.
4522
+ #
4523
+ # Side effects:
4524
+ # Caches are cleared.
4525
+ #
4526
+ #----------------------------------------------------------------------
4527
+
4528
+ proc ::tcl::clock::ClearCaches {} {
4529
+ variable FormatProc
4530
+ variable LocaleNumeralCache
4531
+ variable CachedSystemTimeZone
4532
+ variable TimeZoneBad
4533
+
4534
+ foreach p [info procs [namespace current]::scanproc'*] {
4535
+ rename $p {}
4536
+ }
4537
+ foreach p [info procs [namespace current]::formatproc'*] {
4538
+ rename $p {}
4539
+ }
4540
+
4541
+ catch {unset FormatProc}
4542
+ set LocaleNumeralCache {}
4543
+ catch {unset CachedSystemTimeZone}
4544
+ set TimeZoneBad {}
4545
+ InitTZData
4546
+ }