py2docfx 0.1.15.dev2025736__py3-none-any.whl → 0.1.15.dev2038852__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py2docfx/docfx_yaml/process_doctree.py +34 -21
- py2docfx/docfx_yaml/tests/test_method_arguments.py +7 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_core_metadata.py +21 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/__init__.py +27 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/util.py +7 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +29 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +48 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +115 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +12 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +22 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +82 -35
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +4 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +62 -115
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +15 -18
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +25 -9
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +26 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +38 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_text.py +129 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +8 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +3 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/msal/application.py +51 -17
- py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +18 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +5 -1
- py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +31 -10
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +2 -3
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/filelock.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +7 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_core_metadata.py +21 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/__init__.py +27 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/util.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +48 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +115 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +12 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
- {py2docfx-0.1.15.dev2025736.dist-info → py2docfx-0.1.15.dev2038852.dist-info}/METADATA +1 -1
- {py2docfx-0.1.15.dev2025736.dist-info → py2docfx-0.1.15.dev2038852.dist-info}/RECORD +136 -593
- py2docfx/docfx_yaml/tests/test_process_doctree.py +0 -120
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +0 -82
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +0 -283
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +0 -1153
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +0 -723
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +0 -16
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +0 -1547
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +0 -184
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +0 -879
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +0 -195
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +0 -30
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +0 -420
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +0 -213
- py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +0 -39
- py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +0 -809
- py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +0 -121
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +0 -218
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +0 -116
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +0 -162
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +0 -195
- py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +0 -191
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +0 -27
- py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +0 -154
- py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +0 -236
- py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +0 -569
- py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +0 -258
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +0 -183
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +0 -51
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +0 -71
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +0 -65
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +0 -145
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +0 -104
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +0 -138
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +0 -159
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +0 -132
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +0 -243
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +0 -415
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +0 -76
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +0 -189
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +0 -3
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +0 -133
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +0 -31
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +0 -1097
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +0 -136
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +0 -146
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +0 -155
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +0 -242
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +0 -676
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +0 -411
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +0 -168
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +0 -188
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +0 -76
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +0 -235
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +0 -646
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +0 -299
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +0 -379
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +0 -511
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +0 -104
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +0 -173
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +0 -995
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +0 -552
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +0 -65
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +0 -684
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +0 -749
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +0 -172
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +0 -279
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +0 -589
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +0 -536
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +0 -216
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +0 -87
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +0 -585
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +0 -501
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +0 -277
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +0 -151
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +0 -50
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +0 -593
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +0 -180
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +0 -363
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +0 -291
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +0 -565
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +0 -312
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +0 -511
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +0 -704
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +0 -190
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +0 -3083
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +0 -841
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +0 -323
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +0 -494
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +0 -353
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +0 -382
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +0 -80
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +0 -28
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +0 -32
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +0 -43
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +0 -127
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +0 -71
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +0 -210
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +0 -42
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +0 -246
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +0 -143
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +0 -33
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +0 -101
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +0 -17
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +0 -110
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +0 -170
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +0 -39
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +0 -12
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +0 -61
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +0 -36
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +0 -336
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +0 -106
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +0 -134
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +0 -131
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +0 -131
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +0 -102
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +0 -158
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +0 -199
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +0 -158
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +0 -155
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +0 -117
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +0 -174
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +0 -132
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +0 -82
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +0 -177
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +0 -106
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +0 -445
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +0 -464
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +0 -136
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +0 -272
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +0 -86
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +0 -23
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +0 -123
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +0 -100
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +0 -230
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +0 -164
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +0 -1551
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +0 -956
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +0 -293
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +0 -731
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +0 -291
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +0 -124
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +0 -40
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +0 -161
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +0 -395
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +0 -413
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +0 -477
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +0 -5064
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +0 -1922
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +0 -225
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +0 -957
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +0 -1086
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +0 -627
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +0 -570
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +0 -212
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +0 -674
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +0 -1073
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +0 -1201
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +0 -235
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +0 -7362
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +0 -1079
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +0 -1347
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +0 -236
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +0 -594
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +0 -97
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +0 -156
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +0 -201
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +0 -46
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/h2py.py +0 -194
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +0 -62
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_postinstall.py +0 -733
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_testall.py +0 -120
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +0 -607
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +0 -111
- py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +0 -175
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +0 -213
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +0 -264
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +0 -111
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +0 -273
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +0 -91
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +0 -144
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +0 -1096
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +0 -227
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +0 -333
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +0 -108
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +0 -23
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +0 -148
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +0 -24
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +0 -16
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +0 -366
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32ts.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +0 -174
- py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +0 -223
- py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +0 -134
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +0 -717
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +0 -771
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +0 -604
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +0 -699
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +0 -825
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +0 -1350
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +0 -453
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +0 -182
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +0 -277
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +0 -103
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +0 -96
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +0 -92
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +0 -169
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +0 -434
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +0 -214
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +0 -368
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +0 -135
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +0 -78
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +0 -618
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +0 -331
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +0 -1017
- py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +0 -239
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +0 -99
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +0 -803
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +0 -677
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +0 -47
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +0 -133
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +0 -36
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +0 -181
- py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +0 -142
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +0 -88
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +0 -243
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +0 -96
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +0 -115
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +0 -100
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +0 -44
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +0 -99
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +0 -169
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +0 -159
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +0 -50
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +0 -101
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +0 -121
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +0 -139
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +0 -142
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +0 -149
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +0 -140
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +0 -184
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +0 -138
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +0 -160
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +0 -227
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +0 -80
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +0 -918
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +0 -29
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +0 -51
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +0 -272
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +0 -88
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +0 -147
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +0 -320
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +0 -583
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +0 -40
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +0 -262
- py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +0 -224
- py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +0 -340
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +0 -565
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +0 -151
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +0 -274
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +0 -219
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +0 -467
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +0 -279
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +0 -58
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +0 -238
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +0 -135
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +0 -212
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +0 -583
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +0 -178
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +0 -223
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +0 -262
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +0 -1291
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +0 -78
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +0 -438
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +0 -103
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +0 -145
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +0 -240
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +0 -402
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +0 -300
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +0 -110
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +0 -261
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +0 -875
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +0 -1023
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +0 -211
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +0 -838
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +0 -5
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +0 -179
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +0 -67
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +0 -93
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +0 -56
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +0 -45
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +0 -58
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +0 -143
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +0 -125
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +0 -84
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +0 -188
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +0 -866
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +0 -81
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +0 -971
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +0 -24
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +0 -1615
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +0 -75
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +0 -69
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +0 -3
- py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +0 -733
- py2docfx/venv/venv1/Scripts/pywin32_testall.py +0 -120
- {py2docfx-0.1.15.dev2025736.dist-info → py2docfx-0.1.15.dev2038852.dist-info}/WHEEL +0 -0
- {py2docfx-0.1.15.dev2025736.dist-info → py2docfx-0.1.15.dev2038852.dist-info}/top_level.txt +0 -0
@@ -1,723 +0,0 @@
|
|
1
|
-
"""adodbapi.apibase - A python DB API 2.0 (PEP 249) interface to Microsoft ADO
|
2
|
-
|
3
|
-
Copyright (C) 2002 Henrik Ekelund, version 2.1 by Vernon Cole
|
4
|
-
* https://sourceforge.net/projects/pywin32
|
5
|
-
* https://sourceforge.net/projects/adodbapi
|
6
|
-
"""
|
7
|
-
|
8
|
-
from __future__ import annotations
|
9
|
-
|
10
|
-
import datetime
|
11
|
-
import decimal
|
12
|
-
import numbers
|
13
|
-
import sys
|
14
|
-
import time
|
15
|
-
from collections.abc import Callable, Iterable, Mapping
|
16
|
-
|
17
|
-
# noinspection PyUnresolvedReferences
|
18
|
-
from . import ado_consts as adc
|
19
|
-
|
20
|
-
verbose = False # debugging flag
|
21
|
-
|
22
|
-
|
23
|
-
# ------- Error handlers ------
|
24
|
-
def standardErrorHandler(connection, cursor, errorclass, errorvalue):
|
25
|
-
err = (errorclass, errorvalue)
|
26
|
-
try:
|
27
|
-
connection.messages.append(err)
|
28
|
-
except:
|
29
|
-
pass
|
30
|
-
if cursor is not None:
|
31
|
-
try:
|
32
|
-
cursor.messages.append(err)
|
33
|
-
except:
|
34
|
-
pass
|
35
|
-
raise errorclass(errorvalue)
|
36
|
-
|
37
|
-
|
38
|
-
class Error(Exception):
|
39
|
-
pass # Exception that is the base class of all other error
|
40
|
-
# exceptions. You can use this to catch all errors with one
|
41
|
-
# single 'except' statement. Warnings are not considered
|
42
|
-
# errors and thus should not use this class as base. It must
|
43
|
-
# be a subclass of the Python StandardError (defined in the
|
44
|
-
# module exceptions).
|
45
|
-
|
46
|
-
|
47
|
-
class Warning(Exception):
|
48
|
-
pass
|
49
|
-
|
50
|
-
|
51
|
-
class InterfaceError(Error):
|
52
|
-
pass
|
53
|
-
|
54
|
-
|
55
|
-
class DatabaseError(Error):
|
56
|
-
pass
|
57
|
-
|
58
|
-
|
59
|
-
class InternalError(DatabaseError):
|
60
|
-
pass
|
61
|
-
|
62
|
-
|
63
|
-
class OperationalError(DatabaseError):
|
64
|
-
pass
|
65
|
-
|
66
|
-
|
67
|
-
class ProgrammingError(DatabaseError):
|
68
|
-
pass
|
69
|
-
|
70
|
-
|
71
|
-
class IntegrityError(DatabaseError):
|
72
|
-
pass
|
73
|
-
|
74
|
-
|
75
|
-
class DataError(DatabaseError):
|
76
|
-
pass
|
77
|
-
|
78
|
-
|
79
|
-
class NotSupportedError(DatabaseError):
|
80
|
-
pass
|
81
|
-
|
82
|
-
|
83
|
-
class FetchFailedError(OperationalError):
|
84
|
-
"""
|
85
|
-
Error is used by RawStoredProcedureQuerySet to determine when a fetch
|
86
|
-
failed due to a connection being closed or there is no record set
|
87
|
-
returned. (Non-standard, added especially for django)
|
88
|
-
"""
|
89
|
-
|
90
|
-
pass
|
91
|
-
|
92
|
-
|
93
|
-
# # # # # ----- Type Objects and Constructors ----- # # # # #
|
94
|
-
# Many databases need to have the input in a particular format for binding to an operation's input parameters.
|
95
|
-
# For example, if an input is destined for a DATE column, then it must be bound to the database in a particular
|
96
|
-
# string format. Similar problems exist for "Row ID" columns or large binary items (e.g. blobs or RAW columns).
|
97
|
-
# This presents problems for Python since the parameters to the executeXXX() method are untyped.
|
98
|
-
# When the database module sees a Python string object, it doesn't know if it should be bound as a simple CHAR
|
99
|
-
# column, as a raw BINARY item, or as a DATE.
|
100
|
-
#
|
101
|
-
# To overcome this problem, a module must provide the constructors defined below to create objects that can
|
102
|
-
# hold special values. When passed to the cursor methods, the module can then detect the proper type of
|
103
|
-
# the input parameter and bind it accordingly.
|
104
|
-
|
105
|
-
# A Cursor Object's description attribute returns information about each of the result columns of a query.
|
106
|
-
# The type_code must compare equal to one of Type Objects defined below. Type Objects may be equal to more than
|
107
|
-
# one type code (e.g. DATETIME could be equal to the type codes for date, time and timestamp columns;
|
108
|
-
# see the Implementation Hints below for details).
|
109
|
-
|
110
|
-
# SQL NULL values are represented by the Python None singleton on input and output.
|
111
|
-
|
112
|
-
# Note: Usage of Unix ticks for database interfacing can cause troubles because of the limited date range they cover.
|
113
|
-
|
114
|
-
|
115
|
-
# def Date(year,month,day):
|
116
|
-
# "This function constructs an object holding a date value. "
|
117
|
-
# return dateconverter.date(year,month,day) #dateconverter.Date(year,month,day)
|
118
|
-
#
|
119
|
-
# def Time(hour,minute,second):
|
120
|
-
# "This function constructs an object holding a time value. "
|
121
|
-
# return dateconverter.time(hour, minute, second) # dateconverter.Time(hour,minute,second)
|
122
|
-
#
|
123
|
-
# def Timestamp(year,month,day,hour,minute,second):
|
124
|
-
# "This function constructs an object holding a time stamp value. "
|
125
|
-
# return dateconverter.datetime(year,month,day,hour,minute,second)
|
126
|
-
#
|
127
|
-
# def DateFromTicks(ticks):
|
128
|
-
# """This function constructs an object holding a date value from the given ticks value
|
129
|
-
# (number of seconds since the epoch; see the documentation of the standard Python time module for details). """
|
130
|
-
# return Date(*time.gmtime(ticks)[:3])
|
131
|
-
#
|
132
|
-
# def TimeFromTicks(ticks):
|
133
|
-
# """This function constructs an object holding a time value from the given ticks value
|
134
|
-
# (number of seconds since the epoch; see the documentation of the standard Python time module for details). """
|
135
|
-
# return Time(*time.gmtime(ticks)[3:6])
|
136
|
-
#
|
137
|
-
# def TimestampFromTicks(ticks):
|
138
|
-
# """This function constructs an object holding a time stamp value from the given
|
139
|
-
# ticks value (number of seconds since the epoch;
|
140
|
-
# see the documentation of the standard Python time module for details). """
|
141
|
-
# return Timestamp(*time.gmtime(ticks)[:6])
|
142
|
-
#
|
143
|
-
# def Binary(aString):
|
144
|
-
# """This function constructs an object capable of holding a binary (long) string value. """
|
145
|
-
# b = bytes(aString)
|
146
|
-
# return b
|
147
|
-
# ----- Time converters ----------------------------------------------
|
148
|
-
class TimeConverter: # this is a generic time converter skeleton
|
149
|
-
def __init__(self): # the details will be filled in by instances
|
150
|
-
self._ordinal_1899_12_31 = datetime.date(1899, 12, 31).toordinal() - 1
|
151
|
-
# Use cls.types to compare if an input parameter is a datetime
|
152
|
-
self.types = {
|
153
|
-
# Dynamically get the types as the methods may be overriden
|
154
|
-
type(self.Date(2000, 1, 1)),
|
155
|
-
type(self.Time(12, 1, 1)),
|
156
|
-
type(self.Timestamp(2000, 1, 1, 12, 1, 1)),
|
157
|
-
datetime.datetime,
|
158
|
-
datetime.time,
|
159
|
-
datetime.date,
|
160
|
-
}
|
161
|
-
|
162
|
-
def COMDate(self, obj):
|
163
|
-
"""Returns a ComDate from a date-time"""
|
164
|
-
try: # most likely a datetime
|
165
|
-
tt = obj.timetuple()
|
166
|
-
|
167
|
-
try:
|
168
|
-
ms = obj.microsecond
|
169
|
-
except:
|
170
|
-
ms = 0
|
171
|
-
return self.ComDateFromTuple(tt, ms)
|
172
|
-
except: # might be a tuple
|
173
|
-
try:
|
174
|
-
return self.ComDateFromTuple(obj)
|
175
|
-
except:
|
176
|
-
raise ValueError(f'Cannot convert "{obj!r}" to COMdate.')
|
177
|
-
|
178
|
-
def ComDateFromTuple(self, t, microseconds=0):
|
179
|
-
d = datetime.date(t[0], t[1], t[2])
|
180
|
-
integerPart = d.toordinal() - self._ordinal_1899_12_31
|
181
|
-
ms = (t[3] * 3600 + t[4] * 60 + t[5]) * 1000000 + microseconds
|
182
|
-
fractPart = float(ms) / 86400000000.0
|
183
|
-
return integerPart + fractPart
|
184
|
-
|
185
|
-
def DateObjectFromCOMDate(self, comDate):
|
186
|
-
"Returns an object of the wanted type from a ComDate"
|
187
|
-
raise NotImplementedError # "Abstract class"
|
188
|
-
|
189
|
-
def Date(self, year, month, day):
|
190
|
-
"This function constructs an object holding a date value."
|
191
|
-
raise NotImplementedError # "Abstract class"
|
192
|
-
|
193
|
-
def Time(self, hour, minute, second):
|
194
|
-
"This function constructs an object holding a time value."
|
195
|
-
raise NotImplementedError # "Abstract class"
|
196
|
-
|
197
|
-
def Timestamp(self, year, month, day, hour, minute, second):
|
198
|
-
"This function constructs an object holding a time stamp value."
|
199
|
-
raise NotImplementedError # "Abstract class"
|
200
|
-
# all purpose date to ISO format converter
|
201
|
-
|
202
|
-
def DateObjectToIsoFormatString(self, obj):
|
203
|
-
"This function should return a string in the format 'YYYY-MM-dd HH:MM:SS:ms' (ms optional)"
|
204
|
-
try: # most likely, a datetime.datetime
|
205
|
-
s = obj.isoformat(" ")
|
206
|
-
except (TypeError, AttributeError):
|
207
|
-
if isinstance(obj, datetime.date):
|
208
|
-
s = obj.isoformat() + " 00:00:00" # return exact midnight
|
209
|
-
else:
|
210
|
-
try: # but may be time.struct_time
|
211
|
-
s = time.strftime("%Y-%m-%d %H:%M:%S", obj)
|
212
|
-
except:
|
213
|
-
raise ValueError(f'Cannot convert "{obj!r}" to isoformat')
|
214
|
-
return s
|
215
|
-
|
216
|
-
|
217
|
-
class pythonDateTimeConverter(TimeConverter): # standard since Python 2.3
|
218
|
-
def __init__(self):
|
219
|
-
TimeConverter.__init__(self)
|
220
|
-
|
221
|
-
def DateObjectFromCOMDate(self, comDate):
|
222
|
-
if isinstance(comDate, datetime.datetime):
|
223
|
-
odn = comDate.toordinal()
|
224
|
-
tim = comDate.time()
|
225
|
-
new = datetime.datetime.combine(datetime.datetime.fromordinal(odn), tim)
|
226
|
-
return new
|
227
|
-
# return comDate.replace(tzinfo=None) # make non aware
|
228
|
-
else:
|
229
|
-
fComDate = float(comDate) # ComDate is number of days since 1899-12-31
|
230
|
-
integerPart = int(fComDate)
|
231
|
-
floatpart = fComDate - integerPart
|
232
|
-
##if floatpart == 0.0:
|
233
|
-
## return datetime.date.fromordinal(integerPart + self._ordinal_1899_12_31)
|
234
|
-
dte = datetime.datetime.fromordinal(
|
235
|
-
integerPart + self._ordinal_1899_12_31
|
236
|
-
) + datetime.timedelta(milliseconds=floatpart * 86400000)
|
237
|
-
# millisecondsperday=86400000 # 24*60*60*1000
|
238
|
-
return dte
|
239
|
-
|
240
|
-
def Date(self, year, month, day):
|
241
|
-
return datetime.date(year, month, day)
|
242
|
-
|
243
|
-
def Time(self, hour, minute, second):
|
244
|
-
return datetime.time(hour, minute, second)
|
245
|
-
|
246
|
-
def Timestamp(self, year, month, day, hour, minute, second):
|
247
|
-
return datetime.datetime(year, month, day, hour, minute, second)
|
248
|
-
|
249
|
-
|
250
|
-
class pythonTimeConverter(TimeConverter): # the old, ?nix type date and time
|
251
|
-
def __init__(self): # caution: this Class gets confised by timezones and DST
|
252
|
-
TimeConverter.__init__(self)
|
253
|
-
self.types.add(time.struct_time)
|
254
|
-
|
255
|
-
def DateObjectFromCOMDate(self, comDate):
|
256
|
-
"Returns ticks since 1970"
|
257
|
-
if isinstance(comDate, datetime.datetime):
|
258
|
-
return comDate.timetuple()
|
259
|
-
else:
|
260
|
-
fcomDate = float(comDate)
|
261
|
-
secondsperday = 86400 # 24*60*60
|
262
|
-
# ComDate is number of days since 1899-12-31, gmtime epoch is 1970-1-1 = 25569 days
|
263
|
-
t = time.gmtime(secondsperday * (fcomDate - 25569.0))
|
264
|
-
return t # year,month,day,hour,minute,second,weekday,julianday,daylightsaving=t
|
265
|
-
|
266
|
-
def Date(self, year, month, day):
|
267
|
-
return self.Timestamp(year, month, day, 0, 0, 0)
|
268
|
-
|
269
|
-
def Time(self, hour, minute, second):
|
270
|
-
return time.gmtime((hour * 60 + minute) * 60 + second)
|
271
|
-
|
272
|
-
def Timestamp(self, year, month, day, hour, minute, second):
|
273
|
-
return time.localtime(
|
274
|
-
time.mktime((year, month, day, hour, minute, second, 0, 0, -1))
|
275
|
-
)
|
276
|
-
|
277
|
-
|
278
|
-
base_dateconverter = pythonDateTimeConverter()
|
279
|
-
|
280
|
-
# ------ DB API required module attributes ---------------------
|
281
|
-
threadsafety = 1 # TODO -- find out whether this module is actually BETTER than 1.
|
282
|
-
|
283
|
-
apilevel = "2.0" # String constant stating the supported DB API level.
|
284
|
-
|
285
|
-
paramstyle = "qmark" # the default parameter style
|
286
|
-
|
287
|
-
# ------ control for an extension which may become part of DB API 3.0 ---
|
288
|
-
accepted_paramstyles = ("qmark", "named", "format", "pyformat", "dynamic")
|
289
|
-
|
290
|
-
# ------------------------------------------------------------------------------------------
|
291
|
-
# define similar types for generic conversion routines
|
292
|
-
adoIntegerTypes = (
|
293
|
-
adc.adInteger,
|
294
|
-
adc.adSmallInt,
|
295
|
-
adc.adTinyInt,
|
296
|
-
adc.adUnsignedInt,
|
297
|
-
adc.adUnsignedSmallInt,
|
298
|
-
adc.adUnsignedTinyInt,
|
299
|
-
adc.adBoolean,
|
300
|
-
adc.adError,
|
301
|
-
) # max 32 bits
|
302
|
-
adoRowIdTypes = (adc.adChapter,) # v2.1 Rose
|
303
|
-
adoLongTypes = (adc.adBigInt, adc.adFileTime, adc.adUnsignedBigInt)
|
304
|
-
adoExactNumericTypes = (
|
305
|
-
adc.adDecimal,
|
306
|
-
adc.adNumeric,
|
307
|
-
adc.adVarNumeric,
|
308
|
-
adc.adCurrency,
|
309
|
-
) # v2.3 Cole
|
310
|
-
adoApproximateNumericTypes = (adc.adDouble, adc.adSingle) # v2.1 Cole
|
311
|
-
adoStringTypes = (
|
312
|
-
adc.adBSTR,
|
313
|
-
adc.adChar,
|
314
|
-
adc.adLongVarChar,
|
315
|
-
adc.adLongVarWChar,
|
316
|
-
adc.adVarChar,
|
317
|
-
adc.adVarWChar,
|
318
|
-
adc.adWChar,
|
319
|
-
)
|
320
|
-
adoBinaryTypes = (adc.adBinary, adc.adLongVarBinary, adc.adVarBinary)
|
321
|
-
adoDateTimeTypes = (adc.adDBTime, adc.adDBTimeStamp, adc.adDate, adc.adDBDate)
|
322
|
-
adoRemainingTypes = (
|
323
|
-
adc.adEmpty,
|
324
|
-
adc.adIDispatch,
|
325
|
-
adc.adIUnknown,
|
326
|
-
adc.adPropVariant,
|
327
|
-
adc.adArray,
|
328
|
-
adc.adUserDefined,
|
329
|
-
adc.adVariant,
|
330
|
-
adc.adGUID,
|
331
|
-
)
|
332
|
-
|
333
|
-
|
334
|
-
# this class is a trick to determine whether a type is a member of a related group of types. see PEP notes
|
335
|
-
class DBAPITypeObject:
|
336
|
-
def __init__(self, valuesTuple):
|
337
|
-
self.values = frozenset(valuesTuple)
|
338
|
-
|
339
|
-
def __eq__(self, other):
|
340
|
-
return other in self.values
|
341
|
-
|
342
|
-
def __ne__(self, other):
|
343
|
-
return other not in self.values
|
344
|
-
|
345
|
-
|
346
|
-
"""This type object is used to describe columns in a database that are string-based (e.g. CHAR). """
|
347
|
-
STRING = DBAPITypeObject(adoStringTypes)
|
348
|
-
|
349
|
-
"""This type object is used to describe (long) binary columns in a database (e.g. LONG, RAW, BLOBs). """
|
350
|
-
BINARY = DBAPITypeObject(adoBinaryTypes)
|
351
|
-
|
352
|
-
"""This type object is used to describe numeric columns in a database. """
|
353
|
-
NUMBER = DBAPITypeObject(
|
354
|
-
adoIntegerTypes + adoLongTypes + adoExactNumericTypes + adoApproximateNumericTypes
|
355
|
-
)
|
356
|
-
|
357
|
-
"""This type object is used to describe date/time columns in a database. """
|
358
|
-
|
359
|
-
DATETIME = DBAPITypeObject(adoDateTimeTypes)
|
360
|
-
"""This type object is used to describe the "Row ID" column in a database. """
|
361
|
-
ROWID = DBAPITypeObject(adoRowIdTypes)
|
362
|
-
|
363
|
-
OTHER = DBAPITypeObject(adoRemainingTypes)
|
364
|
-
|
365
|
-
# ------- utilities for translating python data types to ADO data types ---------------------------------
|
366
|
-
typeMap = {
|
367
|
-
memoryview: adc.adVarBinary,
|
368
|
-
float: adc.adDouble,
|
369
|
-
type(None): adc.adEmpty,
|
370
|
-
str: adc.adBSTR,
|
371
|
-
bool: adc.adBoolean, # v2.1 Cole
|
372
|
-
decimal.Decimal: adc.adDecimal,
|
373
|
-
int: adc.adBigInt,
|
374
|
-
bytes: adc.adVarBinary,
|
375
|
-
}
|
376
|
-
|
377
|
-
|
378
|
-
def pyTypeToADOType(d):
|
379
|
-
tp = type(d)
|
380
|
-
try:
|
381
|
-
return typeMap[tp]
|
382
|
-
except KeyError: # The type was not defined in the pre-computed Type table
|
383
|
-
from . import dateconverter
|
384
|
-
|
385
|
-
# maybe it is one of our supported Date/Time types
|
386
|
-
if tp in dateconverter.types:
|
387
|
-
return adc.adDate
|
388
|
-
# otherwise, attempt to discern the type by probing the data object itself -- to handle duck typing
|
389
|
-
if isinstance(d, str):
|
390
|
-
return adc.adBSTR
|
391
|
-
if isinstance(d, numbers.Integral):
|
392
|
-
return adc.adBigInt
|
393
|
-
if isinstance(d, numbers.Real):
|
394
|
-
return adc.adDouble
|
395
|
-
raise DataError(f'cannot convert "{d!r}" (type={tp}) to ADO')
|
396
|
-
|
397
|
-
|
398
|
-
# # # # # # # # # # # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
399
|
-
# functions to convert database values to Python objects
|
400
|
-
# ------------------------------------------------------------------------
|
401
|
-
# variant type : function converting variant to Python value
|
402
|
-
def variantConvertDate(v):
|
403
|
-
from . import dateconverter # this function only called when adodbapi is running
|
404
|
-
|
405
|
-
return dateconverter.DateObjectFromCOMDate(v)
|
406
|
-
|
407
|
-
|
408
|
-
def cvtString(variant): # use to get old action of adodbapi v1 if desired
|
409
|
-
return str(variant)
|
410
|
-
|
411
|
-
|
412
|
-
def cvtDecimal(variant): # better name
|
413
|
-
return _convertNumberWithCulture(variant, decimal.Decimal)
|
414
|
-
|
415
|
-
|
416
|
-
def cvtNumeric(variant): # older name - don't break old code
|
417
|
-
return cvtDecimal(variant)
|
418
|
-
|
419
|
-
|
420
|
-
def cvtFloat(variant):
|
421
|
-
return _convertNumberWithCulture(variant, float)
|
422
|
-
|
423
|
-
|
424
|
-
def _convertNumberWithCulture(variant, f):
|
425
|
-
try:
|
426
|
-
return f(variant)
|
427
|
-
except (ValueError, TypeError, decimal.InvalidOperation):
|
428
|
-
try:
|
429
|
-
europeVsUS = str(variant).replace(",", ".")
|
430
|
-
return f(europeVsUS)
|
431
|
-
except (ValueError, TypeError, decimal.InvalidOperation):
|
432
|
-
pass
|
433
|
-
|
434
|
-
|
435
|
-
def cvtInt(variant):
|
436
|
-
return int(variant)
|
437
|
-
|
438
|
-
|
439
|
-
def cvtLong(variant): # only important in old versions where long and int differ
|
440
|
-
return int(variant)
|
441
|
-
|
442
|
-
|
443
|
-
def cvtBuffer(variant):
|
444
|
-
return bytes(variant)
|
445
|
-
|
446
|
-
|
447
|
-
def cvtUnicode(variant):
|
448
|
-
return str(variant)
|
449
|
-
|
450
|
-
|
451
|
-
def identity(x):
|
452
|
-
return x
|
453
|
-
|
454
|
-
|
455
|
-
def cvtUnusual(variant):
|
456
|
-
if verbose > 1:
|
457
|
-
sys.stderr.write(f"Conversion called for Unusual data={variant!r}\n")
|
458
|
-
return variant # cannot find conversion function -- just give the data to the user
|
459
|
-
|
460
|
-
|
461
|
-
def convert_to_python(variant, func): # convert DB value into Python value
|
462
|
-
if variant is None:
|
463
|
-
return None
|
464
|
-
return func(variant) # call the appropriate conversion function
|
465
|
-
|
466
|
-
|
467
|
-
class MultiMap(dict[int, Callable[[object], object]]):
|
468
|
-
# builds a dictionary from {(iterable,of,keys) : function}
|
469
|
-
"""A dictionary of ado.type : function
|
470
|
-
-- but you can set multiple items by passing an iterable of keys"""
|
471
|
-
|
472
|
-
# useful for defining conversion functions for groups of similar data types.
|
473
|
-
def __init__(self, aDict: Mapping[Iterable[int] | int, Callable[[object], object]]):
|
474
|
-
for k, v in aDict.items():
|
475
|
-
self[k] = v # we must call __setitem__
|
476
|
-
|
477
|
-
def __setitem__(
|
478
|
-
self, adoType: Iterable[int] | int, cvtFn: Callable[[object], object]
|
479
|
-
):
|
480
|
-
"set a single item, or a whole iterable of items"
|
481
|
-
if isinstance(adoType, Iterable):
|
482
|
-
# user passed us an iterable, set them individually
|
483
|
-
for type in adoType:
|
484
|
-
dict.__setitem__(self, type, cvtFn)
|
485
|
-
else:
|
486
|
-
dict.__setitem__(self, adoType, cvtFn)
|
487
|
-
|
488
|
-
|
489
|
-
# initialize variantConversions dictionary used to convert SQL to Python
|
490
|
-
# this is the dictionary of default conversion functions, built by the class above.
|
491
|
-
# this becomes a class attribute for the Connection, and that attribute is used
|
492
|
-
# to build the list of column conversion functions for the Cursor
|
493
|
-
variantConversions = MultiMap(
|
494
|
-
{
|
495
|
-
adoDateTimeTypes: variantConvertDate,
|
496
|
-
adoApproximateNumericTypes: cvtFloat,
|
497
|
-
adoExactNumericTypes: cvtDecimal, # use to force decimal rather than unicode
|
498
|
-
adoLongTypes: cvtLong,
|
499
|
-
adoIntegerTypes: cvtInt,
|
500
|
-
adoRowIdTypes: cvtInt,
|
501
|
-
adoStringTypes: identity,
|
502
|
-
adoBinaryTypes: cvtBuffer,
|
503
|
-
adoRemainingTypes: cvtUnusual,
|
504
|
-
}
|
505
|
-
)
|
506
|
-
|
507
|
-
# # # # # classes to emulate the result of cursor.fetchxxx() as a sequence of sequences # # # # #
|
508
|
-
# "an ENUM of how my low level records are laid out"
|
509
|
-
RS_WIN_32, RS_ARRAY, RS_REMOTE = list(range(1, 4))
|
510
|
-
|
511
|
-
|
512
|
-
class SQLrow: # a single database row
|
513
|
-
# class to emulate a sequence, so that a column may be retrieved by either number or name
|
514
|
-
def __init__(self, rows, index): # "rows" is an _SQLrows object, index is which row
|
515
|
-
self.rows = rows # parent 'fetch' container object
|
516
|
-
self.index = index # my row number within parent
|
517
|
-
|
518
|
-
def __getattr__(self, name): # used for row.columnName type of value access
|
519
|
-
try:
|
520
|
-
return self._getValue(self.rows.columnNames[name.lower()])
|
521
|
-
except KeyError:
|
522
|
-
raise AttributeError('Unknown column name "{}"'.format(name))
|
523
|
-
|
524
|
-
def _getValue(self, key): # key must be an integer
|
525
|
-
if (
|
526
|
-
self.rows.recordset_format == RS_ARRAY
|
527
|
-
): # retrieve from two-dimensional array
|
528
|
-
v = self.rows.ado_results[key, self.index]
|
529
|
-
elif self.rows.recordset_format == RS_REMOTE:
|
530
|
-
v = self.rows.ado_results[self.index][key]
|
531
|
-
else: # pywin32 - retrieve from tuple of tuples
|
532
|
-
v = self.rows.ado_results[key][self.index]
|
533
|
-
if self.rows.converters is NotImplemented:
|
534
|
-
return v
|
535
|
-
return convert_to_python(v, self.rows.converters[key])
|
536
|
-
|
537
|
-
def __len__(self):
|
538
|
-
return self.rows.numberOfColumns
|
539
|
-
|
540
|
-
def __getitem__(self, key): # used for row[key] type of value access
|
541
|
-
if isinstance(key, int): # normal row[1] designation
|
542
|
-
try:
|
543
|
-
return self._getValue(key)
|
544
|
-
except IndexError:
|
545
|
-
raise
|
546
|
-
if isinstance(key, slice):
|
547
|
-
indices = key.indices(self.rows.numberOfColumns)
|
548
|
-
vl = [self._getValue(i) for i in range(*indices)]
|
549
|
-
return tuple(vl)
|
550
|
-
try:
|
551
|
-
return self._getValue(
|
552
|
-
self.rows.columnNames[key.lower()]
|
553
|
-
) # extension row[columnName] designation
|
554
|
-
except (KeyError, TypeError):
|
555
|
-
er, st, tr = sys.exc_info()
|
556
|
-
raise er(f'No such key as "{key!r}" in {self!r}').with_traceback(tr)
|
557
|
-
|
558
|
-
def __iter__(self):
|
559
|
-
return iter(self.__next__())
|
560
|
-
|
561
|
-
def __next__(self):
|
562
|
-
for n in range(self.rows.numberOfColumns):
|
563
|
-
yield self._getValue(n)
|
564
|
-
|
565
|
-
def __repr__(self): # create a human readable representation
|
566
|
-
taglist = sorted(list(self.rows.columnNames.items()), key=lambda x: x[1])
|
567
|
-
s = "<SQLrow={"
|
568
|
-
for name, i in taglist:
|
569
|
-
s += f"{name}:{self._getValue(i)!r}, "
|
570
|
-
return s[:-2] + "}>"
|
571
|
-
|
572
|
-
def __str__(self): # create a pretty human readable representation
|
573
|
-
return str(
|
574
|
-
tuple(str(self._getValue(i)) for i in range(self.rows.numberOfColumns))
|
575
|
-
)
|
576
|
-
|
577
|
-
# TO-DO implement pickling an SQLrow directly
|
578
|
-
# def __getstate__(self): return self.__dict__
|
579
|
-
# def __setstate__(self, d): self.__dict__.update(d)
|
580
|
-
# which basically tell pickle to treat your class just like a normal one,
|
581
|
-
# taking self.__dict__ as representing the whole of the instance state,
|
582
|
-
# despite the existence of the __getattr__.
|
583
|
-
# # # #
|
584
|
-
|
585
|
-
|
586
|
-
class SQLrows:
|
587
|
-
# class to emulate a sequence for multiple rows using a container object
|
588
|
-
def __init__(self, ado_results, numberOfRows, cursor):
|
589
|
-
self.ado_results = ado_results # raw result of SQL get
|
590
|
-
try:
|
591
|
-
self.recordset_format = cursor.recordset_format
|
592
|
-
self.numberOfColumns = cursor.numberOfColumns
|
593
|
-
self.converters = cursor.converters
|
594
|
-
self.columnNames = cursor.columnNames
|
595
|
-
except AttributeError:
|
596
|
-
self.recordset_format = RS_ARRAY
|
597
|
-
self.numberOfColumns = 0
|
598
|
-
self.converters = []
|
599
|
-
self.columnNames = {}
|
600
|
-
self.numberOfRows = numberOfRows
|
601
|
-
|
602
|
-
def __len__(self):
|
603
|
-
return self.numberOfRows
|
604
|
-
|
605
|
-
def __getitem__(self, item): # used for row or row,column access
|
606
|
-
if not self.ado_results:
|
607
|
-
return []
|
608
|
-
if isinstance(item, slice): # will return a list of row objects
|
609
|
-
indices = item.indices(self.numberOfRows)
|
610
|
-
return [SQLrow(self, k) for k in range(*indices)]
|
611
|
-
elif isinstance(item, tuple) and len(item) == 2:
|
612
|
-
# d = some_rowsObject[i,j] will return a datum from a two-dimension address
|
613
|
-
i, j = item
|
614
|
-
if not isinstance(j, int):
|
615
|
-
try:
|
616
|
-
j = self.columnNames[j.lower()] # convert named column to numeric
|
617
|
-
except KeyError:
|
618
|
-
raise KeyError(f"adodbapi: no such column name as {j!r}")
|
619
|
-
if self.recordset_format == RS_ARRAY: # retrieve from two-dimensional array
|
620
|
-
v = self.ado_results[j, i]
|
621
|
-
elif self.recordset_format == RS_REMOTE:
|
622
|
-
v = self.ado_results[i][j]
|
623
|
-
else: # pywin32 - retrieve from tuple of tuples
|
624
|
-
v = self.ado_results[j][i]
|
625
|
-
if self.converters is NotImplemented:
|
626
|
-
return v
|
627
|
-
return convert_to_python(v, self.converters[j])
|
628
|
-
else:
|
629
|
-
row = SQLrow(self, item) # new row descriptor
|
630
|
-
return row
|
631
|
-
|
632
|
-
def __iter__(self):
|
633
|
-
return iter(self.__next__())
|
634
|
-
|
635
|
-
def __next__(self):
|
636
|
-
for n in range(self.numberOfRows):
|
637
|
-
row = SQLrow(self, n)
|
638
|
-
yield row
|
639
|
-
# # # # #
|
640
|
-
|
641
|
-
# # # # # functions to re-format SQL requests to other paramstyle requirements # # # # # # # # # #
|
642
|
-
|
643
|
-
|
644
|
-
def changeNamedToQmark(
|
645
|
-
op,
|
646
|
-
): # convert from 'named' paramstyle to ADO required '?'mark parameters
|
647
|
-
outOp = ""
|
648
|
-
outparms = []
|
649
|
-
chunks = op.split(
|
650
|
-
"'"
|
651
|
-
) # quote all literals -- odd numbered list results are literals.
|
652
|
-
inQuotes = False
|
653
|
-
for chunk in chunks:
|
654
|
-
if inQuotes: # this is inside a quote
|
655
|
-
if chunk == "": # double apostrophe to quote one apostrophe
|
656
|
-
outOp = outOp[:-1] # so take one away
|
657
|
-
else:
|
658
|
-
outOp += "'" + chunk + "'" # else pass the quoted string as is.
|
659
|
-
else: # is SQL code -- look for a :namedParameter
|
660
|
-
while chunk: # some SQL string remains
|
661
|
-
sp = chunk.split(":", 1)
|
662
|
-
outOp += sp[0] # concat the part up to the :
|
663
|
-
s = ""
|
664
|
-
try:
|
665
|
-
chunk = sp[1]
|
666
|
-
except IndexError:
|
667
|
-
chunk = None
|
668
|
-
if chunk: # there was a parameter - parse it out
|
669
|
-
i = 0
|
670
|
-
c = chunk[0]
|
671
|
-
while c.isalnum() or c == "_":
|
672
|
-
i += 1
|
673
|
-
try:
|
674
|
-
c = chunk[i]
|
675
|
-
except IndexError:
|
676
|
-
break
|
677
|
-
s = chunk[:i]
|
678
|
-
chunk = chunk[i:]
|
679
|
-
if s:
|
680
|
-
outparms.append(s) # list the parameters in order
|
681
|
-
outOp += "?" # put in the Qmark
|
682
|
-
inQuotes = not inQuotes
|
683
|
-
return outOp, outparms
|
684
|
-
|
685
|
-
|
686
|
-
def changeFormatToQmark(
|
687
|
-
op,
|
688
|
-
): # convert from 'format' paramstyle to ADO required '?'mark parameters
|
689
|
-
outOp = ""
|
690
|
-
outparams = []
|
691
|
-
chunks = op.split(
|
692
|
-
"'"
|
693
|
-
) # quote all literals -- odd numbered list results are literals.
|
694
|
-
inQuotes = False
|
695
|
-
for chunk in chunks:
|
696
|
-
if inQuotes:
|
697
|
-
if (
|
698
|
-
outOp != "" and chunk == ""
|
699
|
-
): # he used a double apostrophe to quote one apostrophe
|
700
|
-
outOp = outOp[:-1] # so take one away
|
701
|
-
else:
|
702
|
-
outOp += "'" + chunk + "'" # else pass the quoted string as is.
|
703
|
-
else: # is SQL code -- look for a %s parameter
|
704
|
-
if "%(" in chunk: # ugh! pyformat!
|
705
|
-
while chunk: # some SQL string remains
|
706
|
-
sp = chunk.split("%(", 1)
|
707
|
-
outOp += sp[0] # concat the part up to the %
|
708
|
-
if len(sp) > 1:
|
709
|
-
try:
|
710
|
-
s, chunk = sp[1].split(")s", 1) # find the ')s'
|
711
|
-
except ValueError:
|
712
|
-
raise ProgrammingError(
|
713
|
-
'Pyformat SQL has incorrect format near "%s"' % chunk
|
714
|
-
)
|
715
|
-
outparams.append(s)
|
716
|
-
outOp += "?" # put in the Qmark
|
717
|
-
else:
|
718
|
-
chunk = None
|
719
|
-
else: # proper '%s' format
|
720
|
-
sp = chunk.split("%s") # make each %s
|
721
|
-
outOp += "?".join(sp) # into ?
|
722
|
-
inQuotes = not inQuotes # every other chunk is a quoted string
|
723
|
-
return outOp, outparams
|