From 8269de671bc6bd20f858e9f4ace628e4890847b6 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Tue, 14 Nov 2023 18:59:22 +0000 Subject: [PATCH 01/26] bump version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6326f07..2e9bf51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "rwslib" -version = "1.2.10" +version = "1.2.11" description = "Rave Web Services for Python" authors = ["Ian Sparks "] maintainers = ["Geoff Low "] From af01d6f45a0cee8f88e4f3177e65cd3d2de8c7f8 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Tue, 14 Nov 2023 19:00:50 +0000 Subject: [PATCH 02/26] bump versions of deps --- poetry.lock | 338 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 203 insertions(+), 135 deletions(-) diff --git a/poetry.lock b/poetry.lock index 097767b..7e2dd0d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -13,17 +13,32 @@ files = [ [[package]] name = "babel" -version = "2.12.1" +version = "2.13.1" description = "Internationalization utilities" optional = true python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} +setuptools = {version = "*", markers = "python_version >= \"3.12\""} + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "cachetools" +version = "5.3.2" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, +] [[package]] name = "certifi" @@ -36,99 +51,125 @@ files = [ {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] +[[package]] +name = "chardet" +version = "5.2.0" +description = "Universal encoding detector for Python 3" +optional = false +python-versions = ">=3.7" +files = [ + {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, + {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, +] + [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" -version = "8.1.6" +version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, - {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -242,13 +283,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -548,24 +589,24 @@ test = ["pytest", "pytest-cov"] [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "platformdirs" -version = "3.10.0" +version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, + {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, ] [package.dependencies] @@ -593,17 +634,6 @@ importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - [[package]] name = "pygments" version = "2.16.1" @@ -618,15 +648,34 @@ files = [ [package.extras] plugins = ["importlib-metadata"] +[[package]] +name = "pyproject-api" +version = "1.5.3" +description = "API to interact with the python pyproject.toml based projects" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyproject_api-1.5.3-py3-none-any.whl", hash = "sha256:14cf09828670c7b08842249c1f28c8ee6581b872e893f81b62d5465bec41502f"}, + {file = "pyproject_api-1.5.3.tar.gz", hash = "sha256:ffb5b2d7cad43f5b2688ab490de7c4d3f6f15e0b819cb588c4b771567c9729eb"}, +] + +[package.dependencies] +packaging = ">=23.1" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +testing = ["covdefaults (>=2.3)", "importlib-metadata (>=6.6)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "setuptools (>=67.8)", "wheel (>=0.40)"] + [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -657,13 +706,13 @@ six = ">=1.5" [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = true python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -687,6 +736,22 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = true +python-versions = ">=3.8" +files = [ + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -857,45 +922,48 @@ files = [ [[package]] name = "tox" -version = "3.28.0" +version = "4.8.0" description = "tox is a generic virtualenv management and test command line tool" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" files = [ - {file = "tox-3.28.0-py2.py3-none-any.whl", hash = "sha256:57b5ab7e8bb3074edc3c0c0b4b192a4f3799d3723b2c5b76f1fa9f2d40316eea"}, - {file = "tox-3.28.0.tar.gz", hash = "sha256:d0d28f3fe6d6d7195c27f8b054c3e99d5451952b54abdae673b71609a581f640"}, + {file = "tox-4.8.0-py3-none-any.whl", hash = "sha256:4991305a56983d750a0d848a34242be290452aa88d248f1bf976e4036ee8b213"}, + {file = "tox-4.8.0.tar.gz", hash = "sha256:2adacf435b12ccf10b9dfa9975d8ec0afd7cbae44d300463140d2117b968037b"}, ] [package.dependencies] -colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} -filelock = ">=3.0.0" -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -packaging = ">=14" -pluggy = ">=0.12.0" -py = ">=1.4.17" -six = ">=1.14.0" -tomli = {version = ">=2.0.1", markers = "python_version >= \"3.7\" and python_version < \"3.11\""} -virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" +cachetools = ">=5.3.1" +chardet = ">=5.1" +colorama = ">=0.4.6" +filelock = ">=3.12.2" +importlib-metadata = {version = ">=6.7", markers = "python_version < \"3.8\""} +packaging = ">=23.1" +platformdirs = ">=3.9.1" +pluggy = ">=1.2" +pyproject-api = ">=1.5.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.7.1", markers = "python_version < \"3.8\""} +virtualenv = ">=20.24.1" [package.extras] -docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] -testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.23.3,!=1.23.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.1.1)", "devpi-process (>=0.3.1)", "diff-cover (>=7.7)", "distlib (>=0.3.7)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.17.1)", "psutil (>=5.9.5)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-xdist (>=3.3.1)", "re-assert (>=1.1)", "time-machine (>=2.10)", "wheel (>=0.40)"] [[package]] name = "tox-poetry" -version = "0.5.0" +version = "0.4.1" description = "Tox poetry plugin" optional = false python-versions = "*" files = [ - {file = "tox-poetry-0.5.0.tar.gz", hash = "sha256:5bf3bc8bcbcac0f52ff73c11062123cc1450cd3bdde4b3f71e015ce1020b3b36"}, - {file = "tox_poetry-0.5.0-py2.py3-none-any.whl", hash = "sha256:072c994cd23e0a818c4bf9db10a2adcb7fbee85a23a0826a74d649701b9bdcab"}, + {file = "tox-poetry-0.4.1.tar.gz", hash = "sha256:2395808e1ce487b5894c10f2202e14702bfa6d6909c0d1e525170d14809ac7ef"}, + {file = "tox_poetry-0.4.1-py2.py3-none-any.whl", hash = "sha256:11d9cd4e51d4cd9484b3ba63f2650ab4cfb4096e5f0682ecf561ddfc3c8e8c92"}, ] [package.dependencies] pluggy = "*" toml = "*" -tox = {version = ">=3.7.0,<4", markers = "python_version >= \"3\""} +tox = {version = ">=3.7.0", markers = "python_version >= \"3\""} [package.extras] test = ["coverage", "pycodestyle", "pylint", "pytest"] @@ -913,13 +981,13 @@ files = [ [[package]] name = "urllib3" -version = "2.0.4" +version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.7" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] [package.extras] @@ -930,13 +998,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.24.2" +version = "20.24.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.2-py3-none-any.whl", hash = "sha256:43a3052be36080548bdee0b42919c88072037d50d56c28bd3f853cbe92b953ff"}, - {file = "virtualenv-20.24.2.tar.gz", hash = "sha256:fd8a78f46f6b99a67b7ec5cf73f92357891a7b3a40fd97637c27f854aae3b9e0"}, + {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, + {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, ] [package.dependencies] @@ -946,7 +1014,7 @@ importlib-metadata = {version = ">=6.6", markers = "python_version < \"3.8\""} platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] From 8367acd47f5a0d1641d573bdd94d46491476550a Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Tue, 14 Nov 2023 19:01:36 +0000 Subject: [PATCH 03/26] added support for `mode` on CAR added support for `unicode` on CAR --- rwslib/rws_requests/odm_adapter.py | 23 +++++++++++++-- rwslib/tests/test_odm_adapter.py | 46 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/rwslib/rws_requests/odm_adapter.py b/rwslib/rws_requests/odm_adapter.py index ecbe858..e5fb12f 100644 --- a/rwslib/rws_requests/odm_adapter.py +++ b/rwslib/rws_requests/odm_adapter.py @@ -3,25 +3,44 @@ http://rws-webhelp.s3.amazonaws.com/WebHelp_ENG/solutions/clinical_data_audits/index.html#odm-adapter """ +from typing import Optional + from . import RWSAuthorizedGetRequest, QueryOptionGetRequest class AuditRecordsRequest(QueryOptionGetRequest): """Clinical Audit Records Dataset""" - KNOWN_QUERY_OPTIONS = ["studyoid", "startid", "per_page"] + KNOWN_QUERY_OPTIONS = ["studyoid", "startid", "per_page", "mode", "unicode"] + # Permissible values for mode + ALLOWABLE_MODES = ("default", "all", "enhanced") - def __init__(self, project_name, environment_name, startid=1, per_page=100): + def __init__(self, project_name: str, + environment_name: str, + startid: Optional[int] = 1, + per_page: Optional[int] = 100, + mode: Optional[str] = None, + unicode: Optional[bool] = False): """ :param str project_name: Project Name :param str environment_name: Environment Name :param int startid: Starting Audit :param int per_page: Page Size + :param str mode: extract more Audit Subcategories (allowed values: default, all, enhanced) + :param bool unicode: specify Unicode characters are required in the response. """ self.project_name = project_name self.environment_name = environment_name self.startid = startid self.per_page = per_page + if mode and mode not in self.ALLOWABLE_MODES: + raise ValueError("mode must be one of %s" % ", ".join(self.ALLOWABLE_MODES)) + self.mode = mode + self._unicode = unicode + + @property + def unicode(self) -> str: + return 'true' if self._unicode else None @property def studyoid(self): diff --git a/rwslib/tests/test_odm_adapter.py b/rwslib/tests/test_odm_adapter.py index b83be87..eec25bb 100644 --- a/rwslib/tests/test_odm_adapter.py +++ b/rwslib/tests/test_odm_adapter.py @@ -3,6 +3,8 @@ __author__ = 'glow' import unittest + +import pytest from six.moves.urllib_parse import quote from rwslib.rws_requests.odm_adapter import SignatureDefinitionsRequest, UsersRequest, \ SitesMetadataRequest, VersionFoldersRequest, AuditRecordsRequest @@ -117,5 +119,49 @@ def test_create_audit_records_request(self): self.assertTrue('startid=2569' in t.url_path()) self.assertTrue('per_page=50' in t.url_path()) + +def test_clinical_audit_request_mode_allowed(): + """We can create an AuditRecordsRequest""" + for allowed_mode in ("default", "all", "enhanced"): + t = AuditRecordsRequest(project_name="Mediflex", + environment_name="Dev", + startid=1, + per_page=100, + mode=allowed_mode) + assert 'datasets/ClinicalAuditRecords.odm' in t.url_path() + assert f'mode={allowed_mode}' in t.url_path() + + +def test_clinical_audit_request_mode_not_allowed(): + """We can create an AuditRecordsRequest""" + for not_allowed_mode in ("potato", "pear", "guava"): + with pytest.raises(ValueError): + t = AuditRecordsRequest(project_name="Mediflex", + environment_name="Dev", + startid=1, + per_page=100, + mode=not_allowed_mode) + + +def test_clinical_audit_request_unicode(): + """We can create an AuditRecordsRequest""" + t = AuditRecordsRequest(project_name="Mediflex", + environment_name="Dev", + startid=1, + per_page=100, + unicode=True) + assert 'datasets/ClinicalAuditRecords.odm' in t.url_path() + assert f'unicode=true' in t.url_path() + +def test_clinical_audit_request_unicode_default(): + """We can create an AuditRecordsRequest""" + t = AuditRecordsRequest(project_name="Mediflex", + environment_name="Dev", + startid=1, + per_page=100) + assert 'datasets/ClinicalAuditRecords.odm' in t.url_path() + assert f'unicode' not in t.url_path() + + if __name__ == '__main__': unittest.main() From 3efae2b22ec7b891e7116b5f62516827080d264f Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Wed, 15 Nov 2023 11:47:54 +0000 Subject: [PATCH 04/26] update actions versions (remove deprecation warnings) --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b34ecf6..e62d059 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,8 +20,8 @@ jobs: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] steps: - - uses: "actions/checkout@v2" - - uses: "actions/setup-python@v2" + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: "${{ matrix.python-version }}" # Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow @@ -30,7 +30,7 @@ jobs: # manually if/when you want to upgrade Poetry, or if something goes wrong. This could be # mildly cleaner by using an environment variable, but I don't really care. - name: cache poetry install - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.local key: poetry-1.4.2-0 @@ -53,7 +53,7 @@ jobs: # them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock. - name: cache deps id: cache-deps - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: .venv key: pydeps-${{ hashFiles('**/poetry.lock') }} From 55958653db0a00e79887487a6fe1079b641d8e14 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 09:01:21 +0000 Subject: [PATCH 05/26] Added knowledgehub links --- rwslib/rws_requests/biostats_gateway.py | 3 ++- rwslib/rws_requests/odm_adapter.py | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/rwslib/rws_requests/biostats_gateway.py b/rwslib/rws_requests/biostats_gateway.py index b9d427f..d7ecd65 100644 --- a/rwslib/rws_requests/biostats_gateway.py +++ b/rwslib/rws_requests/biostats_gateway.py @@ -1,7 +1,8 @@ """ Views related to clinical views and their metadata, Biostats Gateway/Adapter -http://rws-webhelp.s3.amazonaws.com/WebHelp_ENG/solutions/01_biostat_adapter.html#biostat-adapter +See the following for more information (from the Knowledge Hub - requires login): +https://learn.medidata.com/en-US/bundle/rave-web-services/page/biostat_adapter.html """ diff --git a/rwslib/rws_requests/odm_adapter.py b/rwslib/rws_requests/odm_adapter.py index e5fb12f..e9404b2 100644 --- a/rwslib/rws_requests/odm_adapter.py +++ b/rwslib/rws_requests/odm_adapter.py @@ -1,7 +1,9 @@ """ Requests related to the ODM Adapter -http://rws-webhelp.s3.amazonaws.com/WebHelp_ENG/solutions/clinical_data_audits/index.html#odm-adapter +See the following for more information (from the Knowledge Hub - requires login): +https://learn.medidata.com/en-US/bundle/rave-web-services/page/odm_operational_data_model_adapter.html + """ from typing import Optional From b0abe626f81caaa9538a305605bce45830fbd751 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 09:18:19 +0000 Subject: [PATCH 06/26] Added knowledgehub links Added note about updated ASCs Added mode --- rwslib/extras/audit_event/README.md | 32 +++++++++++++++++------------ rwslib/extras/audit_event/main.py | 13 ++++++++---- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/rwslib/extras/audit_event/README.md b/rwslib/extras/audit_event/README.md index df14ce5..b30305b 100644 --- a/rwslib/extras/audit_event/README.md +++ b/rwslib/extras/audit_event/README.md @@ -1,7 +1,7 @@ # audit_event audit_event is a simple way to consume the ODMAdapter -[Clinical Audit Records service](http://rws-webhelp.s3.amazonaws.com/WebHelp_ENG/solutions/clinical_data_audits/clinical_audit_records.html#odm-adapter-clinical-audit-records) +[Clinical Audit Records service](https://learn.medidata.com/en-US/bundle/rave-web-services/page/odm_operational_data_model_adapter.html) audit_event takes the approach of converting the ODM dataset provided by the clinical audit record service into a set of events. This is the same approach that SAX parsers take to parsing XML files. @@ -26,7 +26,12 @@ if you want to count the number of subjects created you might write: pass Events raised are named after the audit subcategory for each reported audit in the ODM stream. See a -[full list of event names](http://rws-webhelp.s3.amazonaws.com/WebHelp_ENG/solutions/clinical_data_audits/clinical_audit_records_in_subcategories.html#odm-adapter-clinical-audit-records-in-subcategories) +[full list of event names](https://learn.medidata.com/en-US/bundle/rave-web-services/page/included_audit_subcategories_in_rws.html) + +*NOTE* +* From Rave EDC 2022.3.0 onwards: + * the ODM Adapter Version 2 provides Clinical Audit Record (CAR) extracts for all the Audit Subcategories (ASCs) available for Rave EDC clinical data. + * the ODM Adapter V2 Clinical Audit Records (CAR) service has introduced an optional query string parameter, `mode`, to allow you to extract additional ASCs. The _context_ object passed contains all the data pulled from the audit record. @@ -108,11 +113,11 @@ clinical audits dataset. ODMAdapter is a class that takes a RWSConnection, the name of the study and environment you want to process for events and an instance of your eventer class. -the run() method starts ODMAadpter using the RWSConnection credentials to pull audits from the study, passing them to +the run() method starts ODMAdapter using the RWSConnection credentials to pull audits from the study, passing them to your event capturing class for reporting. - #Define a counting class + # Define a counting class class SubjectCounter(object): def __init__(self): @@ -121,19 +126,19 @@ your event capturing class for reporting. def SubjectCreated(self, context): self.count += 1 - #Create one + # Create one counter = SubjectCounter() - #Make a connection + # Make a connection c = RWSConnection("ravedemo7","myusername","**mypassword**") - #Pass connection and counter to the ODMAdapter along with the study name/environment we want to process + # Pass connection and counter to the ODMAdapter along with the study name/environment we want to process o = ODMAdapter(c, "MEDICILLIN-RD7","DEMO", counter ) - #Run the adapter + # Run the adapter o.run() - #get the count + # get the count print counter.count The ODMAdapter run() method takes a number of optional arguments. By default it will start with audit id 0 and keep @@ -142,14 +147,15 @@ says that there is no more data. The options to run() are: - start_id=0 #Which audit id to start ar (great for daily/hourly incremental pulls from the service) - max_pages=-1 #How many pages of data to pull (-1 means all pages) - per_page=1000 #The size (in audit records) of each request - 1,000 is min, higher takes more memory/time + start_id=0 # Which audit id to start ar (great for daily/hourly incremental pulls from the service) + max_pages=-1 # How many pages of data to pull (-1 means all pages) + per_page=1000 # The size (in audit records) of each request - 1,000 is min, higher takes more memory/time + mode # Allow extraction of additional ASCs ## Working out which id to start on If we planned to run our Subject Counter on a regular basis, we wouldn't want to start from the beginning of the -"audit tape" each time, that would be inefficient. Instead we could change our SubjectCounter class to track the +"audit tape" each time, that would be inefficient. Instead, we could change our SubjectCounter class to track the last id it saw and ask for this value +1 the next time. class SubjectCounter(object): diff --git a/rwslib/extras/audit_event/main.py b/rwslib/extras/audit_event/main.py index 22156bf..0defd6f 100644 --- a/rwslib/extras/audit_event/main.py +++ b/rwslib/extras/audit_event/main.py @@ -1,19 +1,23 @@ # -*- coding: utf-8 -*- __author__ = 'isparks' -from rwslib.rws_requests.odm_adapter import AuditRecordsRequest +import logging +from typing import Optional + from six.moves.urllib.parse import urlparse, parse_qs + from rwslib.extras.audit_event.parser import parse -import logging +from rwslib.rws_requests.odm_adapter import AuditRecordsRequest class ODMAdapter(object): """A self-contained data fetcher and parser using a RWSConnection and an event class provided by the user""" - def __init__(self, rws_connection, study, environment, eventer): + def __init__(self, rws_connection, study, environment, eventer, mode: Optional[str] = None): self.rws_connection = rws_connection self.eventer = eventer self.study = study self.environment = environment + self.mode = mode self.start_id = 0 def get_next_start_id(self): @@ -32,7 +36,8 @@ def run(self, start_id=0, max_pages=-1, per_page=1000, **kwargs): self.start_id = start_id while max_pages == -1 or (page < max_pages): - req = AuditRecordsRequest(self.study, self.environment, startid=self.start_id, per_page=per_page) + req = AuditRecordsRequest(self.study, self.environment, startid=self.start_id, per_page=per_page, + mode=self.mode) try: # Get the ODM data odm = self.rws_connection.send_request(req, **kwargs) From 5eca206bbd8011cedd50fb8a56455608cc3381ac Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 09:30:06 +0000 Subject: [PATCH 07/26] Added knowledgehub links Added note about updated ASCs Added mode --- docs/source/biostats_gateway.rst | 2 +- docs/source/odm_adapter.rst | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/source/biostats_gateway.rst b/docs/source/biostats_gateway.rst index d6f6fac..86e12ba 100644 --- a/docs/source/biostats_gateway.rst +++ b/docs/source/biostats_gateway.rst @@ -10,7 +10,7 @@ Many of the Biostats gateway requests pull data from the Rave Clinical Views. Th Clinical Views are active in Rave. Read more about Biostats Gateway in the -`Rave Web Services documentation `_ +`Rave Web Services documentation `_ .. _cv_metadata_request: diff --git a/docs/source/odm_adapter.rst b/docs/source/odm_adapter.rst index a79ac00..bf7afd5 100644 --- a/docs/source/odm_adapter.rst +++ b/docs/source/odm_adapter.rst @@ -12,7 +12,7 @@ The ODM Adapter module provides Request implementations for the Rave Web Service * Signature Definitions Dataset Read more about ODM Adapter in the -`Rave Web Services documentation `_ +`Rave Web Services documentation `_ .. _oa_auditrecords_request: @@ -40,6 +40,10 @@ Options: +--------------------------------+-----------------------------------------------------------------------------------+ | per_page=100 | How many audits to return per request. Default is 100. | +--------------------------------+-----------------------------------------------------------------------------------+ +| mode=[default,enhanced,all] | Define what AuditSubcategories to return | ++--------------------------------+-----------------------------------------------------------------------------------+ + +* See `this link `_ for more information on the `mode` parameter. Example:: From 4481ce840846b39d5f24feea6641ef838d5ae697 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 09:52:42 +0000 Subject: [PATCH 08/26] move docs to extras --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 4583b98..1a50cf2 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,7 +12,7 @@ build: - asdf global poetry latest - poetry config virtualenvs.create false post_install: - - poetry install --with docs + - poetry install --all-extras # Build documentation in the docs/ directory with Sphinx sphinx: From 57ab2b7876e6f9bd7218d44c99868813741b70f7 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 09:56:49 +0000 Subject: [PATCH 09/26] Added clarification --- docs/source/odm_adapter.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/source/odm_adapter.rst b/docs/source/odm_adapter.rst index bf7afd5..ef0e571 100644 --- a/docs/source/odm_adapter.rst +++ b/docs/source/odm_adapter.rst @@ -42,8 +42,9 @@ Options: +--------------------------------+-----------------------------------------------------------------------------------+ | mode=[default,enhanced,all] | Define what AuditSubcategories to return | +--------------------------------+-----------------------------------------------------------------------------------+ - -* See `this link `_ for more information on the `mode` parameter. +*NOTE* + * The `mode` parameter is only available in Rave EDC 2022.3.0 and later. + * See `this link `_ for more information on the `mode` parameter. Example:: From a80d80b750b55c72784e964419fec2bfdedf2951 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 10:03:44 +0000 Subject: [PATCH 10/26] use new metadata --- docs/source/conf.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 01fb41c..519b3b9 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -18,13 +18,15 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -parentdir = os.path.split(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))[0] -sys.path.insert(0,str(parentdir)) +import importlib.metadata -import pkg_resources -__version__ = pkg_resources.get_distribution('rwslib').version +_DISTRIBUTION_METADATA = importlib.metadata.metadata('rwslib') + +author = _DISTRIBUTION_METADATA['Author'] +project = _DISTRIBUTION_METADATA['Name'] +version = _DISTRIBUTION_METADATA['Version'] +copyright = _DISTRIBUTION_METADATA['Copyright'] -from rwslib import __copyright__ # -- General configuration ----------------------------------------------------- @@ -48,17 +50,11 @@ master_doc = 'index' # General information about the project. -project = u'rwslib' -copyright = __copyright__ # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. - - -# The short X.Y version. -version = __version__ # The full version, including alpha/beta/rc tags. release = version From e59e9ea0b7e5944fc455cc25e8faf46972354dbd Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 10:07:39 +0000 Subject: [PATCH 11/26] remove reference to deprecated MODM extensions table formatting fix --- docs/source/classes_builders.rst | 9 --------- docs/source/odm_adapter.rst | 5 +++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/docs/source/classes_builders.rst b/docs/source/classes_builders.rst index 3658986..ecd8148 100644 --- a/docs/source/classes_builders.rst +++ b/docs/source/classes_builders.rst @@ -21,15 +21,6 @@ Clinical Data Builders provide an API for creating ODM data elements :exclude-members: build -Medidata Extensions to ODM (MODM) Builders -========================================== -MODM Builders provide an API for creating ODM data elements meeting the Medidata Rave specific extensions to the MODM specification - -.. automodule:: rwslib.builders.clinicaldata - :members: - :exclude-members: build - - Administrative Data Builders ============================ Admin Data Builders provide an API for creating ODM AdminData elements diff --git a/docs/source/odm_adapter.rst b/docs/source/odm_adapter.rst index ef0e571..168ce3d 100644 --- a/docs/source/odm_adapter.rst +++ b/docs/source/odm_adapter.rst @@ -42,9 +42,10 @@ Options: +--------------------------------+-----------------------------------------------------------------------------------+ | mode=[default,enhanced,all] | Define what AuditSubcategories to return | +--------------------------------+-----------------------------------------------------------------------------------+ + *NOTE* - * The `mode` parameter is only available in Rave EDC 2022.3.0 and later. - * See `this link `_ for more information on the `mode` parameter. +* The `mode` parameter is only available in Rave EDC 2022.3.0 and later. +* See `this link `_ for more information on the `mode` parameter. Example:: From ca3a999d32b9f6f9b454d3b749bb024f71b2e71d Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 11:08:07 +0000 Subject: [PATCH 12/26] reformat readthedocs added dependency groups cleaned up install deps --- .readthedocs.yaml | 7 ++++--- poetry.lock | 39 ++++++++++++++++++--------------------- pyproject.toml | 11 ++++------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 1a50cf2..55b12c0 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -4,7 +4,8 @@ version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-20.04 - tools: {python: "3.10"} + tools: + python: "3.10" jobs: pre_create_environment: - asdf plugin add poetry @@ -12,9 +13,9 @@ build: - asdf global poetry latest - poetry config virtualenvs.create false post_install: - - poetry install --all-extras + - poetry install --with docs # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/source/conf.py - fail_on_warning: true \ No newline at end of file + fail_on_warning: true diff --git a/poetry.lock b/poetry.lock index 7e2dd0d..885279a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4,7 +4,7 @@ name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, @@ -15,7 +15,7 @@ files = [ name = "babel" version = "2.13.1" description = "Internationalization utilities" -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, @@ -274,7 +274,7 @@ files = [ name = "docutils" version = "0.19" description = "Docutils -- Python Documentation Utilities" -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, @@ -350,7 +350,7 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, @@ -392,7 +392,7 @@ files = [ name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, @@ -516,7 +516,7 @@ source = ["Cython (>=0.29.35)"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, @@ -638,7 +638,7 @@ testing = ["pytest", "pytest-benchmark"] name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, @@ -708,7 +708,7 @@ six = ">=1.5" name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -optional = true +optional = false python-versions = "*" files = [ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, @@ -740,7 +740,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = true +optional = false python-versions = ">=3.8" files = [ {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, @@ -767,7 +767,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -optional = true +optional = false python-versions = "*" files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, @@ -778,7 +778,7 @@ files = [ name = "sphinx" version = "5.3.0" description = "Python documentation generator" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, @@ -813,7 +813,7 @@ test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] name = "sphinxcontrib-applehelp" version = "1.0.2" description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, @@ -828,7 +828,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, @@ -843,7 +843,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, @@ -858,7 +858,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, @@ -872,7 +872,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, @@ -887,7 +887,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, @@ -1032,10 +1032,7 @@ files = [ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] -[extras] -docs = ["Sphinx"] - [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "b20787ebce1c14edd5f0efb51421a73fbd61655ce0664620f9a0b5add5f68cc9" +content-hash = "5615881346bee8800c65e27c9c4a7b4487bdc40b047c40ba56fae40260c244b2" diff --git a/pyproject.toml b/pyproject.toml index 2e9bf51..ca15f38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,10 +31,9 @@ six = "*" click = "*" faker = "*" urllib3 = "*" -Sphinx = { version = "^5.1.1", optional = true } -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] httpretty = "*" mock = "*" coverage = "*" @@ -42,11 +41,9 @@ pytest = "*" tox = "*" tox-poetry = "*" -[tool.poetry.extras] -docs = [ - "Sphinx", -] +[tool.poetry.group.docs.dependencies] +Sphinx = "^5.1.1" [build-system] -requires = ["poetry-core>=1.0.0"] +requires = ["poetry-core>=1.4.0"] build-backend = "poetry.core.masonry.api" From 40a1a659c297a32e3dcf2b9caaabe6aceff15ff0 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 11:36:07 +0000 Subject: [PATCH 13/26] reformat readthedocs added dependency groups cleaned up install deps --- .readthedocs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 55b12c0..80c66fa 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,6 +14,7 @@ build: - poetry config virtualenvs.create false post_install: - poetry install --with docs + - poetry install . # Build documentation in the docs/ directory with Sphinx sphinx: From 270b5d1de270992e456e935b4dea2a185365555c Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:05:24 +0000 Subject: [PATCH 14/26] Added 3.11 added sphinx-pyproject --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index ca15f38..3502b3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,7 @@ classifiers = [ 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', ] packages = [ { include = "rwslib" }, @@ -43,6 +44,7 @@ tox-poetry = "*" [tool.poetry.group.docs.dependencies] Sphinx = "^5.1.1" +sphinx-pyproject = "^0.3.0" [build-system] requires = ["poetry-core>=1.4.0"] From c881f7549e790aca8dc442d848c5ea55e83eb570 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:05:38 +0000 Subject: [PATCH 15/26] added sphinx-pyproject --- poetry.lock | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 885279a..eb7aa45 100644 --- a/poetry.lock +++ b/poetry.lock @@ -281,6 +281,41 @@ files = [ {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] +[[package]] +name = "dom-toml" +version = "0.6.1" +description = "Dom's tools for Tom's Obvious, Minimal Language." +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "dom_toml-0.6.1-py3-none-any.whl", hash = "sha256:ebdd69c571268dfa5a56b5085b5311583d8a8d2dc1811349e796160c9f36d501"}, + {file = "dom_toml-0.6.1.tar.gz", hash = "sha256:a0bfc204ae32c72ed36e526dce56108a3b20741ac3c055207206ce3b2f302868"}, +] + +[package.dependencies] +domdf-python-tools = ">=2.8.0" +toml = ">=0.10.2" + +[[package]] +name = "domdf-python-tools" +version = "3.7.0" +description = "Helpful functions for Python 🐍 🛠️" +optional = false +python-versions = ">=3.6" +files = [ + {file = "domdf_python_tools-3.7.0-py3-none-any.whl", hash = "sha256:7b4d1c3bdb7402b872d43953824bf921ae2e52f893adbe5c0052a21a6efa2fe4"}, + {file = "domdf_python_tools-3.7.0.tar.gz", hash = "sha256:df1af9a91649af0fb2a4e7b3a4b0a0936e4f78389dd7280dd6fd2f53a339ca71"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.9\""} +natsort = ">=7.0.1" +typing-extensions = ">=3.7.4.1" + +[package.extras] +all = ["pytz (>=2019.1)"] +dates = ["pytz (>=2019.1)"] + [[package]] name = "exceptiongroup" version = "1.1.3" @@ -587,6 +622,21 @@ build = ["blurb", "twine", "wheel"] docs = ["sphinx"] test = ["pytest", "pytest-cov"] +[[package]] +name = "natsort" +version = "8.4.0" +description = "Simple yet flexible natural sorting in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c"}, + {file = "natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581"}, +] + +[package.extras] +fast = ["fastnumbers (>=2.0.0)"] +icu = ["PyICU (>=1.0.0)"] + [[package]] name = "packaging" version = "23.2" @@ -809,6 +859,21 @@ docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] +[[package]] +name = "sphinx-pyproject" +version = "0.3.0" +description = "Move some of your Sphinx configuration into pyproject.toml" +optional = false +python-versions = ">=3.6" +files = [ + {file = "sphinx_pyproject-0.3.0-py3-none-any.whl", hash = "sha256:3aca968919f5ecd390f96874c3f64a43c9c7fcfdc2fd4191a781ad9228501b52"}, + {file = "sphinx_pyproject-0.3.0.tar.gz", hash = "sha256:efc4ee9d96f579c4e4ed1ac273868c64565e88c8e37fe6ec2dc59fbcd57684ab"}, +] + +[package.dependencies] +dom-toml = ">=0.3.0" +domdf-python-tools = ">=2.7.0" + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.2" @@ -1035,4 +1100,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "5615881346bee8800c65e27c9c4a7b4487bdc40b047c40ba56fae40260c244b2" +content-hash = "2845a4da507d6fa037d8680dd59597e8094bcbbc1471d58b2c78b6793eb6b017" From 3665a6d514e86d5d87d22528a05418947487780c Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:06:03 +0000 Subject: [PATCH 16/26] move project identification into pyproject --- rwslib/__init__.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/rwslib/__init__.py b/rwslib/__init__.py index 2bdb30a..34045f8 100644 --- a/rwslib/__init__.py +++ b/rwslib/__init__.py @@ -1,13 +1,3 @@ -# -*- coding: utf-8 -*- - -__title__ = "rwslib" -__author__ = "Ian Sparks (isparks@trialgrid.com)" -__maintainer__ = "Geoff Low (glow@mdsol.com)" -__version__ = "1.2.9" -__license__ = "MIT" -__copyright__ = "Copyright 2021 Medidata Solutions Inc" - - import requests from .rws_requests import RWSRequest, make_url From c26244f399ab07e72c62911bd1f2160560852999 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:06:19 +0000 Subject: [PATCH 17/26] fixed workaround --- .readthedocs.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 80c66fa..55b12c0 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,7 +14,6 @@ build: - poetry config virtualenvs.create false post_install: - poetry install --with docs - - poetry install . # Build documentation in the docs/ directory with Sphinx sphinx: From ac3de782f4ac3783dc7bdcbdeae2036e7fa87b9a Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:06:48 +0000 Subject: [PATCH 18/26] switch to sphinx-pyproject --- docs/source/conf.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 519b3b9..34a4e9c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -11,21 +11,13 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys -import os - # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -import importlib.metadata - -_DISTRIBUTION_METADATA = importlib.metadata.metadata('rwslib') +from sphinx_pyproject import SphinxConfig -author = _DISTRIBUTION_METADATA['Author'] -project = _DISTRIBUTION_METADATA['Name'] -version = _DISTRIBUTION_METADATA['Version'] -copyright = _DISTRIBUTION_METADATA['Copyright'] +config = SphinxConfig("../../pyproject.toml", globalns=globals(), style="poetry") # -- General configuration ----------------------------------------------------- From 2fa25c3f6bd9f13cdcc912d96937233149f87417 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:30:12 +0000 Subject: [PATCH 19/26] correct ordering of jobs --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 55b12c0..7399cb2 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,7 +12,7 @@ build: - asdf install poetry latest - asdf global poetry latest - poetry config virtualenvs.create false - post_install: + pre_build: - poetry install --with docs # Build documentation in the docs/ directory with Sphinx From ef2a93f31c80b0aaf479bbeb9e319c852fc5db43 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:33:47 +0000 Subject: [PATCH 20/26] try and make sure environment is properly active --- .readthedocs.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 7399cb2..db057b6 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,10 +12,12 @@ build: - asdf install poetry latest - asdf global poetry latest - poetry config virtualenvs.create false - pre_build: + post_install: - poetry install --with docs + pre_build: + - poetry shell -# Build documentation in the docs/ directory with Sphinx +# Build documentation using Sphinx sphinx: configuration: docs/source/conf.py fail_on_warning: true From a037aad5df03e43a07b1d5ed2f3e13cbe3c1dc47 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:55:56 +0000 Subject: [PATCH 21/26] ensure sphinx is built within poetry --- docs/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 4464c9e..b3bc2e0 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -3,14 +3,14 @@ # You can set these variables from the command line. SPHINXOPTS = -SPHINXBUILD = sphinx-build +SPHINXBUILD = poetry run sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif +#ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +#$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +#endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 From 4a27065b4582ca6ff7a41cf350edc462b0bef089 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 12:57:13 +0000 Subject: [PATCH 22/26] fix issue --- .readthedocs.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index db057b6..7b467eb 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,8 +14,6 @@ build: - poetry config virtualenvs.create false post_install: - poetry install --with docs - pre_build: - - poetry shell # Build documentation using Sphinx sphinx: From 4d7287098983909a7b1405ab139a8d93acf9d501 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 13:12:52 +0000 Subject: [PATCH 23/26] remove asdf from build --- .readthedocs.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 7b467eb..b642831 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,14 +3,12 @@ version: 2 # Set the version of Python and other tools you might need build: - os: ubuntu-20.04 + os: ubuntu-22.04 tools: python: "3.10" jobs: pre_create_environment: - - asdf plugin add poetry - - asdf install poetry latest - - asdf global poetry latest + - pip install poetry - poetry config virtualenvs.create false post_install: - poetry install --with docs From 44d908db98ae84777c405b8b544d10ff441bff8e Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Thu, 16 Nov 2023 15:37:49 +0000 Subject: [PATCH 24/26] try again --- .readthedocs.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b642831..decbfac 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,8 +12,10 @@ build: - poetry config virtualenvs.create false post_install: - poetry install --with docs + commands: + - python -m sphinx -T -E -W --keep-going -b html -d _build/doctrees -D language=en docs/source $READTHEDOCS_OUTPUT/html -# Build documentation using Sphinx + # Build documentation using Sphinx sphinx: configuration: docs/source/conf.py fail_on_warning: true From c1376db7fcce713f6cb39eb44a8b51ab546557a3 Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Fri, 17 Nov 2023 13:26:33 +0000 Subject: [PATCH 25/26] switch the pre -> post --- .readthedocs.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index decbfac..c842c6e 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,15 +7,14 @@ build: tools: python: "3.10" jobs: - pre_create_environment: + post_create_environment: - pip install poetry - poetry config virtualenvs.create false post_install: - poetry install --with docs - commands: - - python -m sphinx -T -E -W --keep-going -b html -d _build/doctrees -D language=en docs/source $READTHEDOCS_OUTPUT/html - # Build documentation using Sphinx + +# Build documentation using Sphinx sphinx: configuration: docs/source/conf.py fail_on_warning: true From 630fc749b095d0f35108a63b602b1d8042a2444e Mon Sep 17 00:00:00 2001 From: Geoff Low Date: Fri, 17 Nov 2023 13:33:41 +0000 Subject: [PATCH 26/26] unpin poetry --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3502b3e..ced63d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,5 +47,5 @@ Sphinx = "^5.1.1" sphinx-pyproject = "^0.3.0" [build-system] -requires = ["poetry-core>=1.4.0"] +requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"