@agent-webui/ai-desk-python-darwin-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.
- package/README.md +3 -0
- package/package.json +20 -0
- package/python/bin/idle3.13 +7 -0
- package/python/bin/pip +8 -0
- package/python/bin/pip3 +8 -0
- package/python/bin/pip3.13 +8 -0
- package/python/bin/pydoc3.13 +7 -0
- package/python/bin/python3.13 +0 -0
- package/python/bin/python3.13-config +76 -0
- package/python/include/python3.13/Python.h +140 -0
- package/python/include/python3.13/abstract.h +921 -0
- package/python/include/python3.13/bltinmodule.h +14 -0
- package/python/include/python3.13/boolobject.h +54 -0
- package/python/include/python3.13/bytearrayobject.h +44 -0
- package/python/include/python3.13/bytesobject.h +66 -0
- package/python/include/python3.13/ceval.h +145 -0
- package/python/include/python3.13/codecs.h +176 -0
- package/python/include/python3.13/compile.h +22 -0
- package/python/include/python3.13/complexobject.h +30 -0
- package/python/include/python3.13/cpython/abstract.h +87 -0
- package/python/include/python3.13/cpython/bytearrayobject.h +34 -0
- package/python/include/python3.13/cpython/bytesobject.h +37 -0
- package/python/include/python3.13/cpython/cellobject.h +44 -0
- package/python/include/python3.13/cpython/ceval.h +25 -0
- package/python/include/python3.13/cpython/classobject.h +71 -0
- package/python/include/python3.13/cpython/code.h +358 -0
- package/python/include/python3.13/cpython/compile.h +50 -0
- package/python/include/python3.13/cpython/complexobject.h +33 -0
- package/python/include/python3.13/cpython/context.h +74 -0
- package/python/include/python3.13/cpython/critical_section.h +134 -0
- package/python/include/python3.13/cpython/descrobject.h +62 -0
- package/python/include/python3.13/cpython/dictobject.h +102 -0
- package/python/include/python3.13/cpython/fileobject.h +16 -0
- package/python/include/python3.13/cpython/fileutils.h +8 -0
- package/python/include/python3.13/cpython/floatobject.h +27 -0
- package/python/include/python3.13/cpython/frameobject.h +35 -0
- package/python/include/python3.13/cpython/funcobject.h +184 -0
- package/python/include/python3.13/cpython/genobject.h +83 -0
- package/python/include/python3.13/cpython/import.h +25 -0
- package/python/include/python3.13/cpython/initconfig.h +274 -0
- package/python/include/python3.13/cpython/listobject.h +53 -0
- package/python/include/python3.13/cpython/lock.h +63 -0
- package/python/include/python3.13/cpython/longintrepr.h +146 -0
- package/python/include/python3.13/cpython/longobject.h +116 -0
- package/python/include/python3.13/cpython/memoryobject.h +50 -0
- package/python/include/python3.13/cpython/methodobject.h +66 -0
- package/python/include/python3.13/cpython/modsupport.h +26 -0
- package/python/include/python3.13/cpython/monitoring.h +250 -0
- package/python/include/python3.13/cpython/object.h +535 -0
- package/python/include/python3.13/cpython/objimpl.h +104 -0
- package/python/include/python3.13/cpython/odictobject.h +43 -0
- package/python/include/python3.13/cpython/picklebufobject.h +31 -0
- package/python/include/python3.13/cpython/pthread_stubs.h +105 -0
- package/python/include/python3.13/cpython/pyatomic.h +569 -0
- package/python/include/python3.13/cpython/pyatomic_gcc.h +551 -0
- package/python/include/python3.13/cpython/pyatomic_msc.h +1095 -0
- package/python/include/python3.13/cpython/pyatomic_std.h +976 -0
- package/python/include/python3.13/cpython/pyctype.h +39 -0
- package/python/include/python3.13/cpython/pydebug.h +38 -0
- package/python/include/python3.13/cpython/pyerrors.h +132 -0
- package/python/include/python3.13/cpython/pyfpe.h +15 -0
- package/python/include/python3.13/cpython/pyframe.h +45 -0
- package/python/include/python3.13/cpython/pyhash.h +47 -0
- package/python/include/python3.13/cpython/pylifecycle.h +92 -0
- package/python/include/python3.13/cpython/pymem.h +84 -0
- package/python/include/python3.13/cpython/pystate.h +277 -0
- package/python/include/python3.13/cpython/pystats.h +175 -0
- package/python/include/python3.13/cpython/pythonrun.h +96 -0
- package/python/include/python3.13/cpython/pythread.h +43 -0
- package/python/include/python3.13/cpython/pytime.h +27 -0
- package/python/include/python3.13/cpython/setobject.h +71 -0
- package/python/include/python3.13/cpython/sysmodule.h +22 -0
- package/python/include/python3.13/cpython/traceback.h +13 -0
- package/python/include/python3.13/cpython/tracemalloc.h +32 -0
- package/python/include/python3.13/cpython/tupleobject.h +38 -0
- package/python/include/python3.13/cpython/unicodeobject.h +703 -0
- package/python/include/python3.13/cpython/warnings.h +20 -0
- package/python/include/python3.13/cpython/weakrefobject.h +63 -0
- package/python/include/python3.13/critical_section.h +16 -0
- package/python/include/python3.13/datetime.h +267 -0
- package/python/include/python3.13/descrobject.h +100 -0
- package/python/include/python3.13/dictobject.h +108 -0
- package/python/include/python3.13/dynamic_annotations.h +499 -0
- package/python/include/python3.13/enumobject.h +17 -0
- package/python/include/python3.13/errcode.h +45 -0
- package/python/include/python3.13/exports.h +108 -0
- package/python/include/python3.13/fileobject.h +41 -0
- package/python/include/python3.13/fileutils.h +62 -0
- package/python/include/python3.13/floatobject.h +54 -0
- package/python/include/python3.13/frameobject.h +20 -0
- package/python/include/python3.13/genericaliasobject.h +14 -0
- package/python/include/python3.13/import.h +103 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc/atomic.h +392 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc/internal.h +969 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc/prim.h +329 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc/track.h +147 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc/types.h +721 -0
- package/python/include/python3.13/internal/mimalloc/mimalloc.h +565 -0
- package/python/include/python3.13/internal/pycore_abstract.h +61 -0
- package/python/include/python3.13/internal/pycore_asdl.h +112 -0
- package/python/include/python3.13/internal/pycore_ast.h +926 -0
- package/python/include/python3.13/internal/pycore_ast_state.h +268 -0
- package/python/include/python3.13/internal/pycore_atexit.h +67 -0
- package/python/include/python3.13/internal/pycore_backoff.h +145 -0
- package/python/include/python3.13/internal/pycore_bitutils.h +186 -0
- package/python/include/python3.13/internal/pycore_blocks_output_buffer.h +321 -0
- package/python/include/python3.13/internal/pycore_brc.h +74 -0
- package/python/include/python3.13/internal/pycore_bytes_methods.h +82 -0
- package/python/include/python3.13/internal/pycore_bytesobject.h +152 -0
- package/python/include/python3.13/internal/pycore_call.h +205 -0
- package/python/include/python3.13/internal/pycore_capsule.h +17 -0
- package/python/include/python3.13/internal/pycore_cell.h +48 -0
- package/python/include/python3.13/internal/pycore_ceval.h +305 -0
- package/python/include/python3.13/internal/pycore_ceval_state.h +137 -0
- package/python/include/python3.13/internal/pycore_code.h +603 -0
- package/python/include/python3.13/internal/pycore_codecs.h +86 -0
- package/python/include/python3.13/internal/pycore_compile.h +118 -0
- package/python/include/python3.13/internal/pycore_complexobject.h +25 -0
- package/python/include/python3.13/internal/pycore_condvar.h +93 -0
- package/python/include/python3.13/internal/pycore_context.h +61 -0
- package/python/include/python3.13/internal/pycore_critical_section.h +233 -0
- package/python/include/python3.13/internal/pycore_crossinterp.h +340 -0
- package/python/include/python3.13/internal/pycore_descrobject.h +28 -0
- package/python/include/python3.13/internal/pycore_dict.h +340 -0
- package/python/include/python3.13/internal/pycore_dict_state.h +32 -0
- package/python/include/python3.13/internal/pycore_dtoa.h +75 -0
- package/python/include/python3.13/internal/pycore_emscripten_signal.h +30 -0
- package/python/include/python3.13/internal/pycore_emscripten_trampoline.h +81 -0
- package/python/include/python3.13/internal/pycore_exceptions.h +40 -0
- package/python/include/python3.13/internal/pycore_faulthandler.h +99 -0
- package/python/include/python3.13/internal/pycore_fileutils.h +335 -0
- package/python/include/python3.13/internal/pycore_fileutils_windows.h +98 -0
- package/python/include/python3.13/internal/pycore_floatobject.h +62 -0
- package/python/include/python3.13/internal/pycore_flowgraph.h +40 -0
- package/python/include/python3.13/internal/pycore_format.h +27 -0
- package/python/include/python3.13/internal/pycore_frame.h +370 -0
- package/python/include/python3.13/internal/pycore_freelist.h +153 -0
- package/python/include/python3.13/internal/pycore_function.h +55 -0
- package/python/include/python3.13/internal/pycore_gc.h +365 -0
- package/python/include/python3.13/internal/pycore_genobject.h +32 -0
- package/python/include/python3.13/internal/pycore_getopt.h +22 -0
- package/python/include/python3.13/internal/pycore_gil.h +66 -0
- package/python/include/python3.13/internal/pycore_global_objects.h +105 -0
- package/python/include/python3.13/internal/pycore_global_objects_fini_generated.h +1554 -0
- package/python/include/python3.13/internal/pycore_global_strings.h +814 -0
- package/python/include/python3.13/internal/pycore_hamt.h +134 -0
- package/python/include/python3.13/internal/pycore_hashtable.h +150 -0
- package/python/include/python3.13/internal/pycore_identifier.h +20 -0
- package/python/include/python3.13/internal/pycore_import.h +213 -0
- package/python/include/python3.13/internal/pycore_importdl.h +139 -0
- package/python/include/python3.13/internal/pycore_initconfig.h +200 -0
- package/python/include/python3.13/internal/pycore_instruction_sequence.h +73 -0
- package/python/include/python3.13/internal/pycore_instruments.h +75 -0
- package/python/include/python3.13/internal/pycore_interp.h +423 -0
- package/python/include/python3.13/internal/pycore_intrinsics.h +51 -0
- package/python/include/python3.13/internal/pycore_jit.h +25 -0
- package/python/include/python3.13/internal/pycore_list.h +66 -0
- package/python/include/python3.13/internal/pycore_llist.h +106 -0
- package/python/include/python3.13/internal/pycore_lock.h +241 -0
- package/python/include/python3.13/internal/pycore_long.h +310 -0
- package/python/include/python3.13/internal/pycore_memoryobject.h +20 -0
- package/python/include/python3.13/internal/pycore_mimalloc.h +69 -0
- package/python/include/python3.13/internal/pycore_modsupport.h +107 -0
- package/python/include/python3.13/internal/pycore_moduleobject.h +56 -0
- package/python/include/python3.13/internal/pycore_namespace.h +21 -0
- package/python/include/python3.13/internal/pycore_object.h +867 -0
- package/python/include/python3.13/internal/pycore_object_alloc.h +71 -0
- package/python/include/python3.13/internal/pycore_object_stack.h +97 -0
- package/python/include/python3.13/internal/pycore_object_state.h +41 -0
- package/python/include/python3.13/internal/pycore_obmalloc.h +702 -0
- package/python/include/python3.13/internal/pycore_obmalloc_init.h +66 -0
- package/python/include/python3.13/internal/pycore_opcode_metadata.h +1922 -0
- package/python/include/python3.13/internal/pycore_opcode_utils.h +73 -0
- package/python/include/python3.13/internal/pycore_optimizer.h +272 -0
- package/python/include/python3.13/internal/pycore_parking_lot.h +97 -0
- package/python/include/python3.13/internal/pycore_parser.h +95 -0
- package/python/include/python3.13/internal/pycore_pathconfig.h +26 -0
- package/python/include/python3.13/internal/pycore_pyarena.h +68 -0
- package/python/include/python3.13/internal/pycore_pyatomic_ft_wrappers.h +165 -0
- package/python/include/python3.13/internal/pycore_pybuffer.h +21 -0
- package/python/include/python3.13/internal/pycore_pyerrors.h +190 -0
- package/python/include/python3.13/internal/pycore_pyhash.h +107 -0
- package/python/include/python3.13/internal/pycore_pylifecycle.h +136 -0
- package/python/include/python3.13/internal/pycore_pymath.h +205 -0
- package/python/include/python3.13/internal/pycore_pymem.h +161 -0
- package/python/include/python3.13/internal/pycore_pymem_init.h +103 -0
- package/python/include/python3.13/internal/pycore_pystate.h +299 -0
- package/python/include/python3.13/internal/pycore_pystats.h +21 -0
- package/python/include/python3.13/internal/pycore_pythonrun.h +39 -0
- package/python/include/python3.13/internal/pycore_pythread.h +172 -0
- package/python/include/python3.13/internal/pycore_qsbr.h +173 -0
- package/python/include/python3.13/internal/pycore_range.h +21 -0
- package/python/include/python3.13/internal/pycore_runtime.h +410 -0
- package/python/include/python3.13/internal/pycore_runtime_init.h +329 -0
- package/python/include/python3.13/internal/pycore_runtime_init_generated.h +1551 -0
- package/python/include/python3.13/internal/pycore_semaphore.h +67 -0
- package/python/include/python3.13/internal/pycore_setobject.h +39 -0
- package/python/include/python3.13/internal/pycore_signal.h +108 -0
- package/python/include/python3.13/internal/pycore_sliceobject.h +20 -0
- package/python/include/python3.13/internal/pycore_stackref.h +195 -0
- package/python/include/python3.13/internal/pycore_strhex.h +39 -0
- package/python/include/python3.13/internal/pycore_structseq.h +40 -0
- package/python/include/python3.13/internal/pycore_symtable.h +204 -0
- package/python/include/python3.13/internal/pycore_sysmodule.h +38 -0
- package/python/include/python3.13/internal/pycore_time.h +337 -0
- package/python/include/python3.13/internal/pycore_token.h +106 -0
- package/python/include/python3.13/internal/pycore_traceback.h +106 -0
- package/python/include/python3.13/internal/pycore_tracemalloc.h +170 -0
- package/python/include/python3.13/internal/pycore_tstate.h +46 -0
- package/python/include/python3.13/internal/pycore_tuple.h +35 -0
- package/python/include/python3.13/internal/pycore_typeobject.h +245 -0
- package/python/include/python3.13/internal/pycore_typevarobject.h +27 -0
- package/python/include/python3.13/internal/pycore_ucnhash.h +36 -0
- package/python/include/python3.13/internal/pycore_unicodeobject.h +351 -0
- package/python/include/python3.13/internal/pycore_unicodeobject_generated.h +2980 -0
- package/python/include/python3.13/internal/pycore_unionobject.h +25 -0
- package/python/include/python3.13/internal/pycore_uop_ids.h +295 -0
- package/python/include/python3.13/internal/pycore_uop_metadata.h +1010 -0
- package/python/include/python3.13/internal/pycore_warnings.h +31 -0
- package/python/include/python3.13/internal/pycore_weakref.h +133 -0
- package/python/include/python3.13/intrcheck.h +23 -0
- package/python/include/python3.13/iterobject.h +24 -0
- package/python/include/python3.13/listobject.h +55 -0
- package/python/include/python3.13/lock.h +16 -0
- package/python/include/python3.13/longobject.h +114 -0
- package/python/include/python3.13/marshal.h +31 -0
- package/python/include/python3.13/memoryobject.h +34 -0
- package/python/include/python3.13/methodobject.h +137 -0
- package/python/include/python3.13/modsupport.h +146 -0
- package/python/include/python3.13/moduleobject.h +122 -0
- package/python/include/python3.13/monitoring.h +18 -0
- package/python/include/python3.13/object.h +1280 -0
- package/python/include/python3.13/objimpl.h +211 -0
- package/python/include/python3.13/opcode.h +42 -0
- package/python/include/python3.13/opcode_ids.h +244 -0
- package/python/include/python3.13/osdefs.h +57 -0
- package/python/include/python3.13/osmodule.h +17 -0
- package/python/include/python3.13/patchlevel.h +35 -0
- package/python/include/python3.13/py_curses.h +117 -0
- package/python/include/python3.13/pyatomic.h +16 -0
- package/python/include/python3.13/pybuffer.h +145 -0
- package/python/include/python3.13/pycapsule.h +58 -0
- package/python/include/python3.13/pyconfig.h +2033 -0
- package/python/include/python3.13/pydtrace.h +59 -0
- package/python/include/python3.13/pyerrors.h +335 -0
- package/python/include/python3.13/pyexpat.h +62 -0
- package/python/include/python3.13/pyframe.h +26 -0
- package/python/include/python3.13/pyhash.h +59 -0
- package/python/include/python3.13/pylifecycle.h +80 -0
- package/python/include/python3.13/pymacconfig.h +91 -0
- package/python/include/python3.13/pymacro.h +199 -0
- package/python/include/python3.13/pymath.h +62 -0
- package/python/include/python3.13/pymem.h +110 -0
- package/python/include/python3.13/pyport.h +633 -0
- package/python/include/python3.13/pystate.h +132 -0
- package/python/include/python3.13/pystats.h +26 -0
- package/python/include/python3.13/pystrcmp.h +23 -0
- package/python/include/python3.13/pystrtod.h +37 -0
- package/python/include/python3.13/pythonrun.h +49 -0
- package/python/include/python3.13/pythread.h +131 -0
- package/python/include/python3.13/pytypedefs.h +30 -0
- package/python/include/python3.13/rangeobject.h +27 -0
- package/python/include/python3.13/setobject.h +49 -0
- package/python/include/python3.13/sliceobject.h +69 -0
- package/python/include/python3.13/structmember.h +56 -0
- package/python/include/python3.13/structseq.h +46 -0
- package/python/include/python3.13/sysmodule.h +44 -0
- package/python/include/python3.13/traceback.h +26 -0
- package/python/include/python3.13/tupleobject.h +46 -0
- package/python/include/python3.13/typeslots.h +88 -0
- package/python/include/python3.13/unicodeobject.h +1021 -0
- package/python/include/python3.13/warnings.h +45 -0
- package/python/include/python3.13/weakrefobject.h +46 -0
- package/python/lib/itcl4.3.5/itcl.tcl +151 -0
- package/python/lib/itcl4.3.5/itclConfig.sh +67 -0
- package/python/lib/itcl4.3.5/itclHullCmds.tcl +562 -0
- package/python/lib/itcl4.3.5/itclWidget.tcl +447 -0
- package/python/lib/itcl4.3.5/libitcl4.3.5.dylib +0 -0
- package/python/lib/itcl4.3.5/libitclstub.a +0 -0
- package/python/lib/itcl4.3.5/libitclstub4.3.5.a +0 -0
- package/python/lib/itcl4.3.5/libtcl9itcl4.3.5.dylib +0 -0
- package/python/lib/itcl4.3.5/pkgIndex.tcl +14 -0
- package/python/lib/libpython3.13.dylib +0 -0
- package/python/lib/libtcl9.0.dylib +0 -0
- package/python/lib/libtcl9tk9.0.dylib +0 -0
- package/python/lib/pkgconfig/python-3.13-embed.pc +13 -0
- package/python/lib/pkgconfig/python-3.13.pc +13 -0
- package/python/lib/python3.13/LICENSE.txt +277 -0
- package/python/lib/python3.13/__future__.py +147 -0
- package/python/lib/python3.13/__hello__.py +16 -0
- package/python/lib/python3.13/__phello__/__init__.py +7 -0
- package/python/lib/python3.13/__phello__/spam.py +7 -0
- package/python/lib/python3.13/_aix_support.py +108 -0
- package/python/lib/python3.13/_android_support.py +192 -0
- package/python/lib/python3.13/_apple_support.py +66 -0
- package/python/lib/python3.13/_collections_abc.py +1182 -0
- package/python/lib/python3.13/_colorize.py +119 -0
- package/python/lib/python3.13/_compat_pickle.py +251 -0
- package/python/lib/python3.13/_compression.py +162 -0
- package/python/lib/python3.13/_ios_support.py +71 -0
- package/python/lib/python3.13/_markupbase.py +396 -0
- package/python/lib/python3.13/_opcode_metadata.py +343 -0
- package/python/lib/python3.13/_osx_support.py +579 -0
- package/python/lib/python3.13/_py_abc.py +147 -0
- package/python/lib/python3.13/_pydatetime.py +2639 -0
- package/python/lib/python3.13/_pydecimal.py +6351 -0
- package/python/lib/python3.13/_pyio.py +2704 -0
- package/python/lib/python3.13/_pylong.py +363 -0
- package/python/lib/python3.13/_pyrepl/__init__.py +19 -0
- package/python/lib/python3.13/_pyrepl/__main__.py +10 -0
- package/python/lib/python3.13/_pyrepl/_minimal_curses.py +68 -0
- package/python/lib/python3.13/_pyrepl/_threading_handler.py +74 -0
- package/python/lib/python3.13/_pyrepl/base_eventqueue.py +110 -0
- package/python/lib/python3.13/_pyrepl/commands.py +492 -0
- package/python/lib/python3.13/_pyrepl/completing_reader.py +295 -0
- package/python/lib/python3.13/_pyrepl/console.py +229 -0
- package/python/lib/python3.13/_pyrepl/curses.py +33 -0
- package/python/lib/python3.13/_pyrepl/fancy_termios.py +82 -0
- package/python/lib/python3.13/_pyrepl/historical_reader.py +419 -0
- package/python/lib/python3.13/_pyrepl/input.py +114 -0
- package/python/lib/python3.13/_pyrepl/keymap.py +213 -0
- package/python/lib/python3.13/_pyrepl/main.py +59 -0
- package/python/lib/python3.13/_pyrepl/mypy.ini +29 -0
- package/python/lib/python3.13/_pyrepl/pager.py +175 -0
- package/python/lib/python3.13/_pyrepl/reader.py +764 -0
- package/python/lib/python3.13/_pyrepl/readline.py +599 -0
- package/python/lib/python3.13/_pyrepl/simple_interact.py +180 -0
- package/python/lib/python3.13/_pyrepl/trace.py +21 -0
- package/python/lib/python3.13/_pyrepl/types.py +10 -0
- package/python/lib/python3.13/_pyrepl/unix_console.py +852 -0
- package/python/lib/python3.13/_pyrepl/unix_eventqueue.py +76 -0
- package/python/lib/python3.13/_pyrepl/utils.py +83 -0
- package/python/lib/python3.13/_pyrepl/windows_console.py +692 -0
- package/python/lib/python3.13/_pyrepl/windows_eventqueue.py +42 -0
- package/python/lib/python3.13/_sitebuiltins.py +91 -0
- package/python/lib/python3.13/_strptime.py +800 -0
- package/python/lib/python3.13/_sysconfigdata__darwin_darwin.py +1028 -0
- package/python/lib/python3.13/_threading_local.py +120 -0
- package/python/lib/python3.13/_weakrefset.py +205 -0
- package/python/lib/python3.13/abc.py +188 -0
- package/python/lib/python3.13/antigravity.py +17 -0
- package/python/lib/python3.13/argparse.py +2690 -0
- package/python/lib/python3.13/ast.py +1865 -0
- package/python/lib/python3.13/asyncio/__init__.py +47 -0
- package/python/lib/python3.13/asyncio/__main__.py +207 -0
- package/python/lib/python3.13/asyncio/base_events.py +2075 -0
- package/python/lib/python3.13/asyncio/base_futures.py +67 -0
- package/python/lib/python3.13/asyncio/base_subprocess.py +319 -0
- package/python/lib/python3.13/asyncio/base_tasks.py +94 -0
- package/python/lib/python3.13/asyncio/constants.py +41 -0
- package/python/lib/python3.13/asyncio/coroutines.py +109 -0
- package/python/lib/python3.13/asyncio/events.py +882 -0
- package/python/lib/python3.13/asyncio/exceptions.py +62 -0
- package/python/lib/python3.13/asyncio/format_helpers.py +84 -0
- package/python/lib/python3.13/asyncio/futures.py +425 -0
- package/python/lib/python3.13/asyncio/locks.py +617 -0
- package/python/lib/python3.13/asyncio/log.py +7 -0
- package/python/lib/python3.13/asyncio/mixins.py +21 -0
- package/python/lib/python3.13/asyncio/proactor_events.py +896 -0
- package/python/lib/python3.13/asyncio/protocols.py +216 -0
- package/python/lib/python3.13/asyncio/queues.py +307 -0
- package/python/lib/python3.13/asyncio/runners.py +216 -0
- package/python/lib/python3.13/asyncio/selector_events.py +1326 -0
- package/python/lib/python3.13/asyncio/sslproto.py +929 -0
- package/python/lib/python3.13/asyncio/staggered.py +174 -0
- package/python/lib/python3.13/asyncio/streams.py +787 -0
- package/python/lib/python3.13/asyncio/subprocess.py +229 -0
- package/python/lib/python3.13/asyncio/taskgroups.py +278 -0
- package/python/lib/python3.13/asyncio/tasks.py +1118 -0
- package/python/lib/python3.13/asyncio/threads.py +25 -0
- package/python/lib/python3.13/asyncio/timeouts.py +184 -0
- package/python/lib/python3.13/asyncio/transports.py +337 -0
- package/python/lib/python3.13/asyncio/trsock.py +98 -0
- package/python/lib/python3.13/asyncio/unix_events.py +1536 -0
- package/python/lib/python3.13/asyncio/windows_events.py +903 -0
- package/python/lib/python3.13/asyncio/windows_utils.py +173 -0
- package/python/lib/python3.13/base64.py +621 -0
- package/python/lib/python3.13/bdb.py +973 -0
- package/python/lib/python3.13/bisect.py +118 -0
- package/python/lib/python3.13/bz2.py +352 -0
- package/python/lib/python3.13/cProfile.py +197 -0
- package/python/lib/python3.13/calendar.py +813 -0
- package/python/lib/python3.13/cmd.py +409 -0
- package/python/lib/python3.13/code.py +386 -0
- package/python/lib/python3.13/codecs.py +1132 -0
- package/python/lib/python3.13/codeop.py +155 -0
- package/python/lib/python3.13/collections/__init__.py +1600 -0
- package/python/lib/python3.13/colorsys.py +166 -0
- package/python/lib/python3.13/compileall.py +470 -0
- package/python/lib/python3.13/concurrent/__init__.py +1 -0
- package/python/lib/python3.13/concurrent/futures/__init__.py +54 -0
- package/python/lib/python3.13/concurrent/futures/_base.py +654 -0
- package/python/lib/python3.13/concurrent/futures/process.py +862 -0
- package/python/lib/python3.13/concurrent/futures/thread.py +240 -0
- package/python/lib/python3.13/config-3.13-darwin/Makefile +3505 -0
- package/python/lib/python3.13/config-3.13-darwin/Setup +298 -0
- package/python/lib/python3.13/config-3.13-darwin/Setup.bootstrap +38 -0
- package/python/lib/python3.13/config-3.13-darwin/Setup.local +89 -0
- package/python/lib/python3.13/config-3.13-darwin/Setup.stdlib +181 -0
- package/python/lib/python3.13/config-3.13-darwin/config.c +260 -0
- package/python/lib/python3.13/config-3.13-darwin/config.c.in +71 -0
- package/python/lib/python3.13/config-3.13-darwin/install-sh +541 -0
- package/python/lib/python3.13/config-3.13-darwin/makesetup +341 -0
- package/python/lib/python3.13/config-3.13-darwin/python-config.py +76 -0
- package/python/lib/python3.13/config-3.13-darwin/python.o +0 -0
- package/python/lib/python3.13/configparser.py +1387 -0
- package/python/lib/python3.13/contextlib.py +814 -0
- package/python/lib/python3.13/contextvars.py +4 -0
- package/python/lib/python3.13/copy.py +306 -0
- package/python/lib/python3.13/copyreg.py +217 -0
- package/python/lib/python3.13/csv.py +513 -0
- package/python/lib/python3.13/ctypes/__init__.py +603 -0
- package/python/lib/python3.13/ctypes/_aix.py +327 -0
- package/python/lib/python3.13/ctypes/_endian.py +78 -0
- package/python/lib/python3.13/ctypes/macholib/README.ctypes +7 -0
- package/python/lib/python3.13/ctypes/macholib/__init__.py +9 -0
- package/python/lib/python3.13/ctypes/macholib/dyld.py +165 -0
- package/python/lib/python3.13/ctypes/macholib/dylib.py +42 -0
- package/python/lib/python3.13/ctypes/macholib/fetch_macholib +2 -0
- package/python/lib/python3.13/ctypes/macholib/fetch_macholib.bat +1 -0
- package/python/lib/python3.13/ctypes/macholib/framework.py +42 -0
- package/python/lib/python3.13/ctypes/util.py +388 -0
- package/python/lib/python3.13/ctypes/wintypes.py +202 -0
- package/python/lib/python3.13/curses/__init__.py +101 -0
- package/python/lib/python3.13/curses/ascii.py +99 -0
- package/python/lib/python3.13/curses/has_key.py +192 -0
- package/python/lib/python3.13/curses/panel.py +6 -0
- package/python/lib/python3.13/curses/textpad.py +204 -0
- package/python/lib/python3.13/dataclasses.py +1630 -0
- package/python/lib/python3.13/datetime.py +9 -0
- package/python/lib/python3.13/dbm/__init__.py +194 -0
- package/python/lib/python3.13/dbm/dumb.py +319 -0
- package/python/lib/python3.13/dbm/gnu.py +3 -0
- package/python/lib/python3.13/dbm/ndbm.py +3 -0
- package/python/lib/python3.13/dbm/sqlite3.py +144 -0
- package/python/lib/python3.13/decimal.py +109 -0
- package/python/lib/python3.13/difflib.py +2056 -0
- package/python/lib/python3.13/dis.py +1075 -0
- package/python/lib/python3.13/doctest.py +2919 -0
- package/python/lib/python3.13/email/__init__.py +61 -0
- package/python/lib/python3.13/email/_encoded_words.py +233 -0
- package/python/lib/python3.13/email/_header_value_parser.py +3145 -0
- package/python/lib/python3.13/email/_parseaddr.py +563 -0
- package/python/lib/python3.13/email/_policybase.py +382 -0
- package/python/lib/python3.13/email/architecture.rst +216 -0
- package/python/lib/python3.13/email/base64mime.py +115 -0
- package/python/lib/python3.13/email/charset.py +398 -0
- package/python/lib/python3.13/email/contentmanager.py +253 -0
- package/python/lib/python3.13/email/encoders.py +65 -0
- package/python/lib/python3.13/email/errors.py +117 -0
- package/python/lib/python3.13/email/feedparser.py +536 -0
- package/python/lib/python3.13/email/generator.py +530 -0
- package/python/lib/python3.13/email/header.py +582 -0
- package/python/lib/python3.13/email/headerregistry.py +618 -0
- package/python/lib/python3.13/email/iterators.py +68 -0
- package/python/lib/python3.13/email/message.py +1217 -0
- package/python/lib/python3.13/email/mime/__init__.py +0 -0
- package/python/lib/python3.13/email/mime/application.py +37 -0
- package/python/lib/python3.13/email/mime/audio.py +97 -0
- package/python/lib/python3.13/email/mime/base.py +29 -0
- package/python/lib/python3.13/email/mime/image.py +152 -0
- package/python/lib/python3.13/email/mime/message.py +33 -0
- package/python/lib/python3.13/email/mime/multipart.py +47 -0
- package/python/lib/python3.13/email/mime/nonmultipart.py +21 -0
- package/python/lib/python3.13/email/mime/text.py +40 -0
- package/python/lib/python3.13/email/parser.py +127 -0
- package/python/lib/python3.13/email/policy.py +232 -0
- package/python/lib/python3.13/email/quoprimime.py +300 -0
- package/python/lib/python3.13/email/utils.py +494 -0
- package/python/lib/python3.13/encodings/__init__.py +174 -0
- package/python/lib/python3.13/encodings/aliases.py +552 -0
- package/python/lib/python3.13/encodings/ascii.py +50 -0
- package/python/lib/python3.13/encodings/base64_codec.py +55 -0
- package/python/lib/python3.13/encodings/big5.py +39 -0
- package/python/lib/python3.13/encodings/big5hkscs.py +39 -0
- package/python/lib/python3.13/encodings/bz2_codec.py +78 -0
- package/python/lib/python3.13/encodings/charmap.py +69 -0
- package/python/lib/python3.13/encodings/cp037.py +307 -0
- package/python/lib/python3.13/encodings/cp1006.py +307 -0
- package/python/lib/python3.13/encodings/cp1026.py +307 -0
- package/python/lib/python3.13/encodings/cp1125.py +698 -0
- package/python/lib/python3.13/encodings/cp1140.py +307 -0
- package/python/lib/python3.13/encodings/cp1250.py +307 -0
- package/python/lib/python3.13/encodings/cp1251.py +307 -0
- package/python/lib/python3.13/encodings/cp1252.py +307 -0
- package/python/lib/python3.13/encodings/cp1253.py +307 -0
- package/python/lib/python3.13/encodings/cp1254.py +307 -0
- package/python/lib/python3.13/encodings/cp1255.py +307 -0
- package/python/lib/python3.13/encodings/cp1256.py +307 -0
- package/python/lib/python3.13/encodings/cp1257.py +307 -0
- package/python/lib/python3.13/encodings/cp1258.py +307 -0
- package/python/lib/python3.13/encodings/cp273.py +307 -0
- package/python/lib/python3.13/encodings/cp424.py +307 -0
- package/python/lib/python3.13/encodings/cp437.py +698 -0
- package/python/lib/python3.13/encodings/cp500.py +307 -0
- package/python/lib/python3.13/encodings/cp720.py +309 -0
- package/python/lib/python3.13/encodings/cp737.py +698 -0
- package/python/lib/python3.13/encodings/cp775.py +697 -0
- package/python/lib/python3.13/encodings/cp850.py +698 -0
- package/python/lib/python3.13/encodings/cp852.py +698 -0
- package/python/lib/python3.13/encodings/cp855.py +698 -0
- package/python/lib/python3.13/encodings/cp856.py +307 -0
- package/python/lib/python3.13/encodings/cp857.py +694 -0
- package/python/lib/python3.13/encodings/cp858.py +698 -0
- package/python/lib/python3.13/encodings/cp860.py +698 -0
- package/python/lib/python3.13/encodings/cp861.py +698 -0
- package/python/lib/python3.13/encodings/cp862.py +698 -0
- package/python/lib/python3.13/encodings/cp863.py +698 -0
- package/python/lib/python3.13/encodings/cp864.py +690 -0
- package/python/lib/python3.13/encodings/cp865.py +698 -0
- package/python/lib/python3.13/encodings/cp866.py +698 -0
- package/python/lib/python3.13/encodings/cp869.py +689 -0
- package/python/lib/python3.13/encodings/cp874.py +307 -0
- package/python/lib/python3.13/encodings/cp875.py +307 -0
- package/python/lib/python3.13/encodings/cp932.py +39 -0
- package/python/lib/python3.13/encodings/cp949.py +39 -0
- package/python/lib/python3.13/encodings/cp950.py +39 -0
- package/python/lib/python3.13/encodings/euc_jis_2004.py +39 -0
- package/python/lib/python3.13/encodings/euc_jisx0213.py +39 -0
- package/python/lib/python3.13/encodings/euc_jp.py +39 -0
- package/python/lib/python3.13/encodings/euc_kr.py +39 -0
- package/python/lib/python3.13/encodings/gb18030.py +39 -0
- package/python/lib/python3.13/encodings/gb2312.py +39 -0
- package/python/lib/python3.13/encodings/gbk.py +39 -0
- package/python/lib/python3.13/encodings/hex_codec.py +55 -0
- package/python/lib/python3.13/encodings/hp_roman8.py +314 -0
- package/python/lib/python3.13/encodings/hz.py +39 -0
- package/python/lib/python3.13/encodings/idna.py +387 -0
- package/python/lib/python3.13/encodings/iso2022_jp.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_1.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_2.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_2004.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_3.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_jp_ext.py +39 -0
- package/python/lib/python3.13/encodings/iso2022_kr.py +39 -0
- package/python/lib/python3.13/encodings/iso8859_1.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_10.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_11.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_13.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_14.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_15.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_16.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_2.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_3.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_4.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_5.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_6.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_7.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_8.py +307 -0
- package/python/lib/python3.13/encodings/iso8859_9.py +307 -0
- package/python/lib/python3.13/encodings/johab.py +39 -0
- package/python/lib/python3.13/encodings/koi8_r.py +307 -0
- package/python/lib/python3.13/encodings/koi8_t.py +308 -0
- package/python/lib/python3.13/encodings/koi8_u.py +307 -0
- package/python/lib/python3.13/encodings/kz1048.py +307 -0
- package/python/lib/python3.13/encodings/latin_1.py +50 -0
- package/python/lib/python3.13/encodings/mac_arabic.py +698 -0
- package/python/lib/python3.13/encodings/mac_croatian.py +307 -0
- package/python/lib/python3.13/encodings/mac_cyrillic.py +307 -0
- package/python/lib/python3.13/encodings/mac_farsi.py +307 -0
- package/python/lib/python3.13/encodings/mac_greek.py +307 -0
- package/python/lib/python3.13/encodings/mac_iceland.py +307 -0
- package/python/lib/python3.13/encodings/mac_latin2.py +312 -0
- package/python/lib/python3.13/encodings/mac_roman.py +307 -0
- package/python/lib/python3.13/encodings/mac_romanian.py +307 -0
- package/python/lib/python3.13/encodings/mac_turkish.py +307 -0
- package/python/lib/python3.13/encodings/mbcs.py +47 -0
- package/python/lib/python3.13/encodings/oem.py +41 -0
- package/python/lib/python3.13/encodings/palmos.py +308 -0
- package/python/lib/python3.13/encodings/ptcp154.py +312 -0
- package/python/lib/python3.13/encodings/punycode.py +253 -0
- package/python/lib/python3.13/encodings/quopri_codec.py +56 -0
- package/python/lib/python3.13/encodings/raw_unicode_escape.py +46 -0
- package/python/lib/python3.13/encodings/rot_13.py +113 -0
- package/python/lib/python3.13/encodings/shift_jis.py +39 -0
- package/python/lib/python3.13/encodings/shift_jis_2004.py +39 -0
- package/python/lib/python3.13/encodings/shift_jisx0213.py +39 -0
- package/python/lib/python3.13/encodings/tis_620.py +307 -0
- package/python/lib/python3.13/encodings/undefined.py +49 -0
- package/python/lib/python3.13/encodings/unicode_escape.py +46 -0
- package/python/lib/python3.13/encodings/utf_16.py +155 -0
- package/python/lib/python3.13/encodings/utf_16_be.py +42 -0
- package/python/lib/python3.13/encodings/utf_16_le.py +42 -0
- package/python/lib/python3.13/encodings/utf_32.py +150 -0
- package/python/lib/python3.13/encodings/utf_32_be.py +37 -0
- package/python/lib/python3.13/encodings/utf_32_le.py +37 -0
- package/python/lib/python3.13/encodings/utf_7.py +38 -0
- package/python/lib/python3.13/encodings/utf_8.py +42 -0
- package/python/lib/python3.13/encodings/utf_8_sig.py +130 -0
- package/python/lib/python3.13/encodings/uu_codec.py +103 -0
- package/python/lib/python3.13/encodings/zlib_codec.py +77 -0
- package/python/lib/python3.13/ensurepip/__init__.py +264 -0
- package/python/lib/python3.13/ensurepip/__main__.py +5 -0
- package/python/lib/python3.13/ensurepip/_bundled/pip-25.3-py3-none-any.whl +0 -0
- package/python/lib/python3.13/ensurepip/_uninstall.py +31 -0
- package/python/lib/python3.13/enum.py +2182 -0
- package/python/lib/python3.13/filecmp.py +320 -0
- package/python/lib/python3.13/fileinput.py +442 -0
- package/python/lib/python3.13/fnmatch.py +192 -0
- package/python/lib/python3.13/fractions.py +1043 -0
- package/python/lib/python3.13/ftplib.py +966 -0
- package/python/lib/python3.13/functools.py +1036 -0
- package/python/lib/python3.13/genericpath.py +200 -0
- package/python/lib/python3.13/getopt.py +215 -0
- package/python/lib/python3.13/getpass.py +192 -0
- package/python/lib/python3.13/gettext.py +657 -0
- package/python/lib/python3.13/glob.py +551 -0
- package/python/lib/python3.13/graphlib.py +250 -0
- package/python/lib/python3.13/gzip.py +691 -0
- package/python/lib/python3.13/hashlib.py +255 -0
- package/python/lib/python3.13/heapq.py +603 -0
- package/python/lib/python3.13/hmac.py +220 -0
- package/python/lib/python3.13/html/__init__.py +132 -0
- package/python/lib/python3.13/html/entities.py +2513 -0
- package/python/lib/python3.13/html/parser.py +553 -0
- package/python/lib/python3.13/http/__init__.py +202 -0
- package/python/lib/python3.13/http/client.py +1570 -0
- package/python/lib/python3.13/http/cookiejar.py +2122 -0
- package/python/lib/python3.13/http/cookies.py +615 -0
- package/python/lib/python3.13/http/server.py +1351 -0
- package/python/lib/python3.13/idlelib/CREDITS.txt +48 -0
- package/python/lib/python3.13/idlelib/ChangeLog +1591 -0
- package/python/lib/python3.13/idlelib/HISTORY.txt +296 -0
- package/python/lib/python3.13/idlelib/Icons/README.txt +51 -0
- package/python/lib/python3.13/idlelib/Icons/folder.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle.ico +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_16.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_16.png +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_256.png +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_32.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_32.png +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_48.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/idle_48.png +0 -0
- package/python/lib/python3.13/idlelib/Icons/minusnode.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/openfolder.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/plusnode.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/python.gif +0 -0
- package/python/lib/python3.13/idlelib/Icons/tk.gif +0 -0
- package/python/lib/python3.13/idlelib/NEWS2x.txt +660 -0
- package/python/lib/python3.13/idlelib/News3.txt +1407 -0
- package/python/lib/python3.13/idlelib/README.txt +290 -0
- package/python/lib/python3.13/idlelib/TODO.txt +210 -0
- package/python/lib/python3.13/idlelib/__init__.py +10 -0
- package/python/lib/python3.13/idlelib/__main__.py +7 -0
- package/python/lib/python3.13/idlelib/autocomplete.py +228 -0
- package/python/lib/python3.13/idlelib/autocomplete_w.py +498 -0
- package/python/lib/python3.13/idlelib/autoexpand.py +96 -0
- package/python/lib/python3.13/idlelib/browser.py +260 -0
- package/python/lib/python3.13/idlelib/calltip.py +205 -0
- package/python/lib/python3.13/idlelib/calltip_w.py +202 -0
- package/python/lib/python3.13/idlelib/codecontext.py +270 -0
- package/python/lib/python3.13/idlelib/colorizer.py +384 -0
- package/python/lib/python3.13/idlelib/config-extensions.def +62 -0
- package/python/lib/python3.13/idlelib/config-highlight.def +105 -0
- package/python/lib/python3.13/idlelib/config-keys.def +309 -0
- package/python/lib/python3.13/idlelib/config-main.def +92 -0
- package/python/lib/python3.13/idlelib/config.py +917 -0
- package/python/lib/python3.13/idlelib/config_key.py +354 -0
- package/python/lib/python3.13/idlelib/configdialog.py +2408 -0
- package/python/lib/python3.13/idlelib/debugger.py +602 -0
- package/python/lib/python3.13/idlelib/debugger_r.py +390 -0
- package/python/lib/python3.13/idlelib/debugobj.py +146 -0
- package/python/lib/python3.13/idlelib/debugobj_r.py +41 -0
- package/python/lib/python3.13/idlelib/delegator.py +34 -0
- package/python/lib/python3.13/idlelib/dynoption.py +57 -0
- package/python/lib/python3.13/idlelib/editor.py +1721 -0
- package/python/lib/python3.13/idlelib/extend.txt +83 -0
- package/python/lib/python3.13/idlelib/filelist.py +132 -0
- package/python/lib/python3.13/idlelib/format.py +426 -0
- package/python/lib/python3.13/idlelib/grep.py +223 -0
- package/python/lib/python3.13/idlelib/help.html +865 -0
- package/python/lib/python3.13/idlelib/help.py +343 -0
- package/python/lib/python3.13/idlelib/help_about.py +211 -0
- package/python/lib/python3.13/idlelib/history.py +106 -0
- package/python/lib/python3.13/idlelib/hyperparser.py +312 -0
- package/python/lib/python3.13/idlelib/idle.bat +4 -0
- package/python/lib/python3.13/idlelib/idle.py +14 -0
- package/python/lib/python3.13/idlelib/idle.pyw +17 -0
- package/python/lib/python3.13/idlelib/iomenu.py +441 -0
- package/python/lib/python3.13/idlelib/macosx.py +278 -0
- package/python/lib/python3.13/idlelib/mainmenu.py +126 -0
- package/python/lib/python3.13/idlelib/multicall.py +451 -0
- package/python/lib/python3.13/idlelib/outwin.py +188 -0
- package/python/lib/python3.13/idlelib/parenmatch.py +183 -0
- package/python/lib/python3.13/idlelib/pathbrowser.py +107 -0
- package/python/lib/python3.13/idlelib/percolator.py +120 -0
- package/python/lib/python3.13/idlelib/pyparse.py +589 -0
- package/python/lib/python3.13/idlelib/pyshell.py +1699 -0
- package/python/lib/python3.13/idlelib/query.py +390 -0
- package/python/lib/python3.13/idlelib/redirector.py +174 -0
- package/python/lib/python3.13/idlelib/replace.py +299 -0
- package/python/lib/python3.13/idlelib/rpc.py +635 -0
- package/python/lib/python3.13/idlelib/run.py +653 -0
- package/python/lib/python3.13/idlelib/runscript.py +213 -0
- package/python/lib/python3.13/idlelib/scrolledlist.py +151 -0
- package/python/lib/python3.13/idlelib/search.py +165 -0
- package/python/lib/python3.13/idlelib/searchbase.py +210 -0
- package/python/lib/python3.13/idlelib/searchengine.py +234 -0
- package/python/lib/python3.13/idlelib/sidebar.py +543 -0
- package/python/lib/python3.13/idlelib/squeezer.py +345 -0
- package/python/lib/python3.13/idlelib/stackviewer.py +134 -0
- package/python/lib/python3.13/idlelib/statusbar.py +52 -0
- package/python/lib/python3.13/idlelib/textview.py +193 -0
- package/python/lib/python3.13/idlelib/tooltip.py +190 -0
- package/python/lib/python3.13/idlelib/tree.py +509 -0
- package/python/lib/python3.13/idlelib/undo.py +367 -0
- package/python/lib/python3.13/idlelib/util.py +37 -0
- package/python/lib/python3.13/idlelib/window.py +98 -0
- package/python/lib/python3.13/idlelib/zoomheight.py +124 -0
- package/python/lib/python3.13/idlelib/zzdummy.py +73 -0
- package/python/lib/python3.13/imaplib.py +1651 -0
- package/python/lib/python3.13/importlib/__init__.py +136 -0
- package/python/lib/python3.13/importlib/_abc.py +39 -0
- package/python/lib/python3.13/importlib/_bootstrap.py +1551 -0
- package/python/lib/python3.13/importlib/_bootstrap_external.py +1826 -0
- package/python/lib/python3.13/importlib/abc.py +243 -0
- package/python/lib/python3.13/importlib/machinery.py +21 -0
- package/python/lib/python3.13/importlib/metadata/__init__.py +1093 -0
- package/python/lib/python3.13/importlib/metadata/_adapters.py +89 -0
- package/python/lib/python3.13/importlib/metadata/_collections.py +30 -0
- package/python/lib/python3.13/importlib/metadata/_functools.py +104 -0
- package/python/lib/python3.13/importlib/metadata/_itertools.py +73 -0
- package/python/lib/python3.13/importlib/metadata/_meta.py +67 -0
- package/python/lib/python3.13/importlib/metadata/_text.py +99 -0
- package/python/lib/python3.13/importlib/metadata/diagnose.py +21 -0
- package/python/lib/python3.13/importlib/readers.py +12 -0
- package/python/lib/python3.13/importlib/resources/__init__.py +43 -0
- package/python/lib/python3.13/importlib/resources/_adapters.py +168 -0
- package/python/lib/python3.13/importlib/resources/_common.py +211 -0
- package/python/lib/python3.13/importlib/resources/_functional.py +81 -0
- package/python/lib/python3.13/importlib/resources/_itertools.py +38 -0
- package/python/lib/python3.13/importlib/resources/abc.py +173 -0
- package/python/lib/python3.13/importlib/resources/readers.py +203 -0
- package/python/lib/python3.13/importlib/resources/simple.py +106 -0
- package/python/lib/python3.13/importlib/simple.py +14 -0
- package/python/lib/python3.13/importlib/util.py +274 -0
- package/python/lib/python3.13/inspect.py +3471 -0
- package/python/lib/python3.13/io.py +99 -0
- package/python/lib/python3.13/ipaddress.py +2440 -0
- package/python/lib/python3.13/json/__init__.py +365 -0
- package/python/lib/python3.13/json/decoder.py +364 -0
- package/python/lib/python3.13/json/encoder.py +446 -0
- package/python/lib/python3.13/json/scanner.py +73 -0
- package/python/lib/python3.13/json/tool.py +89 -0
- package/python/lib/python3.13/keyword.py +64 -0
- package/python/lib/python3.13/lib-dynload/.empty +0 -0
- package/python/lib/python3.13/lib-dynload/_ctypes_test.cpython-313-darwin.so +0 -0
- package/python/lib/python3.13/lib-dynload/_dbm.cpython-313-darwin.so +0 -0
- package/python/lib/python3.13/lib-dynload/_tkinter.cpython-313-darwin.so +0 -0
- package/python/lib/python3.13/linecache.py +236 -0
- package/python/lib/python3.13/locale.py +1778 -0
- package/python/lib/python3.13/logging/__init__.py +2326 -0
- package/python/lib/python3.13/logging/config.py +1065 -0
- package/python/lib/python3.13/logging/handlers.py +1629 -0
- package/python/lib/python3.13/lzma.py +364 -0
- package/python/lib/python3.13/mailbox.py +2219 -0
- package/python/lib/python3.13/mimetypes.py +679 -0
- package/python/lib/python3.13/modulefinder.py +671 -0
- package/python/lib/python3.13/multiprocessing/__init__.py +37 -0
- package/python/lib/python3.13/multiprocessing/connection.py +1190 -0
- package/python/lib/python3.13/multiprocessing/context.py +377 -0
- package/python/lib/python3.13/multiprocessing/dummy/__init__.py +126 -0
- package/python/lib/python3.13/multiprocessing/dummy/connection.py +75 -0
- package/python/lib/python3.13/multiprocessing/forkserver.py +364 -0
- package/python/lib/python3.13/multiprocessing/heap.py +337 -0
- package/python/lib/python3.13/multiprocessing/managers.py +1397 -0
- package/python/lib/python3.13/multiprocessing/pool.py +957 -0
- package/python/lib/python3.13/multiprocessing/popen_fork.py +87 -0
- package/python/lib/python3.13/multiprocessing/popen_forkserver.py +74 -0
- package/python/lib/python3.13/multiprocessing/popen_spawn_posix.py +76 -0
- package/python/lib/python3.13/multiprocessing/popen_spawn_win32.py +147 -0
- package/python/lib/python3.13/multiprocessing/process.py +436 -0
- package/python/lib/python3.13/multiprocessing/queues.py +399 -0
- package/python/lib/python3.13/multiprocessing/reduction.py +281 -0
- package/python/lib/python3.13/multiprocessing/resource_sharer.py +154 -0
- package/python/lib/python3.13/multiprocessing/resource_tracker.py +420 -0
- package/python/lib/python3.13/multiprocessing/shared_memory.py +544 -0
- package/python/lib/python3.13/multiprocessing/sharedctypes.py +240 -0
- package/python/lib/python3.13/multiprocessing/spawn.py +307 -0
- package/python/lib/python3.13/multiprocessing/synchronize.py +404 -0
- package/python/lib/python3.13/multiprocessing/util.py +562 -0
- package/python/lib/python3.13/netrc.py +199 -0
- package/python/lib/python3.13/ntpath.py +870 -0
- package/python/lib/python3.13/nturl2path.py +69 -0
- package/python/lib/python3.13/numbers.py +427 -0
- package/python/lib/python3.13/opcode.py +115 -0
- package/python/lib/python3.13/operator.py +467 -0
- package/python/lib/python3.13/optparse.py +1681 -0
- package/python/lib/python3.13/os.py +1184 -0
- package/python/lib/python3.13/pathlib/__init__.py +12 -0
- package/python/lib/python3.13/pathlib/_abc.py +930 -0
- package/python/lib/python3.13/pathlib/_local.py +861 -0
- package/python/lib/python3.13/pdb.py +2550 -0
- package/python/lib/python3.13/pickle.py +1866 -0
- package/python/lib/python3.13/pickletools.py +2904 -0
- package/python/lib/python3.13/pkgutil.py +529 -0
- package/python/lib/python3.13/platform.py +1454 -0
- package/python/lib/python3.13/plistlib.py +948 -0
- package/python/lib/python3.13/poplib.py +477 -0
- package/python/lib/python3.13/posixpath.py +578 -0
- package/python/lib/python3.13/pprint.py +658 -0
- package/python/lib/python3.13/profile.py +616 -0
- package/python/lib/python3.13/pstats.py +778 -0
- package/python/lib/python3.13/pty.py +211 -0
- package/python/lib/python3.13/py_compile.py +212 -0
- package/python/lib/python3.13/pyclbr.py +314 -0
- package/python/lib/python3.13/pydoc.py +2859 -0
- package/python/lib/python3.13/pydoc_data/__init__.py +0 -0
- package/python/lib/python3.13/pydoc_data/_pydoc.css +112 -0
- package/python/lib/python3.13/pydoc_data/module_docs.py +314 -0
- package/python/lib/python3.13/pydoc_data/topics.py +13000 -0
- package/python/lib/python3.13/queue.py +383 -0
- package/python/lib/python3.13/quopri.py +237 -0
- package/python/lib/python3.13/random.py +1070 -0
- package/python/lib/python3.13/re/__init__.py +428 -0
- package/python/lib/python3.13/re/_casefix.py +106 -0
- package/python/lib/python3.13/re/_compiler.py +768 -0
- package/python/lib/python3.13/re/_constants.py +222 -0
- package/python/lib/python3.13/re/_parser.py +1081 -0
- package/python/lib/python3.13/reprlib.py +230 -0
- package/python/lib/python3.13/rlcompleter.py +221 -0
- package/python/lib/python3.13/runpy.py +319 -0
- package/python/lib/python3.13/sched.py +167 -0
- package/python/lib/python3.13/secrets.py +71 -0
- package/python/lib/python3.13/selectors.py +603 -0
- package/python/lib/python3.13/shelve.py +250 -0
- package/python/lib/python3.13/shlex.py +345 -0
- package/python/lib/python3.13/shutil.py +1583 -0
- package/python/lib/python3.13/signal.py +94 -0
- package/python/lib/python3.13/site-packages/README.txt +2 -0
- package/python/lib/python3.13/site-packages/pip/__init__.py +13 -0
- package/python/lib/python3.13/site-packages/pip/__main__.py +24 -0
- package/python/lib/python3.13/site-packages/pip/__pip-runner__.py +50 -0
- package/python/lib/python3.13/site-packages/pip/_internal/__init__.py +18 -0
- package/python/lib/python3.13/site-packages/pip/_internal/build_env.py +606 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cache.py +291 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/__init__.py +3 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/autocompletion.py +184 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/base_command.py +255 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/cmdoptions.py +1267 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/command_context.py +28 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/index_command.py +195 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/main.py +85 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/main_parser.py +136 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/parser.py +358 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/progress_bars.py +153 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/req_command.py +447 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/spinners.py +235 -0
- package/python/lib/python3.13/site-packages/pip/_internal/cli/status_codes.py +6 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/__init__.py +139 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/cache.py +255 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/check.py +66 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/completion.py +136 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/configuration.py +288 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/debug.py +203 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/download.py +146 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/freeze.py +107 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/hash.py +58 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/help.py +40 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/index.py +166 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/inspect.py +92 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/install.py +810 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/list.py +398 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/lock.py +175 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/search.py +178 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/show.py +231 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/uninstall.py +113 -0
- package/python/lib/python3.13/site-packages/pip/_internal/commands/wheel.py +171 -0
- package/python/lib/python3.13/site-packages/pip/_internal/configuration.py +396 -0
- package/python/lib/python3.13/site-packages/pip/_internal/distributions/__init__.py +21 -0
- package/python/lib/python3.13/site-packages/pip/_internal/distributions/base.py +55 -0
- package/python/lib/python3.13/site-packages/pip/_internal/distributions/installed.py +33 -0
- package/python/lib/python3.13/site-packages/pip/_internal/distributions/sdist.py +164 -0
- package/python/lib/python3.13/site-packages/pip/_internal/distributions/wheel.py +44 -0
- package/python/lib/python3.13/site-packages/pip/_internal/exceptions.py +971 -0
- package/python/lib/python3.13/site-packages/pip/_internal/index/__init__.py +1 -0
- package/python/lib/python3.13/site-packages/pip/_internal/index/collector.py +488 -0
- package/python/lib/python3.13/site-packages/pip/_internal/index/package_finder.py +1125 -0
- package/python/lib/python3.13/site-packages/pip/_internal/index/sources.py +287 -0
- package/python/lib/python3.13/site-packages/pip/_internal/locations/__init__.py +440 -0
- package/python/lib/python3.13/site-packages/pip/_internal/locations/_distutils.py +173 -0
- package/python/lib/python3.13/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
- package/python/lib/python3.13/site-packages/pip/_internal/locations/base.py +82 -0
- package/python/lib/python3.13/site-packages/pip/_internal/main.py +12 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/__init__.py +169 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/_json.py +87 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/base.py +685 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
- package/python/lib/python3.13/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/__init__.py +1 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/candidate.py +25 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/direct_url.py +227 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/format_control.py +78 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/index.py +28 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/installation_report.py +57 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/link.py +617 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/release_control.py +92 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/scheme.py +25 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/search_scope.py +126 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/selection_prefs.py +56 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/target_python.py +122 -0
- package/python/lib/python3.13/site-packages/pip/_internal/models/wheel.py +80 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/__init__.py +1 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/auth.py +568 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/cache.py +128 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/download.py +341 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/session.py +532 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/utils.py +98 -0
- package/python/lib/python3.13/site-packages/pip/_internal/network/xmlrpc.py +61 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/metadata.py +38 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/wheel.py +38 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/check.py +175 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/freeze.py +259 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/install/__init__.py +1 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/install/wheel.py +745 -0
- package/python/lib/python3.13/site-packages/pip/_internal/operations/prepare.py +747 -0
- package/python/lib/python3.13/site-packages/pip/_internal/pyproject.py +123 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/__init__.py +103 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/constructors.py +568 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/pep723.py +41 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/req_file.py +631 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/req_install.py +828 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/req_set.py +81 -0
- package/python/lib/python3.13/site-packages/pip/_internal/req/req_uninstall.py +639 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/base.py +20 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/factory.py +856 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
- package/python/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
- package/python/lib/python3.13/site-packages/pip/_internal/self_outdated_check.py +255 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/_log.py +38 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/appdirs.py +52 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/compat.py +85 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/datetime.py +28 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/deprecation.py +126 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/egg_link.py +81 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/entrypoints.py +88 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/filesystem.py +203 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/filetypes.py +24 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/glibc.py +102 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/hashes.py +150 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/logging.py +396 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/misc.py +771 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/packaging.py +44 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/pylock.py +116 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/retry.py +45 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/subprocess.py +248 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/temp_dir.py +294 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/unpacking.py +362 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/urls.py +55 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/virtualenv.py +105 -0
- package/python/lib/python3.13/site-packages/pip/_internal/utils/wheel.py +132 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/__init__.py +15 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/bazaar.py +130 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/git.py +571 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/mercurial.py +186 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/subversion.py +335 -0
- package/python/lib/python3.13/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
- package/python/lib/python3.13/site-packages/pip/_internal/wheel_builder.py +261 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/README.rst +180 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/__init__.py +117 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/LICENSE +20 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/__init__.py +4 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/cacert.pem +4468 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/core.py +83 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/certifi/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/LICENSE.txt +284 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/__init__.py +33 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/compat.py +1137 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/resources.py +358 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/scripts.py +447 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t32.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t64-arm.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/t64.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/util.py +1984 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w32.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w64-arm.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distlib/w64.exe +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distro/LICENSE +202 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distro/__init__.py +54 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distro/__main__.py +4 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distro/distro.py +1403 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/distro/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/LICENSE.md +31 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/__init__.py +45 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/codec.py +122 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/compat.py +15 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/core.py +437 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/intranges.py +57 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/package_data.py +1 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/COPYING +14 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/ext.py +170 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE +3 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE.APACHE +177 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/LICENSE.BSD +23 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/__init__.py +15 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_parser.py +365 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_structures.py +69 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/licenses/__init__.py +147 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/markers.py +388 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/metadata.py +978 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/pylock.py +635 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/requirements.py +86 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/specifiers.py +1068 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/tags.py +651 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/utils.py +158 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/packaging/version.py +792 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pkg_resources/LICENSE +17 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/android.py +249 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/api.py +299 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/version.py +34 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/LICENSE +25 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/__init__.py +82 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/__main__.py +17 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/console.py +70 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/filter.py +70 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatter.py +129 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexer.py +963 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/modeline.py +43 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/plugin.py +72 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/scanner.py +104 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/style.py +203 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/token.py +214 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/unistring.py +153 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pygments/util.py +324 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/LICENSE +175 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/__init__.py +179 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/__version__.py +14 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/adapters.py +696 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/api.py +157 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/auth.py +314 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/certs.py +17 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/compat.py +90 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/cookies.py +561 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/exceptions.py +151 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/help.py +127 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/hooks.py +33 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/models.py +1039 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/packages.py +25 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/sessions.py +831 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/status_codes.py +128 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/structures.py +99 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/requests/utils.py +1086 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/LICENSE +13 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/LICENSE +19 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/__init__.py +177 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/__main__.py +245 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_export_format.py +76 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_extension.py +10 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_fileno.py +24 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_inspect.py +268 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_log_render.py +94 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_loop.py +43 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_null_file.py +69 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_palettes.py +309 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_pick.py +17 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_ratio.py +153 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_spinners.py +482 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_stack.py +16 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_timer.py +19 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_windows.py +71 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/_wrap.py +93 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/abc.py +33 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/align.py +306 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/ansi.py +241 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/bar.py +93 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/box.py +474 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/cells.py +174 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/color.py +621 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/columns.py +187 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/console.py +2680 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/constrain.py +37 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/containers.py +167 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/control.py +219 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/default_styles.py +193 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/diagnose.py +39 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/emoji.py +91 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/errors.py +34 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/filesize.py +88 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/highlighter.py +232 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/json.py +139 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/jupyter.py +101 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/layout.py +442 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/live.py +400 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/live_render.py +106 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/logging.py +297 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/markup.py +251 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/measure.py +151 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/padding.py +141 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/pager.py +34 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/palette.py +100 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/panel.py +317 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/pretty.py +1016 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/progress.py +1715 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/prompt.py +400 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/protocol.py +42 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/region.py +10 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/repr.py +149 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/rule.py +130 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/scope.py +86 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/screen.py +54 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/segment.py +752 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/spinner.py +132 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/status.py +131 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/style.py +792 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/styled.py +42 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/syntax.py +985 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/table.py +1006 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/text.py +1361 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/theme.py +115 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/themes.py +5 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/traceback.py +899 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/rich/tree.py +257 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/__init__.py +8 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_parser.py +777 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_re.py +115 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/_types.py +10 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli/py.typed +1 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/__init__.py +36 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_api.py +341 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_macos.py +571 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/_windows.py +567 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/truststore/py.typed +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/LICENSE.txt +21 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/connection.py +572 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/request.py +191 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/response.py +879 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
- package/python/lib/python3.13/site-packages/pip/_vendor/vendor.txt +19 -0
- package/python/lib/python3.13/site-packages/pip/py.typed +4 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/INSTALLER +1 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/METADATA +111 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/RECORD +879 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/REQUESTED +0 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/WHEEL +4 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/direct_url.json +1 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/entry_points.txt +4 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/AUTHORS.txt +860 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/LICENSE.txt +20 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/cachecontrol/LICENSE.txt +13 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/certifi/LICENSE +20 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/dependency_groups/LICENSE.txt +9 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distlib/LICENSE.txt +284 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/distro/LICENSE +202 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/idna/LICENSE.md +31 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/msgpack/COPYING +14 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE +3 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.APACHE +177 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/packaging/LICENSE.BSD +23 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pkg_resources/LICENSE +17 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/platformdirs/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pygments/LICENSE +25 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/pyproject_hooks/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/requests/LICENSE +175 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/resolvelib/LICENSE +13 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/rich/LICENSE +19 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/tomli_w/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/truststore/LICENSE +21 -0
- package/python/lib/python3.13/site-packages/pip-26.0.1.dist-info/licenses/src/pip/_vendor/urllib3/LICENSE.txt +21 -0
- package/python/lib/python3.13/site.py +773 -0
- package/python/lib/python3.13/smtplib.py +1123 -0
- package/python/lib/python3.13/socket.py +982 -0
- package/python/lib/python3.13/socketserver.py +863 -0
- package/python/lib/python3.13/sqlite3/__init__.py +70 -0
- package/python/lib/python3.13/sqlite3/__main__.py +139 -0
- package/python/lib/python3.13/sqlite3/dbapi2.py +108 -0
- package/python/lib/python3.13/sqlite3/dump.py +113 -0
- package/python/lib/python3.13/sre_compile.py +7 -0
- package/python/lib/python3.13/sre_constants.py +7 -0
- package/python/lib/python3.13/sre_parse.py +7 -0
- package/python/lib/python3.13/ssl.py +1529 -0
- package/python/lib/python3.13/stat.py +212 -0
- package/python/lib/python3.13/statistics.py +1817 -0
- package/python/lib/python3.13/string.py +309 -0
- package/python/lib/python3.13/stringprep.py +272 -0
- package/python/lib/python3.13/struct.py +15 -0
- package/python/lib/python3.13/subprocess.py +2258 -0
- package/python/lib/python3.13/symtable.py +414 -0
- package/python/lib/python3.13/sysconfig/__init__.py +726 -0
- package/python/lib/python3.13/sysconfig/__main__.py +248 -0
- package/python/lib/python3.13/tabnanny.py +340 -0
- package/python/lib/python3.13/tarfile.py +3070 -0
- package/python/lib/python3.13/tempfile.py +957 -0
- package/python/lib/python3.13/textwrap.py +497 -0
- package/python/lib/python3.13/this.py +28 -0
- package/python/lib/python3.13/threading.py +1602 -0
- package/python/lib/python3.13/timeit.py +381 -0
- package/python/lib/python3.13/tkinter/__init__.py +5002 -0
- package/python/lib/python3.13/tkinter/__main__.py +7 -0
- package/python/lib/python3.13/tkinter/colorchooser.py +86 -0
- package/python/lib/python3.13/tkinter/commondialog.py +53 -0
- package/python/lib/python3.13/tkinter/constants.py +110 -0
- package/python/lib/python3.13/tkinter/dialog.py +49 -0
- package/python/lib/python3.13/tkinter/dnd.py +324 -0
- package/python/lib/python3.13/tkinter/filedialog.py +492 -0
- package/python/lib/python3.13/tkinter/font.py +239 -0
- package/python/lib/python3.13/tkinter/messagebox.py +146 -0
- package/python/lib/python3.13/tkinter/scrolledtext.py +56 -0
- package/python/lib/python3.13/tkinter/simpledialog.py +441 -0
- package/python/lib/python3.13/tkinter/ttk.py +1647 -0
- package/python/lib/python3.13/token.py +141 -0
- package/python/lib/python3.13/tokenize.py +592 -0
- package/python/lib/python3.13/tomllib/__init__.py +10 -0
- package/python/lib/python3.13/tomllib/_parser.py +691 -0
- package/python/lib/python3.13/tomllib/_re.py +107 -0
- package/python/lib/python3.13/tomllib/_types.py +10 -0
- package/python/lib/python3.13/tomllib/mypy.ini +17 -0
- package/python/lib/python3.13/trace.py +754 -0
- package/python/lib/python3.13/traceback.py +1638 -0
- package/python/lib/python3.13/tracemalloc.py +560 -0
- package/python/lib/python3.13/tty.py +73 -0
- package/python/lib/python3.13/turtle.py +4199 -0
- package/python/lib/python3.13/turtledemo/__init__.py +14 -0
- package/python/lib/python3.13/turtledemo/__main__.py +401 -0
- package/python/lib/python3.13/turtledemo/bytedesign.py +161 -0
- package/python/lib/python3.13/turtledemo/chaos.py +59 -0
- package/python/lib/python3.13/turtledemo/clock.py +138 -0
- package/python/lib/python3.13/turtledemo/colormixer.py +58 -0
- package/python/lib/python3.13/turtledemo/forest.py +108 -0
- package/python/lib/python3.13/turtledemo/fractalcurves.py +138 -0
- package/python/lib/python3.13/turtledemo/lindenmayer.py +119 -0
- package/python/lib/python3.13/turtledemo/minimal_hanoi.py +79 -0
- package/python/lib/python3.13/turtledemo/nim.py +226 -0
- package/python/lib/python3.13/turtledemo/paint.py +54 -0
- package/python/lib/python3.13/turtledemo/peace.py +61 -0
- package/python/lib/python3.13/turtledemo/penrose.py +175 -0
- package/python/lib/python3.13/turtledemo/planet_and_moon.py +111 -0
- package/python/lib/python3.13/turtledemo/rosette.py +65 -0
- package/python/lib/python3.13/turtledemo/round_dance.py +86 -0
- package/python/lib/python3.13/turtledemo/sorting_animate.py +204 -0
- package/python/lib/python3.13/turtledemo/tree.py +62 -0
- package/python/lib/python3.13/turtledemo/turtle.cfg +10 -0
- package/python/lib/python3.13/turtledemo/two_canvases.py +54 -0
- package/python/lib/python3.13/turtledemo/yinyang.py +49 -0
- package/python/lib/python3.13/types.py +345 -0
- package/python/lib/python3.13/typing.py +3831 -0
- package/python/lib/python3.13/unittest/__init__.py +80 -0
- package/python/lib/python3.13/unittest/__main__.py +18 -0
- package/python/lib/python3.13/unittest/_log.py +86 -0
- package/python/lib/python3.13/unittest/async_case.py +146 -0
- package/python/lib/python3.13/unittest/case.py +1478 -0
- package/python/lib/python3.13/unittest/loader.py +453 -0
- package/python/lib/python3.13/unittest/main.py +280 -0
- package/python/lib/python3.13/unittest/mock.py +3179 -0
- package/python/lib/python3.13/unittest/result.py +256 -0
- package/python/lib/python3.13/unittest/runner.py +292 -0
- package/python/lib/python3.13/unittest/signals.py +71 -0
- package/python/lib/python3.13/unittest/suite.py +379 -0
- package/python/lib/python3.13/unittest/util.py +170 -0
- package/python/lib/python3.13/urllib/__init__.py +0 -0
- package/python/lib/python3.13/urllib/error.py +74 -0
- package/python/lib/python3.13/urllib/parse.py +1262 -0
- package/python/lib/python3.13/urllib/request.py +2797 -0
- package/python/lib/python3.13/urllib/response.py +84 -0
- package/python/lib/python3.13/urllib/robotparser.py +286 -0
- package/python/lib/python3.13/uuid.py +784 -0
- package/python/lib/python3.13/venv/__init__.py +687 -0
- package/python/lib/python3.13/venv/__main__.py +10 -0
- package/python/lib/python3.13/venv/scripts/common/Activate.ps1 +248 -0
- package/python/lib/python3.13/venv/scripts/common/activate +76 -0
- package/python/lib/python3.13/venv/scripts/common/activate.fish +69 -0
- package/python/lib/python3.13/venv/scripts/posix/activate.csh +27 -0
- package/python/lib/python3.13/warnings.py +735 -0
- package/python/lib/python3.13/wave.py +665 -0
- package/python/lib/python3.13/weakref.py +674 -0
- package/python/lib/python3.13/webbrowser.py +710 -0
- package/python/lib/python3.13/wsgiref/__init__.py +25 -0
- package/python/lib/python3.13/wsgiref/handlers.py +573 -0
- package/python/lib/python3.13/wsgiref/headers.py +187 -0
- package/python/lib/python3.13/wsgiref/simple_server.py +161 -0
- package/python/lib/python3.13/wsgiref/types.py +54 -0
- package/python/lib/python3.13/wsgiref/util.py +159 -0
- package/python/lib/python3.13/wsgiref/validate.py +438 -0
- package/python/lib/python3.13/xml/__init__.py +20 -0
- package/python/lib/python3.13/xml/dom/NodeFilter.py +27 -0
- package/python/lib/python3.13/xml/dom/__init__.py +140 -0
- package/python/lib/python3.13/xml/dom/domreg.py +99 -0
- package/python/lib/python3.13/xml/dom/expatbuilder.py +962 -0
- package/python/lib/python3.13/xml/dom/minicompat.py +109 -0
- package/python/lib/python3.13/xml/dom/minidom.py +2024 -0
- package/python/lib/python3.13/xml/dom/pulldom.py +336 -0
- package/python/lib/python3.13/xml/dom/xmlbuilder.py +389 -0
- package/python/lib/python3.13/xml/etree/ElementInclude.py +186 -0
- package/python/lib/python3.13/xml/etree/ElementPath.py +423 -0
- package/python/lib/python3.13/xml/etree/ElementTree.py +2098 -0
- package/python/lib/python3.13/xml/etree/__init__.py +33 -0
- package/python/lib/python3.13/xml/etree/cElementTree.py +3 -0
- package/python/lib/python3.13/xml/parsers/__init__.py +8 -0
- package/python/lib/python3.13/xml/parsers/expat.py +8 -0
- package/python/lib/python3.13/xml/sax/__init__.py +94 -0
- package/python/lib/python3.13/xml/sax/_exceptions.py +127 -0
- package/python/lib/python3.13/xml/sax/expatreader.py +454 -0
- package/python/lib/python3.13/xml/sax/handler.py +387 -0
- package/python/lib/python3.13/xml/sax/saxutils.py +369 -0
- package/python/lib/python3.13/xml/sax/xmlreader.py +378 -0
- package/python/lib/python3.13/xmlrpc/__init__.py +1 -0
- package/python/lib/python3.13/xmlrpc/client.py +1503 -0
- package/python/lib/python3.13/xmlrpc/server.py +1002 -0
- package/python/lib/python3.13/zipapp.py +229 -0
- package/python/lib/python3.13/zipfile/__init__.py +2375 -0
- package/python/lib/python3.13/zipfile/__main__.py +4 -0
- package/python/lib/python3.13/zipfile/_path/__init__.py +452 -0
- package/python/lib/python3.13/zipfile/_path/glob.py +113 -0
- package/python/lib/python3.13/zipimport.py +803 -0
- package/python/lib/python3.13/zoneinfo/__init__.py +34 -0
- package/python/lib/python3.13/zoneinfo/_common.py +168 -0
- package/python/lib/python3.13/zoneinfo/_tzpath.py +189 -0
- package/python/lib/python3.13/zoneinfo/_zoneinfo.py +772 -0
- package/python/lib/tcl9/9.0/http-2.10.1.tm +5475 -0
- package/python/lib/tcl9/9.0/msgcat-1.7.1.tm +1349 -0
- package/python/lib/tcl9/9.0/platform/shell-1.1.4.tm +241 -0
- package/python/lib/tcl9/9.0/platform-1.1.0.tm +443 -0
- package/python/lib/tcl9/9.0/tcltest-2.5.10.tm +3588 -0
- package/python/lib/tcl9.0/auto.tcl +711 -0
- package/python/lib/tcl9.0/clock.tcl +2110 -0
- package/python/lib/tcl9.0/cookiejar0.2/cookiejar.tcl +746 -0
- package/python/lib/tcl9.0/cookiejar0.2/idna.tcl +292 -0
- package/python/lib/tcl9.0/cookiejar0.2/pkgIndex.tcl +3 -0
- package/python/lib/tcl9.0/cookiejar0.2/public_suffix_list.dat.gz +0 -0
- package/python/lib/tcl9.0/encoding/ascii.enc +20 -0
- package/python/lib/tcl9.0/encoding/big5.enc +1516 -0
- package/python/lib/tcl9.0/encoding/cns11643.enc +1584 -0
- package/python/lib/tcl9.0/encoding/cp1250.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1251.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1252.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1253.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1254.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1255.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1256.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1257.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp1258.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp165.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp437.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp737.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp775.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp850.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp852.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp855.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp857.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp860.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp861.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp862.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp863.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp864.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp865.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp866.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp869.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp874.enc +20 -0
- package/python/lib/tcl9.0/encoding/cp932.enc +801 -0
- package/python/lib/tcl9.0/encoding/cp936.enc +2162 -0
- package/python/lib/tcl9.0/encoding/cp949.enc +2128 -0
- package/python/lib/tcl9.0/encoding/cp950.enc +1499 -0
- package/python/lib/tcl9.0/encoding/dingbats.enc +20 -0
- package/python/lib/tcl9.0/encoding/ebcdic.enc +20 -0
- package/python/lib/tcl9.0/encoding/euc-cn.enc +1397 -0
- package/python/lib/tcl9.0/encoding/euc-jp.enc +1353 -0
- package/python/lib/tcl9.0/encoding/euc-kr.enc +1533 -0
- package/python/lib/tcl9.0/encoding/gb12345.enc +1414 -0
- package/python/lib/tcl9.0/encoding/gb1988.enc +20 -0
- package/python/lib/tcl9.0/encoding/gb2312-raw.enc +1380 -0
- package/python/lib/tcl9.0/encoding/gb2312.enc +1397 -0
- package/python/lib/tcl9.0/encoding/iso2022-jp.enc +12 -0
- package/python/lib/tcl9.0/encoding/iso2022-kr.enc +7 -0
- package/python/lib/tcl9.0/encoding/iso2022.enc +14 -0
- package/python/lib/tcl9.0/encoding/iso8859-1.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-10.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-11.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-13.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-14.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-15.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-16.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-2.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-3.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-4.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-5.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-6.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-7.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-8.enc +20 -0
- package/python/lib/tcl9.0/encoding/iso8859-9.enc +20 -0
- package/python/lib/tcl9.0/encoding/jis0201.enc +20 -0
- package/python/lib/tcl9.0/encoding/jis0208.enc +1319 -0
- package/python/lib/tcl9.0/encoding/jis0212.enc +1159 -0
- package/python/lib/tcl9.0/encoding/koi8-r.enc +20 -0
- package/python/lib/tcl9.0/encoding/koi8-ru.enc +20 -0
- package/python/lib/tcl9.0/encoding/koi8-t.enc +20 -0
- package/python/lib/tcl9.0/encoding/koi8-u.enc +20 -0
- package/python/lib/tcl9.0/encoding/ksc5601.enc +1516 -0
- package/python/lib/tcl9.0/encoding/macCentEuro.enc +20 -0
- package/python/lib/tcl9.0/encoding/macCroatian.enc +20 -0
- package/python/lib/tcl9.0/encoding/macCyrillic.enc +20 -0
- package/python/lib/tcl9.0/encoding/macDingbats.enc +20 -0
- package/python/lib/tcl9.0/encoding/macGreek.enc +20 -0
- package/python/lib/tcl9.0/encoding/macIceland.enc +20 -0
- package/python/lib/tcl9.0/encoding/macJapan.enc +785 -0
- package/python/lib/tcl9.0/encoding/macRoman.enc +20 -0
- package/python/lib/tcl9.0/encoding/macRomania.enc +20 -0
- package/python/lib/tcl9.0/encoding/macThai.enc +20 -0
- package/python/lib/tcl9.0/encoding/macTurkish.enc +20 -0
- package/python/lib/tcl9.0/encoding/macUkraine.enc +20 -0
- package/python/lib/tcl9.0/encoding/shiftjis.enc +690 -0
- package/python/lib/tcl9.0/encoding/symbol.enc +20 -0
- package/python/lib/tcl9.0/encoding/tis-620.enc +20 -0
- package/python/lib/tcl9.0/foreachline.tcl +25 -0
- package/python/lib/tcl9.0/history.tcl +335 -0
- package/python/lib/tcl9.0/icu.tcl +145 -0
- package/python/lib/tcl9.0/init.tcl +773 -0
- package/python/lib/tcl9.0/install.tcl +275 -0
- package/python/lib/tcl9.0/msgs/af.msg +49 -0
- package/python/lib/tcl9.0/msgs/af_za.msg +6 -0
- package/python/lib/tcl9.0/msgs/ar.msg +54 -0
- package/python/lib/tcl9.0/msgs/ar_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/ar_jo.msg +39 -0
- package/python/lib/tcl9.0/msgs/ar_lb.msg +39 -0
- package/python/lib/tcl9.0/msgs/ar_sy.msg +39 -0
- package/python/lib/tcl9.0/msgs/be.msg +52 -0
- package/python/lib/tcl9.0/msgs/bg.msg +52 -0
- package/python/lib/tcl9.0/msgs/bn.msg +49 -0
- package/python/lib/tcl9.0/msgs/bn_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/ca.msg +50 -0
- package/python/lib/tcl9.0/msgs/cs.msg +54 -0
- package/python/lib/tcl9.0/msgs/da.msg +52 -0
- package/python/lib/tcl9.0/msgs/de.msg +54 -0
- package/python/lib/tcl9.0/msgs/de_at.msg +35 -0
- package/python/lib/tcl9.0/msgs/de_be.msg +53 -0
- package/python/lib/tcl9.0/msgs/el.msg +52 -0
- package/python/lib/tcl9.0/msgs/en_au.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_be.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_bw.msg +6 -0
- package/python/lib/tcl9.0/msgs/en_ca.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_gb.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_hk.msg +8 -0
- package/python/lib/tcl9.0/msgs/en_ie.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_in.msg +8 -0
- package/python/lib/tcl9.0/msgs/en_nz.msg +7 -0
- package/python/lib/tcl9.0/msgs/en_ph.msg +8 -0
- package/python/lib/tcl9.0/msgs/en_sg.msg +6 -0
- package/python/lib/tcl9.0/msgs/en_za.msg +6 -0
- package/python/lib/tcl9.0/msgs/en_zw.msg +6 -0
- package/python/lib/tcl9.0/msgs/eo.msg +54 -0
- package/python/lib/tcl9.0/msgs/es.msg +52 -0
- package/python/lib/tcl9.0/msgs/es_ar.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_bo.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_cl.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_co.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_cr.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_do.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_ec.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_gt.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_hn.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_mx.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_ni.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_pa.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_pe.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_pr.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_py.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_sv.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_uy.msg +6 -0
- package/python/lib/tcl9.0/msgs/es_ve.msg +6 -0
- package/python/lib/tcl9.0/msgs/et.msg +52 -0
- package/python/lib/tcl9.0/msgs/eu.msg +47 -0
- package/python/lib/tcl9.0/msgs/eu_es.msg +7 -0
- package/python/lib/tcl9.0/msgs/fa.msg +47 -0
- package/python/lib/tcl9.0/msgs/fa_in.msg +52 -0
- package/python/lib/tcl9.0/msgs/fa_ir.msg +9 -0
- package/python/lib/tcl9.0/msgs/fi.msg +50 -0
- package/python/lib/tcl9.0/msgs/fo.msg +47 -0
- package/python/lib/tcl9.0/msgs/fo_fo.msg +7 -0
- package/python/lib/tcl9.0/msgs/fr.msg +52 -0
- package/python/lib/tcl9.0/msgs/fr_be.msg +7 -0
- package/python/lib/tcl9.0/msgs/fr_ca.msg +7 -0
- package/python/lib/tcl9.0/msgs/fr_ch.msg +7 -0
- package/python/lib/tcl9.0/msgs/ga.msg +47 -0
- package/python/lib/tcl9.0/msgs/ga_ie.msg +7 -0
- package/python/lib/tcl9.0/msgs/gl.msg +47 -0
- package/python/lib/tcl9.0/msgs/gl_es.msg +6 -0
- package/python/lib/tcl9.0/msgs/gv.msg +47 -0
- package/python/lib/tcl9.0/msgs/gv_gb.msg +6 -0
- package/python/lib/tcl9.0/msgs/he.msg +52 -0
- package/python/lib/tcl9.0/msgs/hi.msg +39 -0
- package/python/lib/tcl9.0/msgs/hi_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/hr.msg +50 -0
- package/python/lib/tcl9.0/msgs/hu.msg +54 -0
- package/python/lib/tcl9.0/msgs/id.msg +47 -0
- package/python/lib/tcl9.0/msgs/id_id.msg +6 -0
- package/python/lib/tcl9.0/msgs/is.msg +50 -0
- package/python/lib/tcl9.0/msgs/it.msg +54 -0
- package/python/lib/tcl9.0/msgs/it_ch.msg +6 -0
- package/python/lib/tcl9.0/msgs/ja.msg +44 -0
- package/python/lib/tcl9.0/msgs/kl.msg +47 -0
- package/python/lib/tcl9.0/msgs/kl_gl.msg +7 -0
- package/python/lib/tcl9.0/msgs/ko.msg +55 -0
- package/python/lib/tcl9.0/msgs/ko_kr.msg +8 -0
- package/python/lib/tcl9.0/msgs/kok.msg +39 -0
- package/python/lib/tcl9.0/msgs/kok_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/kw.msg +47 -0
- package/python/lib/tcl9.0/msgs/kw_gb.msg +6 -0
- package/python/lib/tcl9.0/msgs/lt.msg +52 -0
- package/python/lib/tcl9.0/msgs/lv.msg +52 -0
- package/python/lib/tcl9.0/msgs/mk.msg +52 -0
- package/python/lib/tcl9.0/msgs/mr.msg +39 -0
- package/python/lib/tcl9.0/msgs/mr_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/ms.msg +47 -0
- package/python/lib/tcl9.0/msgs/ms_my.msg +6 -0
- package/python/lib/tcl9.0/msgs/mt.msg +27 -0
- package/python/lib/tcl9.0/msgs/nb.msg +52 -0
- package/python/lib/tcl9.0/msgs/nl.msg +50 -0
- package/python/lib/tcl9.0/msgs/nl_be.msg +7 -0
- package/python/lib/tcl9.0/msgs/nn.msg +52 -0
- package/python/lib/tcl9.0/msgs/pl.msg +52 -0
- package/python/lib/tcl9.0/msgs/pt.msg +50 -0
- package/python/lib/tcl9.0/msgs/pt_br.msg +7 -0
- package/python/lib/tcl9.0/msgs/ro.msg +52 -0
- package/python/lib/tcl9.0/msgs/ru.msg +52 -0
- package/python/lib/tcl9.0/msgs/ru_ua.msg +6 -0
- package/python/lib/tcl9.0/msgs/sh.msg +52 -0
- package/python/lib/tcl9.0/msgs/sk.msg +52 -0
- package/python/lib/tcl9.0/msgs/sl.msg +52 -0
- package/python/lib/tcl9.0/msgs/sq.msg +54 -0
- package/python/lib/tcl9.0/msgs/sr.msg +52 -0
- package/python/lib/tcl9.0/msgs/sv.msg +52 -0
- package/python/lib/tcl9.0/msgs/sw.msg +49 -0
- package/python/lib/tcl9.0/msgs/ta.msg +39 -0
- package/python/lib/tcl9.0/msgs/ta_in.msg +6 -0
- package/python/lib/tcl9.0/msgs/te.msg +47 -0
- package/python/lib/tcl9.0/msgs/te_in.msg +8 -0
- package/python/lib/tcl9.0/msgs/th.msg +54 -0
- package/python/lib/tcl9.0/msgs/tr.msg +50 -0
- package/python/lib/tcl9.0/msgs/uk.msg +52 -0
- package/python/lib/tcl9.0/msgs/vi.msg +50 -0
- package/python/lib/tcl9.0/msgs/zh.msg +55 -0
- package/python/lib/tcl9.0/msgs/zh_cn.msg +7 -0
- package/python/lib/tcl9.0/msgs/zh_hk.msg +28 -0
- package/python/lib/tcl9.0/msgs/zh_sg.msg +8 -0
- package/python/lib/tcl9.0/msgs/zh_tw.msg +8 -0
- package/python/lib/tcl9.0/opt0.4/optparse.tcl +1069 -0
- package/python/lib/tcl9.0/opt0.4/pkgIndex.tcl +12 -0
- package/python/lib/tcl9.0/package.tcl +767 -0
- package/python/lib/tcl9.0/parray.tcl +28 -0
- package/python/lib/tcl9.0/readfile.tcl +23 -0
- package/python/lib/tcl9.0/safe.tcl +1461 -0
- package/python/lib/tcl9.0/tclAppInit.c +183 -0
- package/python/lib/tcl9.0/tclIndex +112 -0
- package/python/lib/tcl9.0/tm.tcl +378 -0
- package/python/lib/tcl9.0/word.tcl +155 -0
- package/python/lib/tcl9.0/writefile.tcl +37 -0
- package/python/lib/thread3.0.4/libtcl9thread3.0.4.dylib +0 -0
- package/python/lib/thread3.0.4/libthread3.0.4.dylib +0 -0
- package/python/lib/thread3.0.4/pkgIndex.tcl +52 -0
- package/python/lib/thread3.0.4/ttrace.tcl +943 -0
- package/python/lib/tk9.0/bgerror.tcl +282 -0
- package/python/lib/tk9.0/button.tcl +782 -0
- package/python/lib/tk9.0/choosedir.tcl +310 -0
- package/python/lib/tk9.0/clrpick.tcl +696 -0
- package/python/lib/tk9.0/comdlg.tcl +322 -0
- package/python/lib/tk9.0/console.tcl +1148 -0
- package/python/lib/tk9.0/demos/README +44 -0
- package/python/lib/tk9.0/demos/anilabel.tcl +168 -0
- package/python/lib/tk9.0/demos/aniwave.tcl +107 -0
- package/python/lib/tk9.0/demos/arrow.tcl +260 -0
- package/python/lib/tk9.0/demos/bind.tcl +78 -0
- package/python/lib/tk9.0/demos/bitmap.tcl +52 -0
- package/python/lib/tk9.0/demos/browse +66 -0
- package/python/lib/tk9.0/demos/button.tcl +47 -0
- package/python/lib/tk9.0/demos/check.tcl +71 -0
- package/python/lib/tk9.0/demos/clrpick.tcl +54 -0
- package/python/lib/tk9.0/demos/colors.tcl +99 -0
- package/python/lib/tk9.0/demos/combo.tcl +62 -0
- package/python/lib/tk9.0/demos/cscroll.tcl +134 -0
- package/python/lib/tk9.0/demos/ctext.tcl +172 -0
- package/python/lib/tk9.0/demos/dialog1.tcl +25 -0
- package/python/lib/tk9.0/demos/dialog2.tcl +18 -0
- package/python/lib/tk9.0/demos/en.msg +103 -0
- package/python/lib/tk9.0/demos/entry1.tcl +34 -0
- package/python/lib/tk9.0/demos/entry2.tcl +47 -0
- package/python/lib/tk9.0/demos/entry3.tcl +185 -0
- package/python/lib/tk9.0/demos/filebox.tcl +82 -0
- package/python/lib/tk9.0/demos/floor.tcl +1379 -0
- package/python/lib/tk9.0/demos/fontchoose.tcl +67 -0
- package/python/lib/tk9.0/demos/form.tcl +38 -0
- package/python/lib/tk9.0/demos/goldberg.tcl +1970 -0
- package/python/lib/tk9.0/demos/hello +22 -0
- package/python/lib/tk9.0/demos/hscale.tcl +49 -0
- package/python/lib/tk9.0/demos/icon.tcl +51 -0
- package/python/lib/tk9.0/demos/image1.tcl +44 -0
- package/python/lib/tk9.0/demos/image2.tcl +114 -0
- package/python/lib/tk9.0/demos/images/Tcl.svg +75 -0
- package/python/lib/tk9.0/demos/images/Tk_feather.png +0 -0
- package/python/lib/tk9.0/demos/images/earth.gif +0 -0
- package/python/lib/tk9.0/demos/images/earthmenu.png +0 -0
- package/python/lib/tk9.0/demos/images/earthris.gif +0 -0
- package/python/lib/tk9.0/demos/images/flagdown.xbm +27 -0
- package/python/lib/tk9.0/demos/images/flagup.xbm +27 -0
- package/python/lib/tk9.0/demos/images/gray25.xbm +6 -0
- package/python/lib/tk9.0/demos/images/letters.xbm +27 -0
- package/python/lib/tk9.0/demos/images/noletter.xbm +27 -0
- package/python/lib/tk9.0/demos/images/ouster.png +0 -0
- package/python/lib/tk9.0/demos/images/pattern.xbm +6 -0
- package/python/lib/tk9.0/demos/images/plowed_field.png +0 -0
- package/python/lib/tk9.0/demos/images/starry_night.png +0 -0
- package/python/lib/tk9.0/demos/images/tcllogo.gif +0 -0
- package/python/lib/tk9.0/demos/images/teapot.ppm +31 -0
- package/python/lib/tk9.0/demos/items.tcl +307 -0
- package/python/lib/tk9.0/demos/ixset +328 -0
- package/python/lib/tk9.0/demos/knightstour.tcl +274 -0
- package/python/lib/tk9.0/demos/label.tcl +47 -0
- package/python/lib/tk9.0/demos/labelframe.tcl +76 -0
- package/python/lib/tk9.0/demos/license.terms +40 -0
- package/python/lib/tk9.0/demos/mac_styles.tcl +266 -0
- package/python/lib/tk9.0/demos/mac_tabs.tcl +76 -0
- package/python/lib/tk9.0/demos/mac_wm.tcl +227 -0
- package/python/lib/tk9.0/demos/mclist.tcl +170 -0
- package/python/lib/tk9.0/demos/menu.tcl +184 -0
- package/python/lib/tk9.0/demos/menubu.tcl +90 -0
- package/python/lib/tk9.0/demos/msgbox.tcl +62 -0
- package/python/lib/tk9.0/demos/nl.msg +132 -0
- package/python/lib/tk9.0/demos/paned1.tcl +32 -0
- package/python/lib/tk9.0/demos/paned2.tcl +74 -0
- package/python/lib/tk9.0/demos/pendulum.tcl +206 -0
- package/python/lib/tk9.0/demos/plot.tcl +97 -0
- package/python/lib/tk9.0/demos/print.tcl +91 -0
- package/python/lib/tk9.0/demos/puzzle.tcl +82 -0
- package/python/lib/tk9.0/demos/radio.tcl +66 -0
- package/python/lib/tk9.0/demos/rmt +210 -0
- package/python/lib/tk9.0/demos/rolodex +204 -0
- package/python/lib/tk9.0/demos/ruler.tcl +175 -0
- package/python/lib/tk9.0/demos/sayings.tcl +44 -0
- package/python/lib/tk9.0/demos/search.tcl +139 -0
- package/python/lib/tk9.0/demos/spin.tcl +45 -0
- package/python/lib/tk9.0/demos/states.tcl +54 -0
- package/python/lib/tk9.0/demos/style.tcl +155 -0
- package/python/lib/tk9.0/demos/systray.tcl +89 -0
- package/python/lib/tk9.0/demos/tclIndex +70 -0
- package/python/lib/tk9.0/demos/tcolor +358 -0
- package/python/lib/tk9.0/demos/text.tcl +113 -0
- package/python/lib/tk9.0/demos/textpeer.tcl +62 -0
- package/python/lib/tk9.0/demos/timer +47 -0
- package/python/lib/tk9.0/demos/toolbar.tcl +92 -0
- package/python/lib/tk9.0/demos/tree.tcl +89 -0
- package/python/lib/tk9.0/demos/ttkbut.tcl +84 -0
- package/python/lib/tk9.0/demos/ttkmenu.tcl +53 -0
- package/python/lib/tk9.0/demos/ttknote.tcl +57 -0
- package/python/lib/tk9.0/demos/ttkpane.tcl +112 -0
- package/python/lib/tk9.0/demos/ttkprogress.tcl +46 -0
- package/python/lib/tk9.0/demos/ttkscale.tcl +39 -0
- package/python/lib/tk9.0/demos/ttkspin.tcl +49 -0
- package/python/lib/tk9.0/demos/twind.tcl +358 -0
- package/python/lib/tk9.0/demos/unicodeout.tcl +126 -0
- package/python/lib/tk9.0/demos/vscale.tcl +50 -0
- package/python/lib/tk9.0/demos/widget +713 -0
- package/python/lib/tk9.0/demos/windowicons.tcl +108 -0
- package/python/lib/tk9.0/dialog.tcl +175 -0
- package/python/lib/tk9.0/entry.tcl +720 -0
- package/python/lib/tk9.0/focus.tcl +178 -0
- package/python/lib/tk9.0/fontchooser.tcl +512 -0
- package/python/lib/tk9.0/iconbadges.tcl +253 -0
- package/python/lib/tk9.0/iconlist.tcl +705 -0
- package/python/lib/tk9.0/icons.tcl +54 -0
- package/python/lib/tk9.0/images/README +7 -0
- package/python/lib/tk9.0/images/logo.eps +2091 -0
- package/python/lib/tk9.0/images/logo100.gif +0 -0
- package/python/lib/tk9.0/images/logo64.gif +0 -0
- package/python/lib/tk9.0/images/logoLarge.gif +0 -0
- package/python/lib/tk9.0/images/logoMed.gif +0 -0
- package/python/lib/tk9.0/images/pwrdLogo.eps +1897 -0
- package/python/lib/tk9.0/images/pwrdLogo100.gif +0 -0
- package/python/lib/tk9.0/images/pwrdLogo150.gif +0 -0
- package/python/lib/tk9.0/images/pwrdLogo175.gif +0 -0
- package/python/lib/tk9.0/images/pwrdLogo200.gif +0 -0
- package/python/lib/tk9.0/images/pwrdLogo75.gif +0 -0
- package/python/lib/tk9.0/images/tai-ku.gif +0 -0
- package/python/lib/tk9.0/listbox.tcl +522 -0
- package/python/lib/tk9.0/megawidget.tcl +297 -0
- package/python/lib/tk9.0/menu.tcl +1376 -0
- package/python/lib/tk9.0/mkpsenc.tcl +1488 -0
- package/python/lib/tk9.0/msgbox.tcl +454 -0
- package/python/lib/tk9.0/msgs/cs.msg +95 -0
- package/python/lib/tk9.0/msgs/da.msg +96 -0
- package/python/lib/tk9.0/msgs/de.msg +109 -0
- package/python/lib/tk9.0/msgs/el.msg +104 -0
- package/python/lib/tk9.0/msgs/en.msg +110 -0
- package/python/lib/tk9.0/msgs/en_gb.msg +3 -0
- package/python/lib/tk9.0/msgs/eo.msg +93 -0
- package/python/lib/tk9.0/msgs/es.msg +94 -0
- package/python/lib/tk9.0/msgs/fi.msg +114 -0
- package/python/lib/tk9.0/msgs/fr.msg +90 -0
- package/python/lib/tk9.0/msgs/hu.msg +96 -0
- package/python/lib/tk9.0/msgs/it.msg +91 -0
- package/python/lib/tk9.0/msgs/nl.msg +109 -0
- package/python/lib/tk9.0/msgs/pl.msg +109 -0
- package/python/lib/tk9.0/msgs/pt.msg +92 -0
- package/python/lib/tk9.0/msgs/ru.msg +112 -0
- package/python/lib/tk9.0/msgs/sv.msg +94 -0
- package/python/lib/tk9.0/msgs/zh_cn.msg +111 -0
- package/python/lib/tk9.0/optMenu.tcl +43 -0
- package/python/lib/tk9.0/palette.tcl +283 -0
- package/python/lib/tk9.0/panedwindow.tcl +194 -0
- package/python/lib/tk9.0/pkgIndex.tcl +3 -0
- package/python/lib/tk9.0/print.tcl +1460 -0
- package/python/lib/tk9.0/safetk.tcl +262 -0
- package/python/lib/tk9.0/scale.tcl +299 -0
- package/python/lib/tk9.0/scaling.tcl +232 -0
- package/python/lib/tk9.0/scrlbar.tcl +500 -0
- package/python/lib/tk9.0/spinbox.tcl +580 -0
- package/python/lib/tk9.0/systray.tcl +483 -0
- package/python/lib/tk9.0/tclIndex +252 -0
- package/python/lib/tk9.0/tearoff.tcl +155 -0
- package/python/lib/tk9.0/text.tcl +1295 -0
- package/python/lib/tk9.0/tk.tcl +853 -0
- package/python/lib/tk9.0/tkAppInit.c +200 -0
- package/python/lib/tk9.0/tkfbox.tcl +1251 -0
- package/python/lib/tk9.0/ttk/altTheme.tcl +153 -0
- package/python/lib/tk9.0/ttk/aquaTheme.tcl +178 -0
- package/python/lib/tk9.0/ttk/button.tcl +83 -0
- package/python/lib/tk9.0/ttk/clamTheme.tcl +196 -0
- package/python/lib/tk9.0/ttk/classicTheme.tcl +145 -0
- package/python/lib/tk9.0/ttk/combobox.tcl +555 -0
- package/python/lib/tk9.0/ttk/cursors.tcl +205 -0
- package/python/lib/tk9.0/ttk/defaults.tcl +231 -0
- package/python/lib/tk9.0/ttk/entry.tcl +678 -0
- package/python/lib/tk9.0/ttk/fonts.tcl +152 -0
- package/python/lib/tk9.0/ttk/menubutton.tcl +237 -0
- package/python/lib/tk9.0/ttk/notebook.tcl +255 -0
- package/python/lib/tk9.0/ttk/panedwindow.tcl +89 -0
- package/python/lib/tk9.0/ttk/progress.tcl +55 -0
- package/python/lib/tk9.0/ttk/scale.tcl +94 -0
- package/python/lib/tk9.0/ttk/scrollbar.tcl +119 -0
- package/python/lib/tk9.0/ttk/sizegrip.tcl +102 -0
- package/python/lib/tk9.0/ttk/spinbox.tcl +204 -0
- package/python/lib/tk9.0/ttk/treeview.tcl +464 -0
- package/python/lib/tk9.0/ttk/ttk.tcl +223 -0
- package/python/lib/tk9.0/ttk/utils.tcl +317 -0
- package/python/lib/tk9.0/ttk/vistaTheme.tcl +259 -0
- package/python/lib/tk9.0/ttk/winTheme.tcl +119 -0
- package/python/lib/tk9.0/ttk/xpTheme.tcl +95 -0
- package/python/lib/tk9.0/xmfbox.tcl +982 -0
- package/python/share/man/man1/python3.13.1 +740 -0
- package/runtime-manifest.json +7 -0
|
@@ -0,0 +1,2110 @@
|
|
|
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 © 2004-2007 Kevin B. Kenny
|
|
13
|
+
# Copyright © 2015 Sergey G. Brester aka sebres.
|
|
14
|
+
# See the file "license.terms" for information on usage and redistribution
|
|
15
|
+
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
16
|
+
#
|
|
17
|
+
#----------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
# msgcat 1.7 features are used.
|
|
20
|
+
|
|
21
|
+
package require msgcat 1.7
|
|
22
|
+
|
|
23
|
+
# Put the library directory into the namespace for the ensemble so that the
|
|
24
|
+
# library code can find message catalogs and time zone definition files.
|
|
25
|
+
|
|
26
|
+
namespace eval ::tcl::clock \
|
|
27
|
+
[list variable LibDir [info library]]
|
|
28
|
+
|
|
29
|
+
#----------------------------------------------------------------------
|
|
30
|
+
#
|
|
31
|
+
# clock --
|
|
32
|
+
#
|
|
33
|
+
# Manipulate times.
|
|
34
|
+
#
|
|
35
|
+
# The 'clock' command manipulates time. Refer to the user documentation for
|
|
36
|
+
# the available subcommands and what they do.
|
|
37
|
+
#
|
|
38
|
+
#----------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
namespace eval ::tcl::clock {
|
|
41
|
+
|
|
42
|
+
# Export the subcommands
|
|
43
|
+
|
|
44
|
+
namespace export format
|
|
45
|
+
namespace export clicks
|
|
46
|
+
namespace export microseconds
|
|
47
|
+
namespace export milliseconds
|
|
48
|
+
namespace export scan
|
|
49
|
+
namespace export seconds
|
|
50
|
+
namespace export add
|
|
51
|
+
|
|
52
|
+
# Import the message catalog commands that we use.
|
|
53
|
+
|
|
54
|
+
namespace import ::msgcat::mclocale
|
|
55
|
+
namespace import ::msgcat::mcpackagelocale
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#----------------------------------------------------------------------
|
|
60
|
+
#
|
|
61
|
+
# ::tcl::clock::Initialize --
|
|
62
|
+
#
|
|
63
|
+
# Finish initializing the 'clock' subsystem
|
|
64
|
+
#
|
|
65
|
+
# Results:
|
|
66
|
+
# None.
|
|
67
|
+
#
|
|
68
|
+
# Side effects:
|
|
69
|
+
# Namespace variable in the 'clock' subsystem are initialized.
|
|
70
|
+
#
|
|
71
|
+
# The '::tcl::clock::Initialize' procedure initializes the namespace variables
|
|
72
|
+
# and root locale message catalog for the 'clock' subsystem. It is broken
|
|
73
|
+
# into a procedure rather than simply evaluated as a script so that it will be
|
|
74
|
+
# able to use local variables, avoiding the dangers of 'creative writing' as
|
|
75
|
+
# in Bug 1185933.
|
|
76
|
+
#
|
|
77
|
+
#----------------------------------------------------------------------
|
|
78
|
+
|
|
79
|
+
proc ::tcl::clock::Initialize {} {
|
|
80
|
+
|
|
81
|
+
rename ::tcl::clock::Initialize {}
|
|
82
|
+
|
|
83
|
+
variable LibDir
|
|
84
|
+
|
|
85
|
+
# Define the Greenwich time zone
|
|
86
|
+
|
|
87
|
+
proc InitTZData {} {
|
|
88
|
+
variable TZData
|
|
89
|
+
array unset TZData
|
|
90
|
+
set TZData(:Etc/GMT) {
|
|
91
|
+
{-9223372036854775808 0 0 GMT}
|
|
92
|
+
}
|
|
93
|
+
set TZData(:GMT) $TZData(:Etc/GMT)
|
|
94
|
+
set TZData(:Etc/UTC) {
|
|
95
|
+
{-9223372036854775808 0 0 UTC}
|
|
96
|
+
}
|
|
97
|
+
set TZData(:UTC) $TZData(:Etc/UTC)
|
|
98
|
+
set TZData(:localtime) {}
|
|
99
|
+
}
|
|
100
|
+
InitTZData
|
|
101
|
+
|
|
102
|
+
mcpackagelocale set {}
|
|
103
|
+
::msgcat::mcpackageconfig set mcfolder [file join $LibDir msgs]
|
|
104
|
+
::msgcat::mcpackageconfig set unknowncmd ""
|
|
105
|
+
::msgcat::mcpackageconfig set changecmd ChangeCurrentLocale
|
|
106
|
+
|
|
107
|
+
# Define the message catalog for the root locale.
|
|
108
|
+
|
|
109
|
+
::msgcat::mcmset {} {
|
|
110
|
+
AM {am}
|
|
111
|
+
BCE {B.C.E.}
|
|
112
|
+
CE {C.E.}
|
|
113
|
+
DATE_FORMAT {%m/%d/%Y}
|
|
114
|
+
DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
|
|
115
|
+
DAYS_OF_WEEK_ABBREV {
|
|
116
|
+
Sun Mon Tue Wed Thu Fri Sat
|
|
117
|
+
}
|
|
118
|
+
DAYS_OF_WEEK_FULL {
|
|
119
|
+
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
|
|
120
|
+
}
|
|
121
|
+
GREGORIAN_CHANGE_DATE 2299161
|
|
122
|
+
LOCALE_DATE_FORMAT {%m/%d/%Y}
|
|
123
|
+
LOCALE_DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
|
|
124
|
+
LOCALE_ERAS {}
|
|
125
|
+
LOCALE_NUMERALS {
|
|
126
|
+
00 01 02 03 04 05 06 07 08 09
|
|
127
|
+
10 11 12 13 14 15 16 17 18 19
|
|
128
|
+
20 21 22 23 24 25 26 27 28 29
|
|
129
|
+
30 31 32 33 34 35 36 37 38 39
|
|
130
|
+
40 41 42 43 44 45 46 47 48 49
|
|
131
|
+
50 51 52 53 54 55 56 57 58 59
|
|
132
|
+
60 61 62 63 64 65 66 67 68 69
|
|
133
|
+
70 71 72 73 74 75 76 77 78 79
|
|
134
|
+
80 81 82 83 84 85 86 87 88 89
|
|
135
|
+
90 91 92 93 94 95 96 97 98 99
|
|
136
|
+
}
|
|
137
|
+
LOCALE_TIME_FORMAT {%H:%M:%S}
|
|
138
|
+
LOCALE_YEAR_FORMAT {%EC%Ey}
|
|
139
|
+
MONTHS_ABBREV {
|
|
140
|
+
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
|
141
|
+
}
|
|
142
|
+
MONTHS_FULL {
|
|
143
|
+
January February March
|
|
144
|
+
April May June
|
|
145
|
+
July August September
|
|
146
|
+
October November December
|
|
147
|
+
}
|
|
148
|
+
PM {pm}
|
|
149
|
+
TIME_FORMAT {%H:%M:%S}
|
|
150
|
+
TIME_FORMAT_12 {%I:%M:%S %P}
|
|
151
|
+
TIME_FORMAT_24 {%H:%M}
|
|
152
|
+
TIME_FORMAT_24_SECS {%H:%M:%S}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
# Define a few Gregorian change dates for other locales. In most cases
|
|
156
|
+
# the change date follows a language, because a nation's colonies changed
|
|
157
|
+
# at the same time as the nation itself. In many cases, different
|
|
158
|
+
# national boundaries existed; the dominating rule is to follow the
|
|
159
|
+
# nation's capital.
|
|
160
|
+
|
|
161
|
+
# Italy, Spain, Portugal, Poland
|
|
162
|
+
|
|
163
|
+
::msgcat::mcset it GREGORIAN_CHANGE_DATE 2299161
|
|
164
|
+
::msgcat::mcset es GREGORIAN_CHANGE_DATE 2299161
|
|
165
|
+
::msgcat::mcset pt GREGORIAN_CHANGE_DATE 2299161
|
|
166
|
+
::msgcat::mcset pl GREGORIAN_CHANGE_DATE 2299161
|
|
167
|
+
|
|
168
|
+
# France, Austria
|
|
169
|
+
|
|
170
|
+
::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227
|
|
171
|
+
|
|
172
|
+
# For Belgium, we follow Southern Netherlands; Liege Diocese changed
|
|
173
|
+
# several weeks later.
|
|
174
|
+
|
|
175
|
+
::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238
|
|
176
|
+
::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238
|
|
177
|
+
|
|
178
|
+
# Austria
|
|
179
|
+
|
|
180
|
+
::msgcat::mcset de_AT GREGORIAN_CHANGE_DATE 2299527
|
|
181
|
+
|
|
182
|
+
# Hungary
|
|
183
|
+
|
|
184
|
+
::msgcat::mcset hu GREGORIAN_CHANGE_DATE 2301004
|
|
185
|
+
|
|
186
|
+
# Germany, Norway, Denmark (Catholic Germany changed earlier)
|
|
187
|
+
|
|
188
|
+
::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032
|
|
189
|
+
::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
|
|
190
|
+
::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032
|
|
191
|
+
::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032
|
|
192
|
+
::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032
|
|
193
|
+
|
|
194
|
+
# Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at
|
|
195
|
+
# various times)
|
|
196
|
+
|
|
197
|
+
::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165
|
|
198
|
+
|
|
199
|
+
# Protestant Switzerland (Catholic cantons changed earlier)
|
|
200
|
+
|
|
201
|
+
::msgcat::mcset fr_CH GREGORIAN_CHANGE_DATE 2361342
|
|
202
|
+
::msgcat::mcset it_CH GREGORIAN_CHANGE_DATE 2361342
|
|
203
|
+
::msgcat::mcset de_CH GREGORIAN_CHANGE_DATE 2361342
|
|
204
|
+
|
|
205
|
+
# English speaking countries
|
|
206
|
+
|
|
207
|
+
::msgcat::mcset en GREGORIAN_CHANGE_DATE 2361222
|
|
208
|
+
|
|
209
|
+
# Sweden (had several changes onto and off of the Gregorian calendar)
|
|
210
|
+
|
|
211
|
+
::msgcat::mcset sv GREGORIAN_CHANGE_DATE 2361390
|
|
212
|
+
|
|
213
|
+
# Russia
|
|
214
|
+
|
|
215
|
+
::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
|
|
216
|
+
|
|
217
|
+
# Romania (Transylvania changed earlier - perhaps de_RO should show the
|
|
218
|
+
# earlier date?)
|
|
219
|
+
|
|
220
|
+
::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
|
|
221
|
+
|
|
222
|
+
# Greece
|
|
223
|
+
|
|
224
|
+
::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480
|
|
225
|
+
|
|
226
|
+
#------------------------------------------------------------------
|
|
227
|
+
#
|
|
228
|
+
# CONSTANTS
|
|
229
|
+
#
|
|
230
|
+
#------------------------------------------------------------------
|
|
231
|
+
|
|
232
|
+
# Paths at which binary time zone data for the Olson libraries are known
|
|
233
|
+
# to reside on various operating systems
|
|
234
|
+
|
|
235
|
+
variable ZoneinfoPaths {}
|
|
236
|
+
foreach path {
|
|
237
|
+
/usr/share/zoneinfo
|
|
238
|
+
/usr/share/lib/zoneinfo
|
|
239
|
+
/usr/lib/zoneinfo
|
|
240
|
+
/usr/local/etc/zoneinfo
|
|
241
|
+
} {
|
|
242
|
+
if { [file isdirectory $path] } {
|
|
243
|
+
lappend ZoneinfoPaths $path
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
# Define the directories for time zone data and message catalogs.
|
|
248
|
+
|
|
249
|
+
variable DataDir [file join $LibDir tzdata]
|
|
250
|
+
|
|
251
|
+
# Number of days in the months, in common years and leap years.
|
|
252
|
+
|
|
253
|
+
variable DaysInRomanMonthInCommonYear \
|
|
254
|
+
{ 31 28 31 30 31 30 31 31 30 31 30 31 }
|
|
255
|
+
variable DaysInRomanMonthInLeapYear \
|
|
256
|
+
{ 31 29 31 30 31 30 31 31 30 31 30 31 }
|
|
257
|
+
variable DaysInPriorMonthsInCommonYear [list 0]
|
|
258
|
+
variable DaysInPriorMonthsInLeapYear [list 0]
|
|
259
|
+
set i 0
|
|
260
|
+
foreach j $DaysInRomanMonthInCommonYear {
|
|
261
|
+
lappend DaysInPriorMonthsInCommonYear [incr i $j]
|
|
262
|
+
}
|
|
263
|
+
set i 0
|
|
264
|
+
foreach j $DaysInRomanMonthInLeapYear {
|
|
265
|
+
lappend DaysInPriorMonthsInLeapYear [incr i $j]
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
# Another epoch (Hi, Jeff!)
|
|
269
|
+
|
|
270
|
+
variable Roddenberry 1946
|
|
271
|
+
|
|
272
|
+
# Integer ranges
|
|
273
|
+
|
|
274
|
+
variable MINWIDE -9223372036854775808
|
|
275
|
+
variable MAXWIDE 9223372036854775807
|
|
276
|
+
|
|
277
|
+
# Day before Leap Day
|
|
278
|
+
|
|
279
|
+
variable FEB_28 58
|
|
280
|
+
|
|
281
|
+
# Default configuration
|
|
282
|
+
|
|
283
|
+
::tcl::unsupported::clock::configure -current-locale [mclocale]
|
|
284
|
+
#::tcl::unsupported::clock::configure -default-locale C
|
|
285
|
+
#::tcl::unsupported::clock::configure -year-century 2000 \
|
|
286
|
+
# -century-switch 38
|
|
287
|
+
|
|
288
|
+
# Translation table to map Windows TZI onto cities, so that the Olson
|
|
289
|
+
# rules can apply. In some cases the mapping is ambiguous, so it's wise
|
|
290
|
+
# to specify $::env(TCL_TZ) rather than simply depending on the system
|
|
291
|
+
# time zone.
|
|
292
|
+
|
|
293
|
+
# The keys are long lists of values obtained from the time zone
|
|
294
|
+
# information in the Registry. In order, the list elements are:
|
|
295
|
+
# Bias StandardBias DaylightBias
|
|
296
|
+
# StandardDate.wYear StandardDate.wMonth StandardDate.wDayOfWeek
|
|
297
|
+
# StandardDate.wDay StandardDate.wHour StandardDate.wMinute
|
|
298
|
+
# StandardDate.wSecond StandardDate.wMilliseconds
|
|
299
|
+
# DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek
|
|
300
|
+
# DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute
|
|
301
|
+
# DaylightDate.wSecond DaylightDate.wMilliseconds
|
|
302
|
+
# The values are the names of time zones where those rules apply. There
|
|
303
|
+
# is considerable ambiguity in certain zones; an attempt has been made to
|
|
304
|
+
# make a reasonable guess, but this table needs to be taken with a grain
|
|
305
|
+
# of salt.
|
|
306
|
+
|
|
307
|
+
variable WinZoneInfo [dict create {*}{
|
|
308
|
+
{-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Kwajalein
|
|
309
|
+
{-39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Midway
|
|
310
|
+
{-36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Honolulu
|
|
311
|
+
{-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
|
|
312
|
+
{-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
|
|
313
|
+
{-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
|
|
314
|
+
{-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
|
|
315
|
+
{-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
|
|
316
|
+
{-25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Phoenix
|
|
317
|
+
{-21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Regina
|
|
318
|
+
{-21600 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Chicago
|
|
319
|
+
{-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
|
|
320
|
+
{-18000 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/New_York
|
|
321
|
+
{-18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Indianapolis
|
|
322
|
+
{-14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Caracas
|
|
323
|
+
{-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
|
|
324
|
+
:America/Santiago
|
|
325
|
+
{-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
|
|
326
|
+
{-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
|
|
327
|
+
{-12600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/St_Johns
|
|
328
|
+
{-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
|
|
329
|
+
{-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
|
|
330
|
+
{-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :America/Buenos_Aires
|
|
331
|
+
{-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
|
|
332
|
+
{-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
|
|
333
|
+
{-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0} :America/Noronha
|
|
334
|
+
{-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Atlantic/Azores
|
|
335
|
+
{-3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Atlantic/Cape_Verde
|
|
336
|
+
{0 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :UTC
|
|
337
|
+
{0 0 3600 0 10 0 5 2 0 0 0 0 3 0 5 1 0 0 0} :Europe/London
|
|
338
|
+
{3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Kinshasa
|
|
339
|
+
{3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :CET
|
|
340
|
+
{7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Africa/Harare
|
|
341
|
+
{7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
|
|
342
|
+
:Africa/Cairo
|
|
343
|
+
{7200 0 3600 0 10 0 5 4 0 0 0 0 3 0 5 3 0 0 0} :Europe/Helsinki
|
|
344
|
+
{7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0} :Asia/Jerusalem
|
|
345
|
+
{7200 0 3600 0 9 0 5 1 0 0 0 0 3 0 5 0 0 0 0} :Europe/Bucharest
|
|
346
|
+
{7200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Athens
|
|
347
|
+
{7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0} :Asia/Amman
|
|
348
|
+
{7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
|
|
349
|
+
:Asia/Beirut
|
|
350
|
+
{7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0} :Africa/Windhoek
|
|
351
|
+
{10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Riyadh
|
|
352
|
+
{10800 0 3600 0 10 0 1 4 0 0 0 0 4 0 1 3 0 0 0} :Asia/Baghdad
|
|
353
|
+
{10800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Europe/Moscow
|
|
354
|
+
{12600 0 3600 0 9 2 4 2 0 0 0 0 3 0 1 2 0 0 0} :Asia/Tehran
|
|
355
|
+
{14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0} :Asia/Baku
|
|
356
|
+
{14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Muscat
|
|
357
|
+
{14400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Tbilisi
|
|
358
|
+
{16200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Kabul
|
|
359
|
+
{18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Karachi
|
|
360
|
+
{18000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yekaterinburg
|
|
361
|
+
{19800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Calcutta
|
|
362
|
+
{20700 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Katmandu
|
|
363
|
+
{21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Dhaka
|
|
364
|
+
{21600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Novosibirsk
|
|
365
|
+
{23400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Rangoon
|
|
366
|
+
{25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Bangkok
|
|
367
|
+
{25200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Krasnoyarsk
|
|
368
|
+
{28800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Chongqing
|
|
369
|
+
{28800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Irkutsk
|
|
370
|
+
{32400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Asia/Tokyo
|
|
371
|
+
{32400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Yakutsk
|
|
372
|
+
{34200 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Adelaide
|
|
373
|
+
{34200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Darwin
|
|
374
|
+
{36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Australia/Brisbane
|
|
375
|
+
{36000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0} :Asia/Vladivostok
|
|
376
|
+
{36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 1 2 0 0 0} :Australia/Hobart
|
|
377
|
+
{36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0} :Australia/Sydney
|
|
378
|
+
{39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Noumea
|
|
379
|
+
{43200 0 3600 0 3 0 3 3 0 0 0 0 10 0 1 2 0 0 0} :Pacific/Auckland
|
|
380
|
+
{43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Fiji
|
|
381
|
+
{46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} :Pacific/Tongatapu
|
|
382
|
+
}]
|
|
383
|
+
|
|
384
|
+
# Legacy time zones, used primarily for parsing RFC822 dates.
|
|
385
|
+
|
|
386
|
+
variable LegacyTimeZone [dict create \
|
|
387
|
+
gmt +0000 \
|
|
388
|
+
ut +0000 \
|
|
389
|
+
utc +0000 \
|
|
390
|
+
bst +0100 \
|
|
391
|
+
wet +0000 \
|
|
392
|
+
wat -0100 \
|
|
393
|
+
at -0200 \
|
|
394
|
+
nft -0330 \
|
|
395
|
+
nst -0330 \
|
|
396
|
+
ndt -0230 \
|
|
397
|
+
ast -0400 \
|
|
398
|
+
adt -0300 \
|
|
399
|
+
est -0500 \
|
|
400
|
+
edt -0400 \
|
|
401
|
+
cst -0600 \
|
|
402
|
+
cdt -0500 \
|
|
403
|
+
mst -0700 \
|
|
404
|
+
mdt -0600 \
|
|
405
|
+
pst -0800 \
|
|
406
|
+
pdt -0700 \
|
|
407
|
+
yst -0900 \
|
|
408
|
+
ydt -0800 \
|
|
409
|
+
akst -0900 \
|
|
410
|
+
akdt -0800 \
|
|
411
|
+
hst -1000 \
|
|
412
|
+
hdt -0900 \
|
|
413
|
+
cat -1000 \
|
|
414
|
+
ahst -1000 \
|
|
415
|
+
nt -1100 \
|
|
416
|
+
idlw -1200 \
|
|
417
|
+
cet +0100 \
|
|
418
|
+
cest +0200 \
|
|
419
|
+
met +0100 \
|
|
420
|
+
mewt +0100 \
|
|
421
|
+
mest +0200 \
|
|
422
|
+
swt +0100 \
|
|
423
|
+
sst +0200 \
|
|
424
|
+
fwt +0100 \
|
|
425
|
+
fst +0200 \
|
|
426
|
+
eet +0200 \
|
|
427
|
+
eest +0300 \
|
|
428
|
+
bt +0300 \
|
|
429
|
+
it +0330 \
|
|
430
|
+
zp4 +0400 \
|
|
431
|
+
zp5 +0500 \
|
|
432
|
+
ist +0530 \
|
|
433
|
+
zp6 +0600 \
|
|
434
|
+
wast +0700 \
|
|
435
|
+
wadt +0800 \
|
|
436
|
+
jt +0730 \
|
|
437
|
+
cct +0800 \
|
|
438
|
+
jst +0900 \
|
|
439
|
+
kst +0900 \
|
|
440
|
+
cast +0930 \
|
|
441
|
+
jdt +1000 \
|
|
442
|
+
kdt +1000 \
|
|
443
|
+
cadt +1030 \
|
|
444
|
+
east +1000 \
|
|
445
|
+
eadt +1030 \
|
|
446
|
+
gst +1000 \
|
|
447
|
+
nzt +1200 \
|
|
448
|
+
nzst +1200 \
|
|
449
|
+
nzdt +1300 \
|
|
450
|
+
idle +1200 \
|
|
451
|
+
a +0100 \
|
|
452
|
+
b +0200 \
|
|
453
|
+
c +0300 \
|
|
454
|
+
d +0400 \
|
|
455
|
+
e +0500 \
|
|
456
|
+
f +0600 \
|
|
457
|
+
g +0700 \
|
|
458
|
+
h +0800 \
|
|
459
|
+
i +0900 \
|
|
460
|
+
k +1000 \
|
|
461
|
+
l +1100 \
|
|
462
|
+
m +1200 \
|
|
463
|
+
n -0100 \
|
|
464
|
+
o -0200 \
|
|
465
|
+
p -0300 \
|
|
466
|
+
q -0400 \
|
|
467
|
+
r -0500 \
|
|
468
|
+
s -0600 \
|
|
469
|
+
t -0700 \
|
|
470
|
+
u -0800 \
|
|
471
|
+
v -0900 \
|
|
472
|
+
w -1000 \
|
|
473
|
+
x -1100 \
|
|
474
|
+
y -1200 \
|
|
475
|
+
z +0000 \
|
|
476
|
+
]
|
|
477
|
+
|
|
478
|
+
# Caches
|
|
479
|
+
|
|
480
|
+
variable LocFmtMap [dict create]; # Dictionary with localized format maps
|
|
481
|
+
|
|
482
|
+
variable TimeZoneBad [dict create]; # Dictionary whose keys are time zone
|
|
483
|
+
# names and whose values are 1 if
|
|
484
|
+
# the time zone is unknown and 0
|
|
485
|
+
# if it is known.
|
|
486
|
+
variable TZData; # Array whose keys are time zone names
|
|
487
|
+
# and whose values are lists of quads
|
|
488
|
+
# comprising start time, UTC offset,
|
|
489
|
+
# Daylight Saving Time indicator, and
|
|
490
|
+
# time zone abbreviation.
|
|
491
|
+
|
|
492
|
+
variable mcLocales [dict create]; # Dictionary with loaded locales
|
|
493
|
+
variable mcMergedCat [dict create]; # Dictionary with merged locale catalogs
|
|
494
|
+
}
|
|
495
|
+
::tcl::clock::Initialize
|
|
496
|
+
|
|
497
|
+
#----------------------------------------------------------------------
|
|
498
|
+
|
|
499
|
+
# mcget --
|
|
500
|
+
#
|
|
501
|
+
# Return the merged translation catalog for the ::tcl::clock namespace
|
|
502
|
+
# Searching of catalog is similar to "msgcat::mc".
|
|
503
|
+
#
|
|
504
|
+
# Contrary to "msgcat::mc" may additionally load a package catalog
|
|
505
|
+
# on demand.
|
|
506
|
+
#
|
|
507
|
+
# Arguments:
|
|
508
|
+
# loc The locale used for translation.
|
|
509
|
+
#
|
|
510
|
+
# Results:
|
|
511
|
+
# Returns the dictionary object as whole catalog of the package/locale.
|
|
512
|
+
#
|
|
513
|
+
proc ::tcl::clock::mcget {loc} {
|
|
514
|
+
variable mcMergedCat
|
|
515
|
+
switch -- $loc system {
|
|
516
|
+
set loc [GetSystemLocale]
|
|
517
|
+
} current {
|
|
518
|
+
set loc [mclocale]
|
|
519
|
+
}
|
|
520
|
+
if {$loc ne {}} {
|
|
521
|
+
set loc [string tolower $loc]
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
# try to retrieve now if already available:
|
|
525
|
+
if {[dict exists $mcMergedCat $loc]} {
|
|
526
|
+
return [dict get $mcMergedCat $loc]
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
# get locales list for given locale (de_de -> {de_de de {}})
|
|
530
|
+
variable mcLocales
|
|
531
|
+
if {[dict exists $mcLocales $loc]} {
|
|
532
|
+
set loclist [dict get $mcLocales $loc]
|
|
533
|
+
} else {
|
|
534
|
+
# save current locale:
|
|
535
|
+
set prevloc [mclocale]
|
|
536
|
+
# lazy load catalog on demand (set it will load the catalog)
|
|
537
|
+
mcpackagelocale set $loc
|
|
538
|
+
set loclist [msgcat::mcutil::getpreferences $loc]
|
|
539
|
+
dict set $mcLocales $loc $loclist
|
|
540
|
+
# restore:
|
|
541
|
+
if {$prevloc ne $loc} {
|
|
542
|
+
mcpackagelocale set $prevloc
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
# get whole catalog:
|
|
546
|
+
mcMerge $loclist
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
# mcMerge --
|
|
550
|
+
#
|
|
551
|
+
# Merge message catalog dictionaries to one dictionary.
|
|
552
|
+
#
|
|
553
|
+
# Arguments:
|
|
554
|
+
# locales List of locales to merge.
|
|
555
|
+
#
|
|
556
|
+
# Results:
|
|
557
|
+
# Returns the (weak pointer) to merged dictionary of message catalog.
|
|
558
|
+
#
|
|
559
|
+
proc ::tcl::clock::mcMerge {locales} {
|
|
560
|
+
variable mcMergedCat
|
|
561
|
+
if {[dict exists $mcMergedCat [set loc [lindex $locales 0]]]} {
|
|
562
|
+
return [dict get $mcMergedCat $loc]
|
|
563
|
+
}
|
|
564
|
+
# package msgcat currently does not provide possibility to get whole catalog:
|
|
565
|
+
upvar ::msgcat::Msgs Msgs
|
|
566
|
+
set ns ::tcl::clock
|
|
567
|
+
# Merge sequential locales (in reverse order, e. g. {} -> en -> en_en):
|
|
568
|
+
if {[llength $locales] > 1} {
|
|
569
|
+
set mrgcat [mcMerge [lrange $locales 1 end]]
|
|
570
|
+
if {[dict exists $Msgs $ns $loc]} {
|
|
571
|
+
set mrgcat [dict merge $mrgcat [dict get $Msgs $ns $loc]]
|
|
572
|
+
dict set mrgcat L $loc
|
|
573
|
+
# remove any previously localized formats (merged from parent
|
|
574
|
+
# locale and possibly cached in parent-mc by ClockLocalizeFormat),
|
|
575
|
+
# because they may depend on values which may vary in derivate:
|
|
576
|
+
foreach k [dict keys $mrgcat] {
|
|
577
|
+
if {[string match FMT_* $k]} { dict unset mrgcat $k }
|
|
578
|
+
}
|
|
579
|
+
} else {
|
|
580
|
+
# be sure a duplicate is created, don't overwrite {} (common) locale:
|
|
581
|
+
set mrgcat [dict merge $mrgcat [dict create L $loc]]
|
|
582
|
+
}
|
|
583
|
+
} else {
|
|
584
|
+
if {[dict exists $Msgs $ns $loc]} {
|
|
585
|
+
set mrgcat [dict get $Msgs $ns $loc]
|
|
586
|
+
dict set mrgcat L $loc
|
|
587
|
+
} else {
|
|
588
|
+
# be sure a duplicate is created, don't overwrite {} (common) locale:
|
|
589
|
+
set mrgcat [dict create L $loc]
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
dict set mcMergedCat $loc $mrgcat
|
|
593
|
+
# return smart reference (shared dict as object with exact one ref-counter)
|
|
594
|
+
return $mrgcat
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
#----------------------------------------------------------------------
|
|
598
|
+
#
|
|
599
|
+
# GetSystemLocale --
|
|
600
|
+
#
|
|
601
|
+
# Determines the system locale, which corresponds to "system"
|
|
602
|
+
# keyword for locale parameter of 'clock' command.
|
|
603
|
+
#
|
|
604
|
+
# Parameters:
|
|
605
|
+
# None.
|
|
606
|
+
#
|
|
607
|
+
# Results:
|
|
608
|
+
# Returns the system locale.
|
|
609
|
+
#
|
|
610
|
+
# Side effects:
|
|
611
|
+
# None.
|
|
612
|
+
#
|
|
613
|
+
#----------------------------------------------------------------------
|
|
614
|
+
|
|
615
|
+
proc ::tcl::clock::GetSystemLocale {} {
|
|
616
|
+
if { $::tcl_platform(platform) ne {windows} } {
|
|
617
|
+
# On a non-windows platform, the 'system' locale is the same as
|
|
618
|
+
# the 'current' locale
|
|
619
|
+
|
|
620
|
+
return [mclocale]
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
# On a windows platform, the 'system' locale is adapted from the
|
|
624
|
+
# 'current' locale by applying the date and time formats from the
|
|
625
|
+
# Control Panel. First, load the 'current' locale if it's not yet
|
|
626
|
+
# loaded
|
|
627
|
+
|
|
628
|
+
mcpackagelocale set [mclocale]
|
|
629
|
+
|
|
630
|
+
# Make a new locale string for the system locale, and get the
|
|
631
|
+
# Control Panel information
|
|
632
|
+
|
|
633
|
+
set locale [mclocale]_windows
|
|
634
|
+
if { ! [mcpackagelocale present $locale] } {
|
|
635
|
+
LoadWindowsDateTimeFormats $locale
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
return $locale
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
#----------------------------------------------------------------------
|
|
642
|
+
#
|
|
643
|
+
# EnterLocale --
|
|
644
|
+
#
|
|
645
|
+
# Switch [mclocale] to a given locale if necessary
|
|
646
|
+
#
|
|
647
|
+
# Parameters:
|
|
648
|
+
# locale -- Desired locale
|
|
649
|
+
#
|
|
650
|
+
# Results:
|
|
651
|
+
# Returns the locale that was previously current.
|
|
652
|
+
#
|
|
653
|
+
# Side effects:
|
|
654
|
+
# Does [mclocale]. If necessary, loades the designated locale's files.
|
|
655
|
+
#
|
|
656
|
+
#----------------------------------------------------------------------
|
|
657
|
+
|
|
658
|
+
proc ::tcl::clock::EnterLocale { locale } {
|
|
659
|
+
switch -- $locale system {
|
|
660
|
+
set locale [GetSystemLocale]
|
|
661
|
+
} current {
|
|
662
|
+
set locale [mclocale]
|
|
663
|
+
}
|
|
664
|
+
# Select the locale, eventually load it
|
|
665
|
+
mcpackagelocale set $locale
|
|
666
|
+
return $locale
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
#----------------------------------------------------------------------
|
|
670
|
+
#
|
|
671
|
+
# _registryExists --
|
|
672
|
+
# _hasRegistry --
|
|
673
|
+
#
|
|
674
|
+
# Helpers that checks whether registry module is available (Windows only)
|
|
675
|
+
# and loads it on demand.
|
|
676
|
+
#
|
|
677
|
+
# Side effects:
|
|
678
|
+
# _hasRegistry does it only once, and hereafter simply returns 1 or 0.
|
|
679
|
+
#
|
|
680
|
+
#----------------------------------------------------------------------
|
|
681
|
+
proc ::tcl::clock::_registryExists {} {
|
|
682
|
+
if { $::tcl_platform(platform) eq {windows} } {
|
|
683
|
+
if { [catch { package require registry 1.3 }] } {
|
|
684
|
+
# try to load registry directly from root (if uninstalled / development env):
|
|
685
|
+
if {[regexp {[/\\]library$} [info library]]} {catch {
|
|
686
|
+
load [lindex \
|
|
687
|
+
[glob -tails -directory [file dirname [info nameofexecutable]] \
|
|
688
|
+
tcl9registry*[expr {[::tcl::pkgconfig get debug] ? {g} : {}}].dll] 0 \
|
|
689
|
+
] Registry
|
|
690
|
+
}}
|
|
691
|
+
}
|
|
692
|
+
if { [namespace which -command ::registry] ne "" } {
|
|
693
|
+
return 1
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
return 0
|
|
697
|
+
}
|
|
698
|
+
proc ::tcl::clock::_hasRegistry {} {
|
|
699
|
+
set res [_registryExists]
|
|
700
|
+
proc ::tcl::clock::_hasRegistry {} [list return $res]
|
|
701
|
+
return $res
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
#----------------------------------------------------------------------
|
|
705
|
+
#
|
|
706
|
+
# LoadWindowsDateTimeFormats --
|
|
707
|
+
#
|
|
708
|
+
# Load the date/time formats from the Control Panel in Windows and
|
|
709
|
+
# convert them so that they're usable by Tcl.
|
|
710
|
+
#
|
|
711
|
+
# Parameters:
|
|
712
|
+
# locale - Name of the locale in whose message catalog
|
|
713
|
+
# the converted formats are to be stored.
|
|
714
|
+
#
|
|
715
|
+
# Results:
|
|
716
|
+
# None.
|
|
717
|
+
#
|
|
718
|
+
# Side effects:
|
|
719
|
+
# Updates the given message catalog with the locale strings.
|
|
720
|
+
#
|
|
721
|
+
# Presumes that on entry, [mclocale] is set to the current locale, so that
|
|
722
|
+
# default strings can be obtained if the Registry query fails.
|
|
723
|
+
#
|
|
724
|
+
#----------------------------------------------------------------------
|
|
725
|
+
|
|
726
|
+
proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
|
|
727
|
+
# Bail out if we can't find the Registry
|
|
728
|
+
|
|
729
|
+
if { ![_hasRegistry] } return
|
|
730
|
+
|
|
731
|
+
if { ![catch {
|
|
732
|
+
registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
|
|
733
|
+
sShortDate
|
|
734
|
+
} string] } {
|
|
735
|
+
set quote {}
|
|
736
|
+
set datefmt {}
|
|
737
|
+
foreach { unquoted quoted } [split $string '] {
|
|
738
|
+
append datefmt $quote [string map {
|
|
739
|
+
dddd %A
|
|
740
|
+
ddd %a
|
|
741
|
+
dd %d
|
|
742
|
+
d %e
|
|
743
|
+
MMMM %B
|
|
744
|
+
MMM %b
|
|
745
|
+
MM %m
|
|
746
|
+
M %N
|
|
747
|
+
yyyy %Y
|
|
748
|
+
yy %y
|
|
749
|
+
y %y
|
|
750
|
+
gg {}
|
|
751
|
+
} $unquoted]
|
|
752
|
+
if { $quoted eq {} } {
|
|
753
|
+
set quote '
|
|
754
|
+
} else {
|
|
755
|
+
set quote $quoted
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
::msgcat::mcset $locale DATE_FORMAT $datefmt
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
if { ![catch {
|
|
762
|
+
registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
|
|
763
|
+
sLongDate
|
|
764
|
+
} string] } {
|
|
765
|
+
set quote {}
|
|
766
|
+
set ldatefmt {}
|
|
767
|
+
foreach { unquoted quoted } [split $string '] {
|
|
768
|
+
append ldatefmt $quote [string map {
|
|
769
|
+
dddd %A
|
|
770
|
+
ddd %a
|
|
771
|
+
dd %d
|
|
772
|
+
d %e
|
|
773
|
+
MMMM %B
|
|
774
|
+
MMM %b
|
|
775
|
+
MM %m
|
|
776
|
+
M %N
|
|
777
|
+
yyyy %Y
|
|
778
|
+
yy %y
|
|
779
|
+
y %y
|
|
780
|
+
gg {}
|
|
781
|
+
} $unquoted]
|
|
782
|
+
if { $quoted eq {} } {
|
|
783
|
+
set quote '
|
|
784
|
+
} else {
|
|
785
|
+
set quote $quoted
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
::msgcat::mcset $locale LOCALE_DATE_FORMAT $ldatefmt
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
if { ![catch {
|
|
792
|
+
registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
|
|
793
|
+
sTimeFormat
|
|
794
|
+
} string] } {
|
|
795
|
+
set quote {}
|
|
796
|
+
set timefmt {}
|
|
797
|
+
foreach { unquoted quoted } [split $string '] {
|
|
798
|
+
append timefmt $quote [string map {
|
|
799
|
+
HH %H
|
|
800
|
+
H %k
|
|
801
|
+
hh %I
|
|
802
|
+
h %l
|
|
803
|
+
mm %M
|
|
804
|
+
m %M
|
|
805
|
+
ss %S
|
|
806
|
+
s %S
|
|
807
|
+
tt %p
|
|
808
|
+
t %p
|
|
809
|
+
} $unquoted]
|
|
810
|
+
if { $quoted eq {} } {
|
|
811
|
+
set quote '
|
|
812
|
+
} else {
|
|
813
|
+
set quote $quoted
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
::msgcat::mcset $locale TIME_FORMAT $timefmt
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
catch {
|
|
820
|
+
::msgcat::mcset $locale DATE_TIME_FORMAT "$datefmt $timefmt"
|
|
821
|
+
}
|
|
822
|
+
catch {
|
|
823
|
+
::msgcat::mcset $locale LOCALE_DATE_TIME_FORMAT "$ldatefmt $timefmt"
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
return
|
|
827
|
+
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
#----------------------------------------------------------------------
|
|
831
|
+
#
|
|
832
|
+
# LocalizeFormat --
|
|
833
|
+
#
|
|
834
|
+
# Map away locale-dependent format groups in a clock format.
|
|
835
|
+
#
|
|
836
|
+
# Parameters:
|
|
837
|
+
# locale -- Current [mclocale] locale, supplied to avoid
|
|
838
|
+
# an extra call
|
|
839
|
+
# format -- Format supplied to [clock scan] or [clock format]
|
|
840
|
+
# mcd -- Message catalog dictionary for current locale (read-only,
|
|
841
|
+
# don't store it to avoid shared references).
|
|
842
|
+
#
|
|
843
|
+
# Results:
|
|
844
|
+
# Returns the string with locale-dependent composite format groups
|
|
845
|
+
# substituted out.
|
|
846
|
+
#
|
|
847
|
+
# Side effects:
|
|
848
|
+
# None.
|
|
849
|
+
#
|
|
850
|
+
#----------------------------------------------------------------------
|
|
851
|
+
|
|
852
|
+
proc ::tcl::clock::LocalizeFormat { locale format mcd } {
|
|
853
|
+
variable LocFmtMap
|
|
854
|
+
|
|
855
|
+
# get map list cached or build it:
|
|
856
|
+
if {[dict exists $LocFmtMap $locale]} {
|
|
857
|
+
set mlst [dict get $LocFmtMap $locale]
|
|
858
|
+
} else {
|
|
859
|
+
# Handle locale-dependent format groups by mapping them out of the format
|
|
860
|
+
# string. Note that the order of the [string map] operations is
|
|
861
|
+
# significant because later formats can refer to later ones; for example
|
|
862
|
+
# %c can refer to %X, which in turn can refer to %T.
|
|
863
|
+
|
|
864
|
+
set mlst {
|
|
865
|
+
%% %%
|
|
866
|
+
%D %m/%d/%Y
|
|
867
|
+
%+ {%a %b %e %H:%M:%S %Z %Y}
|
|
868
|
+
}
|
|
869
|
+
lappend mlst %EY [string map $mlst [dict get $mcd LOCALE_YEAR_FORMAT]]
|
|
870
|
+
lappend mlst %T [string map $mlst [dict get $mcd TIME_FORMAT_24_SECS]]
|
|
871
|
+
lappend mlst %R [string map $mlst [dict get $mcd TIME_FORMAT_24]]
|
|
872
|
+
lappend mlst %r [string map $mlst [dict get $mcd TIME_FORMAT_12]]
|
|
873
|
+
lappend mlst %X [string map $mlst [dict get $mcd TIME_FORMAT]]
|
|
874
|
+
lappend mlst %EX [string map $mlst [dict get $mcd LOCALE_TIME_FORMAT]]
|
|
875
|
+
lappend mlst %x [string map $mlst [dict get $mcd DATE_FORMAT]]
|
|
876
|
+
lappend mlst %Ex [string map $mlst [dict get $mcd LOCALE_DATE_FORMAT]]
|
|
877
|
+
lappend mlst %c [string map $mlst [dict get $mcd DATE_TIME_FORMAT]]
|
|
878
|
+
lappend mlst %Ec [string map $mlst [dict get $mcd LOCALE_DATE_TIME_FORMAT]]
|
|
879
|
+
|
|
880
|
+
dict set LocFmtMap $locale $mlst
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
# translate copy of format (don't use format object here, because otherwise
|
|
884
|
+
# it can lose its internal representation (string map - convert to unicode)
|
|
885
|
+
set locfmt [string map $mlst [string range " $format" 1 end]]
|
|
886
|
+
|
|
887
|
+
# Save original format as long as possible, because of internal
|
|
888
|
+
# representation (performance).
|
|
889
|
+
# Note that in this case such format will be never localized (also
|
|
890
|
+
# using another locales). To prevent this return a duplicate (but
|
|
891
|
+
# it may be slower).
|
|
892
|
+
if {$locfmt eq $format} {
|
|
893
|
+
set locfmt $format
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
return $locfmt
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
#----------------------------------------------------------------------
|
|
900
|
+
#
|
|
901
|
+
# GetSystemTimeZone --
|
|
902
|
+
#
|
|
903
|
+
# Determines the system time zone, which is the default for the
|
|
904
|
+
# 'clock' command if no other zone is supplied.
|
|
905
|
+
#
|
|
906
|
+
# Parameters:
|
|
907
|
+
# None.
|
|
908
|
+
#
|
|
909
|
+
# Results:
|
|
910
|
+
# Returns the system time zone.
|
|
911
|
+
#
|
|
912
|
+
# Side effects:
|
|
913
|
+
# Stores the system time zone in engine configuration, since
|
|
914
|
+
# determining it may be an expensive process.
|
|
915
|
+
#
|
|
916
|
+
#----------------------------------------------------------------------
|
|
917
|
+
|
|
918
|
+
proc ::tcl::clock::GetSystemTimeZone {} {
|
|
919
|
+
variable TimeZoneBad
|
|
920
|
+
|
|
921
|
+
if {[set result [getenv TCL_TZ]] ne {}} {
|
|
922
|
+
set timezone $result
|
|
923
|
+
} elseif {[set result [getenv TZ]] ne {}} {
|
|
924
|
+
set timezone $result
|
|
925
|
+
} else {
|
|
926
|
+
# ask engine for the cached timezone:
|
|
927
|
+
set timezone [::tcl::unsupported::clock::configure -system-tz]
|
|
928
|
+
if { $timezone ne "" } {
|
|
929
|
+
return $timezone
|
|
930
|
+
}
|
|
931
|
+
if { $::tcl_platform(platform) eq {windows} } {
|
|
932
|
+
set timezone [GuessWindowsTimeZone]
|
|
933
|
+
} elseif { [file exists /etc/localtime]
|
|
934
|
+
&& ![catch {ReadZoneinfoFile \
|
|
935
|
+
Tcl/Localtime /etc/localtime}] } {
|
|
936
|
+
set timezone :Tcl/Localtime
|
|
937
|
+
} else {
|
|
938
|
+
set timezone :localtime
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
if { ![dict exists $TimeZoneBad $timezone] } {
|
|
942
|
+
catch {set timezone [SetupTimeZone $timezone]}
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
if { [dict exists $TimeZoneBad $timezone] } {
|
|
946
|
+
set timezone :localtime
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
# tell backend - current system timezone:
|
|
950
|
+
::tcl::unsupported::clock::configure -system-tz $timezone
|
|
951
|
+
|
|
952
|
+
return $timezone
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
#----------------------------------------------------------------------
|
|
956
|
+
#
|
|
957
|
+
# SetupTimeZone --
|
|
958
|
+
#
|
|
959
|
+
# Given the name or specification of a time zone, sets up its in-memory
|
|
960
|
+
# data.
|
|
961
|
+
#
|
|
962
|
+
# Parameters:
|
|
963
|
+
# tzname - Name of a time zone
|
|
964
|
+
#
|
|
965
|
+
# Results:
|
|
966
|
+
# Unless the time zone is ':localtime', sets the TZData array to contain
|
|
967
|
+
# the lookup table for local<->UTC conversion. Returns an error if the
|
|
968
|
+
# time zone cannot be parsed.
|
|
969
|
+
#
|
|
970
|
+
#----------------------------------------------------------------------
|
|
971
|
+
|
|
972
|
+
proc ::tcl::clock::SetupTimeZone { timezone {alias {}} } {
|
|
973
|
+
variable TZData
|
|
974
|
+
|
|
975
|
+
if {! [info exists TZData($timezone)] } {
|
|
976
|
+
|
|
977
|
+
variable TimeZoneBad
|
|
978
|
+
if { [dict exists $TimeZoneBad $timezone] } {
|
|
979
|
+
return -code error \
|
|
980
|
+
-errorcode [list CLOCK badTimeZone $timezone] \
|
|
981
|
+
"time zone \"$timezone\" not found"
|
|
982
|
+
}
|
|
983
|
+
variable MINWIDE
|
|
984
|
+
if {
|
|
985
|
+
[regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
|
|
986
|
+
-> s hh mm ss]
|
|
987
|
+
} then {
|
|
988
|
+
# Make a fixed offset
|
|
989
|
+
|
|
990
|
+
::scan $hh %d hh
|
|
991
|
+
if { $mm eq {} } {
|
|
992
|
+
set mm 0
|
|
993
|
+
} else {
|
|
994
|
+
::scan $mm %d mm
|
|
995
|
+
}
|
|
996
|
+
if { $ss eq {} } {
|
|
997
|
+
set ss 0
|
|
998
|
+
} else {
|
|
999
|
+
::scan $ss %d ss
|
|
1000
|
+
}
|
|
1001
|
+
set offset [expr { ( $hh * 60 + $mm ) * 60 + $ss }]
|
|
1002
|
+
if { $s eq {-} } {
|
|
1003
|
+
set offset [expr { - $offset }]
|
|
1004
|
+
}
|
|
1005
|
+
set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]]
|
|
1006
|
+
|
|
1007
|
+
} elseif { [string index $timezone 0] eq {:} } {
|
|
1008
|
+
# Convert using a time zone file
|
|
1009
|
+
|
|
1010
|
+
if {
|
|
1011
|
+
[catch {
|
|
1012
|
+
LoadTimeZoneFile [string range $timezone 1 end]
|
|
1013
|
+
}] && [catch {
|
|
1014
|
+
LoadZoneinfoFile [string range $timezone 1 end]
|
|
1015
|
+
} ret opts]
|
|
1016
|
+
} then {
|
|
1017
|
+
dict unset opts -errorinfo
|
|
1018
|
+
if {[lindex [dict get $opts -errorcode] 0] ne "CLOCK"} {
|
|
1019
|
+
dict set opts -errorcode [list CLOCK badTimeZone $timezone]
|
|
1020
|
+
set ret "time zone \"$timezone\" not found: $ret"
|
|
1021
|
+
}
|
|
1022
|
+
dict set TimeZoneBad $timezone 1
|
|
1023
|
+
return -options $opts $ret
|
|
1024
|
+
}
|
|
1025
|
+
} elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } {
|
|
1026
|
+
# This looks like a POSIX time zone - try to process it
|
|
1027
|
+
|
|
1028
|
+
if { [catch {ProcessPosixTimeZone $tzfields} ret opts] } {
|
|
1029
|
+
dict unset opts -errorinfo
|
|
1030
|
+
if {[lindex [dict get $opts -errorcode] 0] ne "CLOCK"} {
|
|
1031
|
+
dict set opts -errorcode [list CLOCK badTimeZone $timezone]
|
|
1032
|
+
set ret "time zone \"$timezone\" not found: $ret"
|
|
1033
|
+
}
|
|
1034
|
+
dict set TimeZoneBad $timezone 1
|
|
1035
|
+
return -options $opts $ret
|
|
1036
|
+
} else {
|
|
1037
|
+
set TZData($timezone) $ret
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
} else {
|
|
1041
|
+
|
|
1042
|
+
variable LegacyTimeZone
|
|
1043
|
+
|
|
1044
|
+
# We couldn't parse this as a POSIX time zone. Try again with a
|
|
1045
|
+
# time zone file - this time without a colon
|
|
1046
|
+
|
|
1047
|
+
if { [catch { LoadTimeZoneFile $timezone }]
|
|
1048
|
+
&& [catch { LoadZoneinfoFile $timezone } ret opts] } {
|
|
1049
|
+
|
|
1050
|
+
# Check may be a legacy zone:
|
|
1051
|
+
|
|
1052
|
+
if { $alias eq {} && ![catch {
|
|
1053
|
+
set tzname [dict get $LegacyTimeZone [string tolower $timezone]]
|
|
1054
|
+
}] } {
|
|
1055
|
+
set tzname [::tcl::clock::SetupTimeZone $tzname $timezone]
|
|
1056
|
+
set TZData($timezone) $TZData($tzname)
|
|
1057
|
+
# tell backend - timezone is initialized and return shared timezone object:
|
|
1058
|
+
return [::tcl::unsupported::clock::configure -setup-tz $timezone]
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
dict unset opts -errorinfo
|
|
1062
|
+
if {[lindex [dict get $opts -errorcode] 0] ne "CLOCK"} {
|
|
1063
|
+
dict set opts -errorcode [list CLOCK badTimeZone $timezone]
|
|
1064
|
+
set ret "time zone \"$timezone\" not found: $ret"
|
|
1065
|
+
}
|
|
1066
|
+
dict set TimeZoneBad $timezone 1
|
|
1067
|
+
return -options $opts $ret
|
|
1068
|
+
}
|
|
1069
|
+
set TZData($timezone) $TZData(:$timezone)
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
# tell backend - timezone is initialized and return shared timezone object:
|
|
1074
|
+
::tcl::unsupported::clock::configure -setup-tz $timezone
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
#----------------------------------------------------------------------
|
|
1078
|
+
#
|
|
1079
|
+
# GuessWindowsTimeZone --
|
|
1080
|
+
#
|
|
1081
|
+
# Determines the system time zone on windows.
|
|
1082
|
+
#
|
|
1083
|
+
# Parameters:
|
|
1084
|
+
# None.
|
|
1085
|
+
#
|
|
1086
|
+
# Results:
|
|
1087
|
+
# Returns a time zone specifier that corresponds to the system time zone
|
|
1088
|
+
# information found in the Registry.
|
|
1089
|
+
#
|
|
1090
|
+
# Bugs:
|
|
1091
|
+
# Fixed dates for DST change are unimplemented at present, because no
|
|
1092
|
+
# time zone information supplied with Windows actually uses them!
|
|
1093
|
+
#
|
|
1094
|
+
# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified,
|
|
1095
|
+
# GuessWindowsTimeZone looks in the Registry for the system time zone
|
|
1096
|
+
# information. It then attempts to find an entry in WinZoneInfo for a time
|
|
1097
|
+
# zone that uses the same rules. If it finds one, it returns it; otherwise,
|
|
1098
|
+
# it constructs a Posix-style time zone string and returns that.
|
|
1099
|
+
#
|
|
1100
|
+
#----------------------------------------------------------------------
|
|
1101
|
+
|
|
1102
|
+
proc ::tcl::clock::GuessWindowsTimeZone {} {
|
|
1103
|
+
variable WinZoneInfo
|
|
1104
|
+
variable TimeZoneBad
|
|
1105
|
+
|
|
1106
|
+
if { ![_hasRegistry] } {
|
|
1107
|
+
return :localtime
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
# Dredge time zone information out of the registry
|
|
1111
|
+
|
|
1112
|
+
if { [catch {
|
|
1113
|
+
set rpath HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\TimeZoneInformation
|
|
1114
|
+
set data [list \
|
|
1115
|
+
[expr { -60
|
|
1116
|
+
* [registry get $rpath Bias] }] \
|
|
1117
|
+
[expr { -60
|
|
1118
|
+
* [registry get $rpath StandardBias] }] \
|
|
1119
|
+
[expr { -60 \
|
|
1120
|
+
* [registry get $rpath DaylightBias] }]]
|
|
1121
|
+
set stdtzi [registry get $rpath StandardStart]
|
|
1122
|
+
foreach ind {0 2 14 4 6 8 10 12} {
|
|
1123
|
+
binary scan $stdtzi @${ind}s val
|
|
1124
|
+
lappend data $val
|
|
1125
|
+
}
|
|
1126
|
+
set daytzi [registry get $rpath DaylightStart]
|
|
1127
|
+
foreach ind {0 2 14 4 6 8 10 12} {
|
|
1128
|
+
binary scan $daytzi @${ind}s val
|
|
1129
|
+
lappend data $val
|
|
1130
|
+
}
|
|
1131
|
+
}] } {
|
|
1132
|
+
# Missing values in the Registry - bail out
|
|
1133
|
+
|
|
1134
|
+
return :localtime
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
# Make up a Posix time zone specifier if we can't find one. Check here
|
|
1138
|
+
# that the tzdata file exists, in case we're running in an environment
|
|
1139
|
+
# (e.g. starpack) where tzdata is incomplete. (Bug 1237907)
|
|
1140
|
+
|
|
1141
|
+
if { [dict exists $WinZoneInfo $data] } {
|
|
1142
|
+
set tzname [dict get $WinZoneInfo $data]
|
|
1143
|
+
if { ! [dict exists $TimeZoneBad $tzname] } {
|
|
1144
|
+
catch {set tzname [SetupTimeZone $tzname]}
|
|
1145
|
+
}
|
|
1146
|
+
} else {
|
|
1147
|
+
set tzname {}
|
|
1148
|
+
}
|
|
1149
|
+
if { $tzname eq {} || [dict exists $TimeZoneBad $tzname] } {
|
|
1150
|
+
lassign $data \
|
|
1151
|
+
bias stdBias dstBias \
|
|
1152
|
+
stdYear stdMonth stdDayOfWeek stdDayOfMonth \
|
|
1153
|
+
stdHour stdMinute stdSecond stdMillisec \
|
|
1154
|
+
dstYear dstMonth dstDayOfWeek dstDayOfMonth \
|
|
1155
|
+
dstHour dstMinute dstSecond dstMillisec
|
|
1156
|
+
set stdDelta [expr { $bias + $stdBias }]
|
|
1157
|
+
set dstDelta [expr { $bias + $dstBias }]
|
|
1158
|
+
if { $stdDelta <= 0 } {
|
|
1159
|
+
set stdSignum +
|
|
1160
|
+
set stdDelta [expr { - $stdDelta }]
|
|
1161
|
+
set dispStdSignum -
|
|
1162
|
+
} else {
|
|
1163
|
+
set stdSignum -
|
|
1164
|
+
set dispStdSignum +
|
|
1165
|
+
}
|
|
1166
|
+
set hh [::format %02d [expr { $stdDelta / 3600 }]]
|
|
1167
|
+
set mm [::format %02d [expr { ($stdDelta / 60 ) % 60 }]]
|
|
1168
|
+
set ss [::format %02d [expr { $stdDelta % 60 }]]
|
|
1169
|
+
set tzname {}
|
|
1170
|
+
append tzname < $dispStdSignum $hh $mm > $stdSignum $hh : $mm : $ss
|
|
1171
|
+
if { $stdMonth >= 0 } {
|
|
1172
|
+
if { $dstDelta <= 0 } {
|
|
1173
|
+
set dstSignum +
|
|
1174
|
+
set dstDelta [expr { - $dstDelta }]
|
|
1175
|
+
set dispDstSignum -
|
|
1176
|
+
} else {
|
|
1177
|
+
set dstSignum -
|
|
1178
|
+
set dispDstSignum +
|
|
1179
|
+
}
|
|
1180
|
+
set hh [::format %02d [expr { $dstDelta / 3600 }]]
|
|
1181
|
+
set mm [::format %02d [expr { ($dstDelta / 60 ) % 60 }]]
|
|
1182
|
+
set ss [::format %02d [expr { $dstDelta % 60 }]]
|
|
1183
|
+
append tzname < $dispDstSignum $hh $mm > $dstSignum $hh : $mm : $ss
|
|
1184
|
+
if { $dstYear == 0 } {
|
|
1185
|
+
append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek
|
|
1186
|
+
} else {
|
|
1187
|
+
# I have not been able to find any locale on which Windows
|
|
1188
|
+
# converts time zone on a fixed day of the year, hence don't
|
|
1189
|
+
# know how to interpret the fields. If someone can inform me,
|
|
1190
|
+
# I'd be glad to code it up. For right now, we bail out in
|
|
1191
|
+
# such a case.
|
|
1192
|
+
return :localtime
|
|
1193
|
+
}
|
|
1194
|
+
append tzname / [::format %02d $dstHour] \
|
|
1195
|
+
: [::format %02d $dstMinute] \
|
|
1196
|
+
: [::format %02d $dstSecond]
|
|
1197
|
+
if { $stdYear == 0 } {
|
|
1198
|
+
append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek
|
|
1199
|
+
} else {
|
|
1200
|
+
# I have not been able to find any locale on which Windows
|
|
1201
|
+
# converts time zone on a fixed day of the year, hence don't
|
|
1202
|
+
# know how to interpret the fields. If someone can inform me,
|
|
1203
|
+
# I'd be glad to code it up. For right now, we bail out in
|
|
1204
|
+
# such a case.
|
|
1205
|
+
return :localtime
|
|
1206
|
+
}
|
|
1207
|
+
append tzname / [::format %02d $stdHour] \
|
|
1208
|
+
: [::format %02d $stdMinute] \
|
|
1209
|
+
: [::format %02d $stdSecond]
|
|
1210
|
+
}
|
|
1211
|
+
dict set WinZoneInfo $data $tzname
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
return [dict get $WinZoneInfo $data]
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
#----------------------------------------------------------------------
|
|
1218
|
+
#
|
|
1219
|
+
# LoadTimeZoneFile --
|
|
1220
|
+
#
|
|
1221
|
+
# Load the data file that specifies the conversion between a
|
|
1222
|
+
# given time zone and Greenwich.
|
|
1223
|
+
#
|
|
1224
|
+
# Parameters:
|
|
1225
|
+
# fileName -- Name of the file to load
|
|
1226
|
+
#
|
|
1227
|
+
# Results:
|
|
1228
|
+
# None.
|
|
1229
|
+
#
|
|
1230
|
+
# Side effects:
|
|
1231
|
+
# TZData(:fileName) contains the time zone data
|
|
1232
|
+
#
|
|
1233
|
+
#----------------------------------------------------------------------
|
|
1234
|
+
|
|
1235
|
+
proc ::tcl::clock::LoadTimeZoneFile { fileName } {
|
|
1236
|
+
variable DataDir
|
|
1237
|
+
variable TZData
|
|
1238
|
+
|
|
1239
|
+
if { [info exists TZData($fileName)] } {
|
|
1240
|
+
return
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
# Since an unsafe interp uses the [clock] command in the parent, this code
|
|
1244
|
+
# is security sensitive. Make sure that the path name cannot escape the
|
|
1245
|
+
# given directory.
|
|
1246
|
+
|
|
1247
|
+
if { [regexp {^[/\\]|^[a-zA-Z]+:|(?:^|[/\\])\.\.} $fileName] } {
|
|
1248
|
+
return -code error \
|
|
1249
|
+
-errorcode [list CLOCK badTimeZone :$fileName] \
|
|
1250
|
+
"time zone \":$fileName\" not valid"
|
|
1251
|
+
}
|
|
1252
|
+
try {
|
|
1253
|
+
source [file join $DataDir $fileName]
|
|
1254
|
+
} on error {} {
|
|
1255
|
+
return -code error \
|
|
1256
|
+
-errorcode [list CLOCK badTimeZone :$fileName] \
|
|
1257
|
+
"time zone \":$fileName\" not found"
|
|
1258
|
+
}
|
|
1259
|
+
return
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
#----------------------------------------------------------------------
|
|
1263
|
+
#
|
|
1264
|
+
# LoadZoneinfoFile --
|
|
1265
|
+
#
|
|
1266
|
+
# Loads a binary time zone information file in Olson format.
|
|
1267
|
+
#
|
|
1268
|
+
# Parameters:
|
|
1269
|
+
# fileName - Relative path name of the file to load.
|
|
1270
|
+
#
|
|
1271
|
+
# Results:
|
|
1272
|
+
# Returns an empty result normally; returns an error if no Olson file
|
|
1273
|
+
# was found or the file was malformed in some way.
|
|
1274
|
+
#
|
|
1275
|
+
# Side effects:
|
|
1276
|
+
# TZData(:fileName) contains the time zone data
|
|
1277
|
+
#
|
|
1278
|
+
#----------------------------------------------------------------------
|
|
1279
|
+
|
|
1280
|
+
proc ::tcl::clock::LoadZoneinfoFile { fileName } {
|
|
1281
|
+
variable ZoneinfoPaths
|
|
1282
|
+
|
|
1283
|
+
# Since an unsafe interp uses the [clock] command in the parent, this code
|
|
1284
|
+
# is security sensitive. Make sure that the path name cannot escape the
|
|
1285
|
+
# given directory.
|
|
1286
|
+
|
|
1287
|
+
if { [regexp {^[/\\]|^[a-zA-Z]+:|(?:^|[/\\])\.\.} $fileName] } {
|
|
1288
|
+
return -code error \
|
|
1289
|
+
-errorcode [list CLOCK badTimeZone :$fileName] \
|
|
1290
|
+
"time zone \":$fileName\" not valid"
|
|
1291
|
+
}
|
|
1292
|
+
set fname ""
|
|
1293
|
+
foreach d $ZoneinfoPaths {
|
|
1294
|
+
set fname [file join $d $fileName]
|
|
1295
|
+
if { [file readable $fname] && [file isfile $fname] } {
|
|
1296
|
+
break
|
|
1297
|
+
}
|
|
1298
|
+
set fname ""
|
|
1299
|
+
}
|
|
1300
|
+
if {$fname eq ""} {
|
|
1301
|
+
return -code error \
|
|
1302
|
+
-errorcode [list CLOCK badTimeZone :$fileName] \
|
|
1303
|
+
"time zone \":$fileName\" not found"
|
|
1304
|
+
}
|
|
1305
|
+
ReadZoneinfoFile $fileName $fname
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
#----------------------------------------------------------------------
|
|
1309
|
+
#
|
|
1310
|
+
# ReadZoneinfoFile --
|
|
1311
|
+
#
|
|
1312
|
+
# Loads a binary time zone information file in Olson format.
|
|
1313
|
+
#
|
|
1314
|
+
# Parameters:
|
|
1315
|
+
# fileName - Name of the time zone (relative path name of the
|
|
1316
|
+
# file).
|
|
1317
|
+
# fname - Absolute path name of the file.
|
|
1318
|
+
#
|
|
1319
|
+
# Results:
|
|
1320
|
+
# Returns an empty result normally; returns an error if no Olson file
|
|
1321
|
+
# was found or the file was malformed in some way.
|
|
1322
|
+
#
|
|
1323
|
+
# Side effects:
|
|
1324
|
+
# TZData(:fileName) contains the time zone data
|
|
1325
|
+
#
|
|
1326
|
+
#----------------------------------------------------------------------
|
|
1327
|
+
|
|
1328
|
+
proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
|
|
1329
|
+
variable MINWIDE
|
|
1330
|
+
variable TZData
|
|
1331
|
+
if { ![file exists $fname] } {
|
|
1332
|
+
return -code error "$fileName not found"
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
if { [file size $fname] > 262144 } {
|
|
1336
|
+
return -code error "$fileName too big"
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
# Suck in all the data from the file
|
|
1340
|
+
|
|
1341
|
+
set f [open $fname r]
|
|
1342
|
+
fconfigure $f -translation binary
|
|
1343
|
+
set d [read $f]
|
|
1344
|
+
close $f
|
|
1345
|
+
|
|
1346
|
+
# The file begins with a magic number, sixteen reserved bytes, and then
|
|
1347
|
+
# six 4-byte integers giving counts of fields in the file.
|
|
1348
|
+
|
|
1349
|
+
binary scan $d a4a1x15IIIIII \
|
|
1350
|
+
magic version nIsGMT nIsStd nLeap nTime nType nChar
|
|
1351
|
+
set seek 44
|
|
1352
|
+
set ilen 4
|
|
1353
|
+
set iformat I
|
|
1354
|
+
if { $magic != {TZif} } {
|
|
1355
|
+
return -code error "$fileName not a time zone information file"
|
|
1356
|
+
}
|
|
1357
|
+
if { $nType > 255 } {
|
|
1358
|
+
return -code error "$fileName contains too many time types"
|
|
1359
|
+
}
|
|
1360
|
+
# Accept only Posix-style zoneinfo. Sorry, 'leaps' bigots.
|
|
1361
|
+
if { $nLeap != 0 } {
|
|
1362
|
+
return -code error "$fileName contains leap seconds"
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
# In a version 2 file, we use the second part of the file, which contains
|
|
1366
|
+
# 64-bit transition times.
|
|
1367
|
+
|
|
1368
|
+
if {$version eq "2"} {
|
|
1369
|
+
set seek [expr {
|
|
1370
|
+
44
|
|
1371
|
+
+ 5 * $nTime
|
|
1372
|
+
+ 6 * $nType
|
|
1373
|
+
+ 4 * $nLeap
|
|
1374
|
+
+ $nIsStd
|
|
1375
|
+
+ $nIsGMT
|
|
1376
|
+
+ $nChar
|
|
1377
|
+
}]
|
|
1378
|
+
binary scan $d @${seek}a4a1x15IIIIII \
|
|
1379
|
+
magic version nIsGMT nIsStd nLeap nTime nType nChar
|
|
1380
|
+
if {$magic ne {TZif}} {
|
|
1381
|
+
return -code error "seek address $seek miscomputed, magic = $magic"
|
|
1382
|
+
}
|
|
1383
|
+
set iformat W
|
|
1384
|
+
set ilen 8
|
|
1385
|
+
incr seek 44
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
# Next come ${nTime} transition times, followed by ${nTime} time type
|
|
1389
|
+
# codes. The type codes are unsigned 1-byte quantities. We insert an
|
|
1390
|
+
# arbitrary start time in front of the transitions.
|
|
1391
|
+
|
|
1392
|
+
binary scan $d @${seek}${iformat}${nTime}c${nTime} times tempCodes
|
|
1393
|
+
incr seek [expr { ($ilen + 1) * $nTime }]
|
|
1394
|
+
set times [linsert $times 0 $MINWIDE]
|
|
1395
|
+
set codes {}
|
|
1396
|
+
foreach c $tempCodes {
|
|
1397
|
+
lappend codes [expr { $c & 0xFF }]
|
|
1398
|
+
}
|
|
1399
|
+
set codes [linsert $codes 0 0]
|
|
1400
|
+
|
|
1401
|
+
# Next come ${nType} time type descriptions, each of which has an offset
|
|
1402
|
+
# (seconds east of GMT), a DST indicator, and an index into the
|
|
1403
|
+
# abbreviation text.
|
|
1404
|
+
|
|
1405
|
+
for { set i 0 } { $i < $nType } { incr i } {
|
|
1406
|
+
binary scan $d @${seek}Icc gmtOff isDst abbrInd
|
|
1407
|
+
lappend types [list $gmtOff $isDst $abbrInd]
|
|
1408
|
+
incr seek 6
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
# Next come $nChar characters of time zone name abbreviations, which are
|
|
1412
|
+
# null-terminated.
|
|
1413
|
+
# We build them up into a dictionary indexed by character index, because
|
|
1414
|
+
# that's what's in the indices above.
|
|
1415
|
+
|
|
1416
|
+
binary scan $d @${seek}a${nChar} abbrs
|
|
1417
|
+
incr seek ${nChar}
|
|
1418
|
+
set abbrList [split $abbrs \0]
|
|
1419
|
+
set i 0
|
|
1420
|
+
set abbrevs {}
|
|
1421
|
+
foreach a $abbrList {
|
|
1422
|
+
for {set j 0} {$j <= [string length $a]} {incr j} {
|
|
1423
|
+
dict set abbrevs $i [string range $a $j end]
|
|
1424
|
+
incr i
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
# Package up a list of tuples, each of which contains transition time,
|
|
1429
|
+
# seconds east of Greenwich, DST flag and time zone abbreviation.
|
|
1430
|
+
|
|
1431
|
+
set r {}
|
|
1432
|
+
set lastTime $MINWIDE
|
|
1433
|
+
foreach t $times c $codes {
|
|
1434
|
+
if { $t < $lastTime } {
|
|
1435
|
+
return -code error "$fileName has times out of order"
|
|
1436
|
+
}
|
|
1437
|
+
set lastTime $t
|
|
1438
|
+
lassign [lindex $types $c] gmtoff isDst abbrInd
|
|
1439
|
+
set abbrev [dict get $abbrevs $abbrInd]
|
|
1440
|
+
lappend r [list $t $gmtoff $isDst $abbrev]
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
# In a version 2 file, there is also a POSIX-style time zone description
|
|
1444
|
+
# at the very end of the file. To get to it, skip over nLeap leap second
|
|
1445
|
+
# values (8 bytes each),
|
|
1446
|
+
# nIsStd standard/DST indicators and nIsGMT UTC/local indicators.
|
|
1447
|
+
|
|
1448
|
+
if {$version eq {2}} {
|
|
1449
|
+
set seek [expr {$seek + 8 * $nLeap + $nIsStd + $nIsGMT + 1}]
|
|
1450
|
+
set last [string first \n $d $seek]
|
|
1451
|
+
set posix [string range $d $seek [expr {$last-1}]]
|
|
1452
|
+
if {[llength $posix] > 0} {
|
|
1453
|
+
set posixFields [ParsePosixTimeZone $posix]
|
|
1454
|
+
foreach tuple [ProcessPosixTimeZone $posixFields] {
|
|
1455
|
+
lassign $tuple t gmtoff isDst abbrev
|
|
1456
|
+
if {$t > $lastTime} {
|
|
1457
|
+
lappend r $tuple
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
set TZData(:$fileName) $r
|
|
1464
|
+
|
|
1465
|
+
return
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
#----------------------------------------------------------------------
|
|
1469
|
+
#
|
|
1470
|
+
# ParsePosixTimeZone --
|
|
1471
|
+
#
|
|
1472
|
+
# Parses the TZ environment variable in Posix form
|
|
1473
|
+
#
|
|
1474
|
+
# Parameters:
|
|
1475
|
+
# tz Time zone specifier to be interpreted
|
|
1476
|
+
#
|
|
1477
|
+
# Results:
|
|
1478
|
+
# Returns a dictionary whose values contain the various pieces of the
|
|
1479
|
+
# time zone specification.
|
|
1480
|
+
#
|
|
1481
|
+
# Side effects:
|
|
1482
|
+
# None.
|
|
1483
|
+
#
|
|
1484
|
+
# Errors:
|
|
1485
|
+
# Throws an error if the syntax of the time zone is incorrect.
|
|
1486
|
+
#
|
|
1487
|
+
# The following keys are present in the dictionary:
|
|
1488
|
+
# stdName - Name of the time zone when Daylight Saving Time
|
|
1489
|
+
# is not in effect.
|
|
1490
|
+
# stdSignum - Sign (+, -, or empty) of the offset from Greenwich
|
|
1491
|
+
# to the given (non-DST) time zone. + and the empty
|
|
1492
|
+
# string denote zones west of Greenwich, - denotes east
|
|
1493
|
+
# of Greenwich; this is contrary to the ISO convention
|
|
1494
|
+
# but follows Posix.
|
|
1495
|
+
# stdHours - Hours part of the offset from Greenwich to the given
|
|
1496
|
+
# (non-DST) time zone.
|
|
1497
|
+
# stdMinutes - Minutes part of the offset from Greenwich to the
|
|
1498
|
+
# given (non-DST) time zone. Empty denotes zero.
|
|
1499
|
+
# stdSeconds - Seconds part of the offset from Greenwich to the
|
|
1500
|
+
# given (non-DST) time zone. Empty denotes zero.
|
|
1501
|
+
# dstName - Name of the time zone when DST is in effect, or the
|
|
1502
|
+
# empty string if the time zone does not observe Daylight
|
|
1503
|
+
# Saving Time.
|
|
1504
|
+
# dstSignum, dstHours, dstMinutes, dstSeconds -
|
|
1505
|
+
# Fields corresponding to stdSignum, stdHours, stdMinutes,
|
|
1506
|
+
# stdSeconds for the Daylight Saving Time version of the
|
|
1507
|
+
# time zone. If dstHours is empty, it is presumed to be 1.
|
|
1508
|
+
# startDayOfYear - The ordinal number of the day of the year on which
|
|
1509
|
+
# Daylight Saving Time begins. If this field is
|
|
1510
|
+
# empty, then DST begins on a given month-week-day,
|
|
1511
|
+
# as below.
|
|
1512
|
+
# startJ - The letter J, or an empty string. If a J is present in
|
|
1513
|
+
# this field, then startDayOfYear does not count February 29
|
|
1514
|
+
# even in leap years.
|
|
1515
|
+
# startMonth - The number of the month in which Daylight Saving Time
|
|
1516
|
+
# begins, supplied if startDayOfYear is empty. If both
|
|
1517
|
+
# startDayOfYear and startMonth are empty, then US rules
|
|
1518
|
+
# are presumed.
|
|
1519
|
+
# startWeekOfMonth - The number of the week in the month in which
|
|
1520
|
+
# Daylight Saving Time begins, in the range 1-5.
|
|
1521
|
+
# 5 denotes the last week of the month even in a
|
|
1522
|
+
# 4-week month.
|
|
1523
|
+
# startDayOfWeek - The number of the day of the week (Sunday=0,
|
|
1524
|
+
# Saturday=6) on which Daylight Saving Time begins.
|
|
1525
|
+
# startHours - The hours part of the time of day at which Daylight
|
|
1526
|
+
# Saving Time begins. An empty string is presumed to be 2.
|
|
1527
|
+
# startMinutes - The minutes part of the time of day at which DST begins.
|
|
1528
|
+
# An empty string is presumed zero.
|
|
1529
|
+
# startSeconds - The seconds part of the time of day at which DST begins.
|
|
1530
|
+
# An empty string is presumed zero.
|
|
1531
|
+
# endDayOfYear, endJ, endMonth, endWeekOfMonth, endDayOfWeek,
|
|
1532
|
+
# endHours, endMinutes, endSeconds -
|
|
1533
|
+
# Specify the end of DST in the same way that the start* fields
|
|
1534
|
+
# specify the beginning of DST.
|
|
1535
|
+
#
|
|
1536
|
+
# This procedure serves only to break the time specifier into fields. No
|
|
1537
|
+
# attempt is made to canonicalize the fields or supply default values.
|
|
1538
|
+
#
|
|
1539
|
+
#----------------------------------------------------------------------
|
|
1540
|
+
|
|
1541
|
+
proc ::tcl::clock::ParsePosixTimeZone { tz } {
|
|
1542
|
+
if {[regexp -expanded -nocase -- {
|
|
1543
|
+
^
|
|
1544
|
+
# 1 - Standard time zone name
|
|
1545
|
+
([[:alpha:]]+ | <[-+[:alnum:]]+>)
|
|
1546
|
+
# 2 - Standard time zone offset, signum
|
|
1547
|
+
([-+]?)
|
|
1548
|
+
# 3 - Standard time zone offset, hours
|
|
1549
|
+
([[:digit:]]{1,2})
|
|
1550
|
+
(?:
|
|
1551
|
+
# 4 - Standard time zone offset, minutes
|
|
1552
|
+
: ([[:digit:]]{1,2})
|
|
1553
|
+
(?:
|
|
1554
|
+
# 5 - Standard time zone offset, seconds
|
|
1555
|
+
: ([[:digit:]]{1,2} )
|
|
1556
|
+
)?
|
|
1557
|
+
)?
|
|
1558
|
+
(?:
|
|
1559
|
+
# 6 - DST time zone name
|
|
1560
|
+
([[:alpha:]]+ | <[-+[:alnum:]]+>)
|
|
1561
|
+
(?:
|
|
1562
|
+
(?:
|
|
1563
|
+
# 7 - DST time zone offset, signum
|
|
1564
|
+
([-+]?)
|
|
1565
|
+
# 8 - DST time zone offset, hours
|
|
1566
|
+
([[:digit:]]{1,2})
|
|
1567
|
+
(?:
|
|
1568
|
+
# 9 - DST time zone offset, minutes
|
|
1569
|
+
: ([[:digit:]]{1,2})
|
|
1570
|
+
(?:
|
|
1571
|
+
# 10 - DST time zone offset, seconds
|
|
1572
|
+
: ([[:digit:]]{1,2})
|
|
1573
|
+
)?
|
|
1574
|
+
)?
|
|
1575
|
+
)?
|
|
1576
|
+
(?:
|
|
1577
|
+
,
|
|
1578
|
+
(?:
|
|
1579
|
+
# 11 - Optional J in n and Jn form 12 - Day of year
|
|
1580
|
+
( J ? ) ( [[:digit:]]+ )
|
|
1581
|
+
| M
|
|
1582
|
+
# 13 - Month number 14 - Week of month 15 - Day of week
|
|
1583
|
+
( [[:digit:]] + )
|
|
1584
|
+
[.] ( [[:digit:]] + )
|
|
1585
|
+
[.] ( [[:digit:]] + )
|
|
1586
|
+
)
|
|
1587
|
+
(?:
|
|
1588
|
+
# 16 - Start time of DST - hours
|
|
1589
|
+
/ ( [[:digit:]]{1,2} )
|
|
1590
|
+
(?:
|
|
1591
|
+
# 17 - Start time of DST - minutes
|
|
1592
|
+
: ( [[:digit:]]{1,2} )
|
|
1593
|
+
(?:
|
|
1594
|
+
# 18 - Start time of DST - seconds
|
|
1595
|
+
: ( [[:digit:]]{1,2} )
|
|
1596
|
+
)?
|
|
1597
|
+
)?
|
|
1598
|
+
)?
|
|
1599
|
+
,
|
|
1600
|
+
(?:
|
|
1601
|
+
# 19 - Optional J in n and Jn form 20 - Day of year
|
|
1602
|
+
( J ? ) ( [[:digit:]]+ )
|
|
1603
|
+
| M
|
|
1604
|
+
# 21 - Month number 22 - Week of month 23 - Day of week
|
|
1605
|
+
( [[:digit:]] + )
|
|
1606
|
+
[.] ( [[:digit:]] + )
|
|
1607
|
+
[.] ( [[:digit:]] + )
|
|
1608
|
+
)
|
|
1609
|
+
(?:
|
|
1610
|
+
# 24 - End time of DST - hours
|
|
1611
|
+
/ ( [[:digit:]]{1,2} )
|
|
1612
|
+
(?:
|
|
1613
|
+
# 25 - End time of DST - minutes
|
|
1614
|
+
: ( [[:digit:]]{1,2} )
|
|
1615
|
+
(?:
|
|
1616
|
+
# 26 - End time of DST - seconds
|
|
1617
|
+
: ( [[:digit:]]{1,2} )
|
|
1618
|
+
)?
|
|
1619
|
+
)?
|
|
1620
|
+
)?
|
|
1621
|
+
)?
|
|
1622
|
+
)?
|
|
1623
|
+
)?
|
|
1624
|
+
$
|
|
1625
|
+
} $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \
|
|
1626
|
+
x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \
|
|
1627
|
+
x(startJ) x(startDayOfYear) \
|
|
1628
|
+
x(startMonth) x(startWeekOfMonth) x(startDayOfWeek) \
|
|
1629
|
+
x(startHours) x(startMinutes) x(startSeconds) \
|
|
1630
|
+
x(endJ) x(endDayOfYear) \
|
|
1631
|
+
x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \
|
|
1632
|
+
x(endHours) x(endMinutes) x(endSeconds)] } {
|
|
1633
|
+
# it's a good timezone
|
|
1634
|
+
|
|
1635
|
+
return [array get x]
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
return -code error\
|
|
1639
|
+
-errorcode [list CLOCK badTimeZone $tz] \
|
|
1640
|
+
"unable to parse time zone specification \"$tz\""
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
#----------------------------------------------------------------------
|
|
1644
|
+
#
|
|
1645
|
+
# ProcessPosixTimeZone --
|
|
1646
|
+
#
|
|
1647
|
+
# Handle a Posix time zone after it's been broken out into fields.
|
|
1648
|
+
#
|
|
1649
|
+
# Parameters:
|
|
1650
|
+
# z - Dictionary returned from 'ParsePosixTimeZone'
|
|
1651
|
+
#
|
|
1652
|
+
# Results:
|
|
1653
|
+
# Returns time zone information for the 'TZData' array.
|
|
1654
|
+
#
|
|
1655
|
+
# Side effects:
|
|
1656
|
+
# None.
|
|
1657
|
+
#
|
|
1658
|
+
#----------------------------------------------------------------------
|
|
1659
|
+
|
|
1660
|
+
proc ::tcl::clock::ProcessPosixTimeZone { z } {
|
|
1661
|
+
variable MINWIDE
|
|
1662
|
+
variable TZData
|
|
1663
|
+
|
|
1664
|
+
# Determine the standard time zone name and seconds east of Greenwich
|
|
1665
|
+
|
|
1666
|
+
set stdName [dict get $z stdName]
|
|
1667
|
+
if { [string index $stdName 0] eq {<} } {
|
|
1668
|
+
set stdName [string range $stdName 1 end-1]
|
|
1669
|
+
}
|
|
1670
|
+
if { [dict get $z stdSignum] eq {-} } {
|
|
1671
|
+
set stdSignum +1
|
|
1672
|
+
} else {
|
|
1673
|
+
set stdSignum -1
|
|
1674
|
+
}
|
|
1675
|
+
set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
|
|
1676
|
+
if { [dict get $z stdMinutes] ne {} } {
|
|
1677
|
+
set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
|
|
1678
|
+
} else {
|
|
1679
|
+
set stdMinutes 0
|
|
1680
|
+
}
|
|
1681
|
+
if { [dict get $z stdSeconds] ne {} } {
|
|
1682
|
+
set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
|
|
1683
|
+
} else {
|
|
1684
|
+
set stdSeconds 0
|
|
1685
|
+
}
|
|
1686
|
+
set stdOffset [expr {
|
|
1687
|
+
(($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum
|
|
1688
|
+
}]
|
|
1689
|
+
set data [list [list $MINWIDE $stdOffset 0 $stdName]]
|
|
1690
|
+
|
|
1691
|
+
# If there's no daylight zone, we're done
|
|
1692
|
+
|
|
1693
|
+
set dstName [dict get $z dstName]
|
|
1694
|
+
if { $dstName eq {} } {
|
|
1695
|
+
return $data
|
|
1696
|
+
}
|
|
1697
|
+
if { [string index $dstName 0] eq {<} } {
|
|
1698
|
+
set dstName [string range $dstName 1 end-1]
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
# Determine the daylight name
|
|
1702
|
+
|
|
1703
|
+
if { [dict get $z dstSignum] eq {-} } {
|
|
1704
|
+
set dstSignum +1
|
|
1705
|
+
} else {
|
|
1706
|
+
set dstSignum -1
|
|
1707
|
+
}
|
|
1708
|
+
if { [dict get $z dstHours] eq {} } {
|
|
1709
|
+
set dstOffset [expr { 3600 + $stdOffset }]
|
|
1710
|
+
} else {
|
|
1711
|
+
set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
|
|
1712
|
+
if { [dict get $z dstMinutes] ne {} } {
|
|
1713
|
+
set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
|
|
1714
|
+
} else {
|
|
1715
|
+
set dstMinutes 0
|
|
1716
|
+
}
|
|
1717
|
+
if { [dict get $z dstSeconds] ne {} } {
|
|
1718
|
+
set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
|
|
1719
|
+
} else {
|
|
1720
|
+
set dstSeconds 0
|
|
1721
|
+
}
|
|
1722
|
+
set dstOffset [expr {
|
|
1723
|
+
(($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum
|
|
1724
|
+
}]
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
# Fill in defaults for European or US DST rules
|
|
1728
|
+
# US start time is the second Sunday in March
|
|
1729
|
+
# EU start time is the last Sunday in March
|
|
1730
|
+
# US end time is the first Sunday in November.
|
|
1731
|
+
# EU end time is the last Sunday in October
|
|
1732
|
+
|
|
1733
|
+
if {
|
|
1734
|
+
[dict get $z startDayOfYear] eq {}
|
|
1735
|
+
&& [dict get $z startMonth] eq {}
|
|
1736
|
+
} then {
|
|
1737
|
+
if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
|
|
1738
|
+
# EU
|
|
1739
|
+
dict set z startWeekOfMonth 5
|
|
1740
|
+
if {$stdHours>2} {
|
|
1741
|
+
dict set z startHours 2
|
|
1742
|
+
} else {
|
|
1743
|
+
dict set z startHours [expr {$stdHours+1}]
|
|
1744
|
+
}
|
|
1745
|
+
} else {
|
|
1746
|
+
# US
|
|
1747
|
+
dict set z startWeekOfMonth 2
|
|
1748
|
+
dict set z startHours 2
|
|
1749
|
+
}
|
|
1750
|
+
dict set z startMonth 3
|
|
1751
|
+
dict set z startDayOfWeek 0
|
|
1752
|
+
dict set z startMinutes 0
|
|
1753
|
+
dict set z startSeconds 0
|
|
1754
|
+
}
|
|
1755
|
+
if {
|
|
1756
|
+
[dict get $z endDayOfYear] eq {}
|
|
1757
|
+
&& [dict get $z endMonth] eq {}
|
|
1758
|
+
} then {
|
|
1759
|
+
if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
|
|
1760
|
+
# EU
|
|
1761
|
+
dict set z endMonth 10
|
|
1762
|
+
dict set z endWeekOfMonth 5
|
|
1763
|
+
if {$stdHours>2} {
|
|
1764
|
+
dict set z endHours 3
|
|
1765
|
+
} else {
|
|
1766
|
+
dict set z endHours [expr {$stdHours+2}]
|
|
1767
|
+
}
|
|
1768
|
+
} else {
|
|
1769
|
+
# US
|
|
1770
|
+
dict set z endMonth 11
|
|
1771
|
+
dict set z endWeekOfMonth 1
|
|
1772
|
+
dict set z endHours 2
|
|
1773
|
+
}
|
|
1774
|
+
dict set z endDayOfWeek 0
|
|
1775
|
+
dict set z endMinutes 0
|
|
1776
|
+
dict set z endSeconds 0
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
# Put DST in effect in all years from 1916 to 2099.
|
|
1780
|
+
|
|
1781
|
+
for { set y 1916 } { $y < 2100 } { incr y } {
|
|
1782
|
+
set startTime [DeterminePosixDSTTime $z start $y]
|
|
1783
|
+
incr startTime [expr { - wide($stdOffset) }]
|
|
1784
|
+
set endTime [DeterminePosixDSTTime $z end $y]
|
|
1785
|
+
incr endTime [expr { - wide($dstOffset) }]
|
|
1786
|
+
if { $startTime < $endTime } {
|
|
1787
|
+
lappend data \
|
|
1788
|
+
[list $startTime $dstOffset 1 $dstName] \
|
|
1789
|
+
[list $endTime $stdOffset 0 $stdName]
|
|
1790
|
+
} else {
|
|
1791
|
+
lappend data \
|
|
1792
|
+
[list $endTime $stdOffset 0 $stdName] \
|
|
1793
|
+
[list $startTime $dstOffset 1 $dstName]
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
return $data
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
#----------------------------------------------------------------------
|
|
1801
|
+
#
|
|
1802
|
+
# DeterminePosixDSTTime --
|
|
1803
|
+
#
|
|
1804
|
+
# Determines the time that Daylight Saving Time starts or ends from a
|
|
1805
|
+
# Posix time zone specification.
|
|
1806
|
+
#
|
|
1807
|
+
# Parameters:
|
|
1808
|
+
# z - Time zone data returned from ParsePosixTimeZone.
|
|
1809
|
+
# Missing fields are expected to be filled in with
|
|
1810
|
+
# default values.
|
|
1811
|
+
# bound - The word 'start' or 'end'
|
|
1812
|
+
# y - The year for which the transition time is to be determined.
|
|
1813
|
+
#
|
|
1814
|
+
# Results:
|
|
1815
|
+
# Returns the transition time as a count of seconds from the epoch. The
|
|
1816
|
+
# time is relative to the wall clock, not UTC.
|
|
1817
|
+
#
|
|
1818
|
+
#----------------------------------------------------------------------
|
|
1819
|
+
|
|
1820
|
+
proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
|
|
1821
|
+
|
|
1822
|
+
variable FEB_28
|
|
1823
|
+
|
|
1824
|
+
# Determine the start or end day of DST
|
|
1825
|
+
|
|
1826
|
+
set date [dict create era CE year $y gregorian 1]
|
|
1827
|
+
set doy [dict get $z ${bound}DayOfYear]
|
|
1828
|
+
if { $doy ne {} } {
|
|
1829
|
+
|
|
1830
|
+
# Time was specified as a day of the year
|
|
1831
|
+
|
|
1832
|
+
if { [dict get $z ${bound}J] ne {}
|
|
1833
|
+
&& [IsGregorianLeapYear $date]
|
|
1834
|
+
&& ( $doy > $FEB_28 ) } {
|
|
1835
|
+
incr doy
|
|
1836
|
+
}
|
|
1837
|
+
dict set date dayOfYear $doy
|
|
1838
|
+
set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222]
|
|
1839
|
+
} else {
|
|
1840
|
+
# Time was specified as a day of the week within a month
|
|
1841
|
+
|
|
1842
|
+
dict set date month [dict get $z ${bound}Month]
|
|
1843
|
+
dict set date dayOfWeek [dict get $z ${bound}DayOfWeek]
|
|
1844
|
+
set dowim [dict get $z ${bound}WeekOfMonth]
|
|
1845
|
+
if { $dowim >= 5 } {
|
|
1846
|
+
set dowim -1
|
|
1847
|
+
}
|
|
1848
|
+
dict set date dayOfWeekInMonth $dowim
|
|
1849
|
+
set date [GetJulianDayFromEraYearMonthWeekDay $date[set date {}] 2361222]
|
|
1850
|
+
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
set jd [dict get $date julianDay]
|
|
1854
|
+
set seconds [expr {
|
|
1855
|
+
wide($jd) * wide(86400) - wide(210866803200)
|
|
1856
|
+
}]
|
|
1857
|
+
|
|
1858
|
+
set h [dict get $z ${bound}Hours]
|
|
1859
|
+
if { $h eq {} } {
|
|
1860
|
+
set h 2
|
|
1861
|
+
} else {
|
|
1862
|
+
set h [lindex [::scan $h %d] 0]
|
|
1863
|
+
}
|
|
1864
|
+
set m [dict get $z ${bound}Minutes]
|
|
1865
|
+
if { $m eq {} } {
|
|
1866
|
+
set m 0
|
|
1867
|
+
} else {
|
|
1868
|
+
set m [lindex [::scan $m %d] 0]
|
|
1869
|
+
}
|
|
1870
|
+
set s [dict get $z ${bound}Seconds]
|
|
1871
|
+
if { $s eq {} } {
|
|
1872
|
+
set s 0
|
|
1873
|
+
} else {
|
|
1874
|
+
set s [lindex [::scan $s %d] 0]
|
|
1875
|
+
}
|
|
1876
|
+
set tod [expr { ( $h * 60 + $m ) * 60 + $s }]
|
|
1877
|
+
return [expr { $seconds + $tod }]
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
#----------------------------------------------------------------------
|
|
1881
|
+
#
|
|
1882
|
+
# GetJulianDayFromEraYearDay --
|
|
1883
|
+
#
|
|
1884
|
+
# Given a year, month and day on the Gregorian calendar, determines
|
|
1885
|
+
# the Julian Day Number beginning at noon on that date.
|
|
1886
|
+
#
|
|
1887
|
+
# Parameters:
|
|
1888
|
+
# date -- A dictionary in which the 'era', 'year', and
|
|
1889
|
+
# 'dayOfYear' slots are populated. The calendar in use
|
|
1890
|
+
# is determined by the date itself relative to:
|
|
1891
|
+
# changeover -- Julian day on which the Gregorian calendar was
|
|
1892
|
+
# adopted in the current locale.
|
|
1893
|
+
#
|
|
1894
|
+
# Results:
|
|
1895
|
+
# Returns the given dictionary augmented with a 'julianDay' key whose
|
|
1896
|
+
# value is the desired Julian Day Number, and a 'gregorian' key that
|
|
1897
|
+
# specifies whether the calendar is Gregorian (1) or Julian (0).
|
|
1898
|
+
#
|
|
1899
|
+
# Side effects:
|
|
1900
|
+
# None.
|
|
1901
|
+
#
|
|
1902
|
+
# Bugs:
|
|
1903
|
+
# This code needs to be moved to the C layer.
|
|
1904
|
+
#
|
|
1905
|
+
#----------------------------------------------------------------------
|
|
1906
|
+
|
|
1907
|
+
proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
|
|
1908
|
+
# Get absolute year number from the civil year
|
|
1909
|
+
|
|
1910
|
+
switch -exact -- [dict get $date era] {
|
|
1911
|
+
BCE {
|
|
1912
|
+
set year [expr { 1 - [dict get $date year] }]
|
|
1913
|
+
}
|
|
1914
|
+
CE {
|
|
1915
|
+
set year [dict get $date year]
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
set ym1 [expr { $year - 1 }]
|
|
1919
|
+
|
|
1920
|
+
# Try the Gregorian calendar first.
|
|
1921
|
+
|
|
1922
|
+
dict set date gregorian 1
|
|
1923
|
+
set jd [expr {
|
|
1924
|
+
1721425
|
|
1925
|
+
+ [dict get $date dayOfYear]
|
|
1926
|
+
+ ( 365 * $ym1 )
|
|
1927
|
+
+ ( $ym1 / 4 )
|
|
1928
|
+
- ( $ym1 / 100 )
|
|
1929
|
+
+ ( $ym1 / 400 )
|
|
1930
|
+
}]
|
|
1931
|
+
|
|
1932
|
+
# If the date is before the Gregorian change, use the Julian calendar.
|
|
1933
|
+
|
|
1934
|
+
if { $jd < $changeover } {
|
|
1935
|
+
dict set date gregorian 0
|
|
1936
|
+
set jd [expr {
|
|
1937
|
+
1721423
|
|
1938
|
+
+ [dict get $date dayOfYear]
|
|
1939
|
+
+ ( 365 * $ym1 )
|
|
1940
|
+
+ ( $ym1 / 4 )
|
|
1941
|
+
}]
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
dict set date julianDay $jd
|
|
1945
|
+
return $date
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
#----------------------------------------------------------------------
|
|
1949
|
+
#
|
|
1950
|
+
# GetJulianDayFromEraYearMonthWeekDay --
|
|
1951
|
+
#
|
|
1952
|
+
# Determines the Julian Day number corresponding to the nth given
|
|
1953
|
+
# day-of-the-week in a given month.
|
|
1954
|
+
#
|
|
1955
|
+
# Parameters:
|
|
1956
|
+
# date - Dictionary containing the keys, 'era', 'year', 'month'
|
|
1957
|
+
# 'weekOfMonth', 'dayOfWeek', and 'dayOfWeekInMonth'.
|
|
1958
|
+
# changeover - Julian Day of adoption of the Gregorian calendar
|
|
1959
|
+
#
|
|
1960
|
+
# Results:
|
|
1961
|
+
# Returns the given dictionary, augmented with a 'julianDay' key.
|
|
1962
|
+
#
|
|
1963
|
+
# Side effects:
|
|
1964
|
+
# None.
|
|
1965
|
+
#
|
|
1966
|
+
# Bugs:
|
|
1967
|
+
# This code needs to be moved to the C layer.
|
|
1968
|
+
#
|
|
1969
|
+
#----------------------------------------------------------------------
|
|
1970
|
+
|
|
1971
|
+
proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
|
|
1972
|
+
# Come up with a reference day; either the zeroeth day of the given month
|
|
1973
|
+
# (dayOfWeekInMonth >= 0) or the seventh day of the following month
|
|
1974
|
+
# (dayOfWeekInMonth < 0)
|
|
1975
|
+
|
|
1976
|
+
set date2 $date
|
|
1977
|
+
set week [dict get $date dayOfWeekInMonth]
|
|
1978
|
+
if { $week >= 0 } {
|
|
1979
|
+
dict set date2 dayOfMonth 0
|
|
1980
|
+
} else {
|
|
1981
|
+
dict incr date2 month
|
|
1982
|
+
dict set date2 dayOfMonth 7
|
|
1983
|
+
}
|
|
1984
|
+
set date2 [GetJulianDayFromEraYearMonthDay $date2[set date2 {}] \
|
|
1985
|
+
$changeover]
|
|
1986
|
+
set wd0 [WeekdayOnOrBefore [dict get $date dayOfWeek] \
|
|
1987
|
+
[dict get $date2 julianDay]]
|
|
1988
|
+
dict set date julianDay [expr { $wd0 + 7 * $week }]
|
|
1989
|
+
return $date
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
#----------------------------------------------------------------------
|
|
1993
|
+
#
|
|
1994
|
+
# IsGregorianLeapYear --
|
|
1995
|
+
#
|
|
1996
|
+
# Determines whether a given date represents a leap year in the
|
|
1997
|
+
# Gregorian calendar.
|
|
1998
|
+
#
|
|
1999
|
+
# Parameters:
|
|
2000
|
+
# date -- The date to test. The fields, 'era', 'year' and 'gregorian'
|
|
2001
|
+
# must be set.
|
|
2002
|
+
#
|
|
2003
|
+
# Results:
|
|
2004
|
+
# Returns 1 if the year is a leap year, 0 otherwise.
|
|
2005
|
+
#
|
|
2006
|
+
# Side effects:
|
|
2007
|
+
# None.
|
|
2008
|
+
#
|
|
2009
|
+
#----------------------------------------------------------------------
|
|
2010
|
+
|
|
2011
|
+
proc ::tcl::clock::IsGregorianLeapYear { date } {
|
|
2012
|
+
switch -exact -- [dict get $date era] {
|
|
2013
|
+
BCE {
|
|
2014
|
+
set year [expr { 1 - [dict get $date year]}]
|
|
2015
|
+
}
|
|
2016
|
+
CE {
|
|
2017
|
+
set year [dict get $date year]
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
if { $year % 4 != 0 } {
|
|
2021
|
+
return 0
|
|
2022
|
+
} elseif { ![dict get $date gregorian] } {
|
|
2023
|
+
return 1
|
|
2024
|
+
} elseif { $year % 400 == 0 } {
|
|
2025
|
+
return 1
|
|
2026
|
+
} elseif { $year % 100 == 0 } {
|
|
2027
|
+
return 0
|
|
2028
|
+
} else {
|
|
2029
|
+
return 1
|
|
2030
|
+
}
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
#----------------------------------------------------------------------
|
|
2034
|
+
#
|
|
2035
|
+
# WeekdayOnOrBefore --
|
|
2036
|
+
#
|
|
2037
|
+
# Determine the nearest day of week (given by the 'weekday' parameter,
|
|
2038
|
+
# Sunday==0) on or before a given Julian Day.
|
|
2039
|
+
#
|
|
2040
|
+
# Parameters:
|
|
2041
|
+
# weekday -- Day of the week
|
|
2042
|
+
# j -- Julian Day number
|
|
2043
|
+
#
|
|
2044
|
+
# Results:
|
|
2045
|
+
# Returns the Julian Day Number of the desired date.
|
|
2046
|
+
#
|
|
2047
|
+
# Side effects:
|
|
2048
|
+
# None.
|
|
2049
|
+
#
|
|
2050
|
+
#----------------------------------------------------------------------
|
|
2051
|
+
|
|
2052
|
+
proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
|
|
2053
|
+
set k [expr { ( $weekday + 6 ) % 7 }]
|
|
2054
|
+
return [expr { $j - ( $j - $k ) % 7 }]
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
#----------------------------------------------------------------------
|
|
2058
|
+
#
|
|
2059
|
+
# ChangeCurrentLocale --
|
|
2060
|
+
#
|
|
2061
|
+
# The global locale was changed within msgcat.
|
|
2062
|
+
# Clears the buffered parse functions of the current locale.
|
|
2063
|
+
#
|
|
2064
|
+
# Parameters:
|
|
2065
|
+
# loclist (ignored)
|
|
2066
|
+
#
|
|
2067
|
+
# Results:
|
|
2068
|
+
# None.
|
|
2069
|
+
#
|
|
2070
|
+
# Side effects:
|
|
2071
|
+
# Buffered parse functions are cleared.
|
|
2072
|
+
#
|
|
2073
|
+
#----------------------------------------------------------------------
|
|
2074
|
+
|
|
2075
|
+
proc ::tcl::clock::ChangeCurrentLocale {args} {
|
|
2076
|
+
::tcl::unsupported::clock::configure -current-locale [lindex $args 0]
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
#----------------------------------------------------------------------
|
|
2080
|
+
#
|
|
2081
|
+
# ClearCaches --
|
|
2082
|
+
#
|
|
2083
|
+
# Clears all caches to reclaim the memory used in [clock]
|
|
2084
|
+
#
|
|
2085
|
+
# Parameters:
|
|
2086
|
+
# None.
|
|
2087
|
+
#
|
|
2088
|
+
# Results:
|
|
2089
|
+
# None.
|
|
2090
|
+
#
|
|
2091
|
+
# Side effects:
|
|
2092
|
+
# Caches are cleared.
|
|
2093
|
+
#
|
|
2094
|
+
#----------------------------------------------------------------------
|
|
2095
|
+
|
|
2096
|
+
proc ::tcl::clock::ClearCaches {} {
|
|
2097
|
+
variable LocFmtMap
|
|
2098
|
+
variable mcMergedCat
|
|
2099
|
+
variable TimeZoneBad
|
|
2100
|
+
|
|
2101
|
+
# tell backend - should invalidate:
|
|
2102
|
+
::tcl::unsupported::clock::configure -clear
|
|
2103
|
+
|
|
2104
|
+
# clear msgcat cache:
|
|
2105
|
+
set mcMergedCat [dict create]
|
|
2106
|
+
|
|
2107
|
+
set LocFmtMap {}
|
|
2108
|
+
set TimeZoneBad {}
|
|
2109
|
+
InitTZData
|
|
2110
|
+
}
|