diff --git a/CHANGELOG.md b/CHANGELOG.md
index ae1f18d..d695c67 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -34,6 +34,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Script search class model can output into json format and support field information
- Improve Docker minimal installation docs in README for Ubuntu, test with Debian (https://github.com/ERPLibre/ERPLibre/issues/73)
- Statistic script to show evolution module into ERPLibre support Odoo 17 and Odoo 18
+- Latest version wkhtmltopdf 0.12.6.1-3
### Fixed
@@ -41,6 +42,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Improve python code writer efficience
- Config generator supporting space into ERPLibre directory
- Script to update Poetry support @ URL
+- OSX and recent Ubuntu installation
## [1.5.0] - 2023-07-07
diff --git a/README.md b/README.md
index 0a7900d..693db7b 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
ERPLibre is a CRM/ERP platform including automated installation, maintenance, and development of open source modules of
the Odoo community version. It is a "soft-fork" of the Odoo Community Edition (OCE), meaning it aims at contributing back
-upstream.
+upstream.
It is based on a set of production-ready modules, supported by the Odoo Community Association (OCA) and an
ecosystem of specialized companies. This solution ensures digital sovereignty in a local environment while integrating
pre-trained Generative Transformers (GPT), bringing an additional dimension to data management and automation.
@@ -17,7 +17,7 @@ Select a guide to install your environment.
This has been tested in Debian 12 and Ubuntu 24.04 LTS.
-**Note** : This is meant for a test environment, on a local network or similar environment not directly exposed to the Internet.
+**Note** : This is meant for a test environment, on a local network or similar environment not directly exposed to the Internet.
1. Make sure Docker and nginx web server are installed:
```sudo apt install docker docker-compose nginx```
@@ -59,6 +59,7 @@ cd ERPLibre
Support Ubuntu 20.04, 22.04, 24.04 and OSX. The installation duration is more than 30 minutes.
```bash
+make install_os
make install_odoo_16
```
diff --git a/doc/DEVELOPMENT.md b/doc/DEVELOPMENT.md
index 9dde2d3..5d8c700 100644
--- a/doc/DEVELOPMENT.md
+++ b/doc/DEVELOPMENT.md
@@ -286,3 +286,10 @@ Use [prettier](https://github.com/prettier/prettier)
```bash
./script/maintenance/prettier.sh --tab-width 4 ./addons/TechnoLibre_odoo-code-generator
```
+
+# Pre-commit
+
+You can install pre-commit to auto-format and check lint with OCA configuration. This
+will run before commit with git.
+
+Check https://github.com/OCA/maintainer-tools/wiki/Install-pre-commit
diff --git a/manifest/default.dev.odoo14.0.xml b/manifest/default.dev.odoo14.0.xml
index 5f4b4fd..d40250f 100644
--- a/manifest/default.dev.odoo14.0.xml
+++ b/manifest/default.dev.odoo14.0.xml
@@ -117,7 +117,7 @@
-
+
@@ -133,6 +133,7 @@
+
diff --git a/manifest/default.dev.odoo16.0.xml b/manifest/default.dev.odoo16.0.xml
index 0c133c4..33b37d2 100644
--- a/manifest/default.dev.odoo16.0.xml
+++ b/manifest/default.dev.odoo16.0.xml
@@ -2,7 +2,7 @@
-
+
@@ -82,6 +82,7 @@
+
@@ -114,7 +115,7 @@
-
+
diff --git a/requirement/poetry.odoo16.0_python3.10.14.lock b/requirement/poetry.odoo16.0_python3.10.14.lock
index f14b155..601ae21 100644
--- a/requirement/poetry.odoo16.0_python3.10.14.lock
+++ b/requirement/poetry.odoo16.0_python3.10.14.lock
@@ -276,12 +276,12 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"]
[[package]]
name = "avalara"
-version = "24.10.0"
+version = "24.11.2"
description = "Avalara Tax Python SDK."
optional = false
python-versions = "*"
files = [
- {file = "avalara-24.10.0.tar.gz", hash = "sha256:7090faf923d5b3fee56e917182c96c96abeb6afe8805dc99257e849ffebdee1f"},
+ {file = "avalara-24.11.2.tar.gz", hash = "sha256:509e7ae38fd0fdfaa721b16cee08de1bf3a32b126d2cf18a3e7a00d708439255"},
]
[package.dependencies]
@@ -768,6 +768,17 @@ files = [
[package.dependencies]
pycparser = "*"
+[[package]]
+name = "cfgv"
+version = "3.4.0"
+description = "Validate configuration and produce human readable error messages."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"},
+ {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"},
+]
+
[[package]]
name = "chardet"
version = "4.0.0"
@@ -950,29 +961,30 @@ s3 = ["boto3"]
[[package]]
name = "cmake"
-version = "3.30.5"
+version = "3.31.1"
description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software"
optional = false
python-versions = ">=3.7"
files = [
- {file = "cmake-3.30.5-py3-none-macosx_10_10_universal2.whl", hash = "sha256:c518d174cde8c5bda3dc9c906af2e1ad54448019d9a9061c5d85331c67bbaa60"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:085728e950e6096014c99fc46361fbaa508863157bafe0ecf6dc232c16098456"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:437e9f885cf576f47b45974a92239d7c86da91e99e62ecf1aa8be454703dd1a6"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3a662e22dba1288b678daa5544a62a05da1992e0b654e799217e22bc7e5194a"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dbedacaba2daa40726569590762d775246325b609753d7af888dc7eda49c7bd"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a5c113428aa9f3b4b2ce2e6dc1b932cfe3991be04d215c5ab51c078eae3e674"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9edd4065dbc67a6861255f05135249a3f042f1e09a73c608f84a1a0c6a60a266"},
- {file = "cmake-3.30.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db049e551e2f0562b3b225ac760888ee38b8ade62d74213f3611420e6b22f36d"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:f9b351ad3b0bacd04fe73a35b71bf603416b0441d295c13881e56eba6ec01b4b"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_1_i686.whl", hash = "sha256:c37f41ac7e7a806c91d16cd3efcd696635634bb63e0d9007582373f5a81c4fa1"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:e4fd409b3455a01fe80860503be4c1b34e2e12cc5433921c7aed1102a3870322"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:4a1ded0183a75bd71ee275ef976e8eb97b4a5f4b58e09c90c1734c509acb7d5a"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:e2fd43ab522695e0ebbb6dfc6a1466daeb66c57f7f4aade02fe8c5a61acc2828"},
- {file = "cmake-3.30.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6161031b0c89f3f60b82cd5e1dd8cdef47b0a057f9a5349e18bf1507ac4b2402"},
- {file = "cmake-3.30.5-py3-none-win32.whl", hash = "sha256:3ee3ab9b4d3fcdb9360104ef2175a47e145693b365983dcd8ccb5d58b1d0ab7f"},
- {file = "cmake-3.30.5-py3-none-win_amd64.whl", hash = "sha256:dddb1c82e69c8cf79a314f57c2cbb1b3c152758fa0997a5f5ddf8fc8207c994a"},
- {file = "cmake-3.30.5-py3-none-win_arm64.whl", hash = "sha256:ef454176664c941da91197feb91b68cab91ef0354ab0c4d7bfb70e069cb700f1"},
- {file = "cmake-3.30.5.tar.gz", hash = "sha256:2815a2b4dde61a78648a2ff4318d2d303eb41600c4bdb32fcb237b4746444ed2"},
+ {file = "cmake-3.31.1-py3-none-macosx_10_10_universal2.whl", hash = "sha256:b105b171b830de26422a1a2d3ed54540e90438b87bbd07e4d1c53b95766b9a77"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:167753a1c8c708a9462eb4b2dba9eb4a51a0dbb88a52fe4057b2f0d58cef33df"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a26673cdb1b6d3e5bdb799becd7e92bb64515f95e4aa70a137a2a5030c2e940"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5d993fb9093061ffc3c4fd73297d7e4821e93be26c9fd6adf8b2b4116370084"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c76ee41bf4a63e2d3a0ba96f8f1d226bde0d01bb7d5b8638c30a18de2518f74"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb8c23ab0069c40676c4dd2e2ea39de6a18aae6e155dde6073427e11f92b2f3"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:412ef66b056628d7fe40fc8ceff3d5e2c1123782f29f5dfcbd4f7587a5d03df0"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5f390336617fe476d36415c33e40de61c7381cd3b3657450f03d2c2f99e99a5"},
+ {file = "cmake-3.31.1-py3-none-manylinux_2_31_armv7l.whl", hash = "sha256:c38a478d87280aaaf133f69dea507eefd6503584eda79b641c767d80add1e4fe"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:8584be174494458cbd1c2fef3da6f721b975f70d181a898f0d028a807ca4ee1c"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_1_i686.whl", hash = "sha256:b67ba0f3e3e4391f0dc1d8f734c57a1532cf8e24605a8470bb90b4bf88789605"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:ed9fb18f8a7ad7ca483a34c8d4d400d7465f602626fdb478fc086f488297ec8d"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:995d72c96feb64790bfc13a54bde5bd783685441c1532e1da7402a3f4705d0d9"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:585ef94540a99a7acbc7001721d5d897df2e80a549a05b17e660e8a813fc9cc1"},
+ {file = "cmake-3.31.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7882f58fd4e7d7d87c9afa43e3e2b68f0621d5ad77bef76d9d5de99bb3d5f0d3"},
+ {file = "cmake-3.31.1-py3-none-win32.whl", hash = "sha256:1b1e1f610ff11f7674dae4b048e92481ed3bb6f4d346fbd015ab548ef542c2be"},
+ {file = "cmake-3.31.1-py3-none-win_amd64.whl", hash = "sha256:18e542c6e21b6f8d4ae1b219e894b00789ec78b4da800e3a60920dee4e33d575"},
+ {file = "cmake-3.31.1-py3-none-win_arm64.whl", hash = "sha256:9cee057f067c14bdee78ce3f56b9396051f744d20a409f0945052582f36020b5"},
+ {file = "cmake-3.31.1.tar.gz", hash = "sha256:45e09ef6fc5a0d3d4cac11bfee43ba3f9925f301660630d3d1e5457fbe12ecdf"},
]
[package.extras]
@@ -1407,6 +1419,17 @@ wrapt = ">=1.10,<2"
[package.extras]
dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"]
+[[package]]
+name = "distlib"
+version = "0.3.9"
+description = "Distribution utilities"
+optional = false
+python-versions = "*"
+files = [
+ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"},
+ {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"},
+]
+
[[package]]
name = "distro"
version = "1.9.0"
@@ -1629,13 +1652,13 @@ test = ["pytest (>=6)"]
[[package]]
name = "extract-msg"
-version = "0.51.1"
+version = "0.52.0"
description = "Extracts emails and attachments saved in Microsoft Outlook's .msg files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "extract_msg-0.51.1-py3-none-any.whl", hash = "sha256:b9da97b04901b4e51074d220e6cb6e87041a9b454b60bebf11e7ab4951a3a2ef"},
- {file = "extract_msg-0.51.1.tar.gz", hash = "sha256:7082a0b79a7f98b19441dbd833c6a6947513381490cc73e9e07b53c30c8d1d8d"},
+ {file = "extract_msg-0.52.0-py3-none-any.whl", hash = "sha256:93c919846bac2a6034cf7d0dcf8e825d640b6ddb8539e42f7f1817869cd1eeaf"},
+ {file = "extract_msg-0.52.0.tar.gz", hash = "sha256:c21c548c43e1f0cdce5616102d33e590e2b46fbdc9d04f21af4eb62dcbf296dd"},
]
[package.dependencies]
@@ -1971,13 +1994,13 @@ files = [
[[package]]
name = "fsspec"
-version = "2024.9.0"
+version = "2024.10.0"
description = "File-system specification"
optional = false
python-versions = ">=3.8"
files = [
- {file = "fsspec-2024.9.0-py3-none-any.whl", hash = "sha256:a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b"},
- {file = "fsspec-2024.9.0.tar.gz", hash = "sha256:4b0afb90c2f21832df142f292649035d80b421f60a9e1c027802e5a0da2b04e8"},
+ {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"},
+ {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"},
]
[package.extras]
@@ -2314,12 +2337,12 @@ docs = ["Sphinx"]
[[package]]
name = "gst"
-version = "0.1.0"
+version = "0.1.2"
description = "Git status tool"
optional = false
python-versions = "*"
files = [
- {file = "gst-0.1.0.tar.gz", hash = "sha256:47fd137b187196f99c33b9acb664d2016916c0a9ea87c17f07a4cac206aeccb8"},
+ {file = "gst-0.1.2-py3-none-any.whl", hash = "sha256:822fba61f3b86264be3bfdec135ee0ee960acb7371c57e0b964d8cbfab491c38"},
]
[[package]]
@@ -2480,6 +2503,20 @@ files = [
{file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"},
]
+[[package]]
+name = "identify"
+version = "2.6.2"
+description = "File identification library for Python"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "identify-2.6.2-py2.py3-none-any.whl", hash = "sha256:c097384259f49e372f4ea00a19719d95ae27dd5ff0fd77ad630aa891306b82f3"},
+ {file = "identify-2.6.2.tar.gz", hash = "sha256:fab5c716c24d7a789775228823797296a2994b075fb6080ac83a102772a98cbd"},
+]
+
+[package.extras]
+license = ["ukkonen"]
+
[[package]]
name = "idna"
version = "2.10"
@@ -2999,13 +3036,13 @@ source = ["Cython (>=0.29.7)"]
[[package]]
name = "lxml-html-clean"
-version = "0.3.1"
+version = "0.4.1"
description = "HTML cleaner from lxml project"
optional = false
python-versions = "*"
files = [
- {file = "lxml_html_clean-0.3.1-py3-none-any.whl", hash = "sha256:081e6378c68ebb4113940ed82a3534c99e24ba1ca5ad5ce8868c7c4d264618f1"},
- {file = "lxml_html_clean-0.3.1.tar.gz", hash = "sha256:d9f7d8ae36092f4ed5079cfbf95ff06d3c6fd04f4a861422ce251ece72d3c4b5"},
+ {file = "lxml_html_clean-0.4.1-py3-none-any.whl", hash = "sha256:b704f2757e61d793b1c08bf5ad69e4c0b68d6696f4c3c1429982caf90050bcaf"},
+ {file = "lxml_html_clean-0.4.1.tar.gz", hash = "sha256:40c838bbcf1fc72ba4ce811fbb3135913017b27820d7c16e8bc412ae1d8bc00b"},
]
[package.dependencies]
@@ -3013,13 +3050,13 @@ lxml = "*"
[[package]]
name = "mako"
-version = "1.3.5"
+version = "1.3.6"
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
optional = false
python-versions = ">=3.8"
files = [
- {file = "Mako-1.3.5-py3-none-any.whl", hash = "sha256:260f1dbc3a519453a9c856dedfe4beb4e50bd5a26d96386cb6c80856556bb91a"},
- {file = "Mako-1.3.5.tar.gz", hash = "sha256:48dbc20568c1d276a2698b36d968fa76161bf127194907ea6fc594fa81f943bc"},
+ {file = "Mako-1.3.6-py3-none-any.whl", hash = "sha256:a91198468092a2f1a0de86ca92690fb0cfc43ca90ee17e15d93662b4c04b241a"},
+ {file = "mako-1.3.6.tar.gz", hash = "sha256:9ec3a1583713479fae654f83ed9fa8c9a4c16b7bb0daba0e6bbebff50c0d983d"},
]
[package.dependencies]
@@ -3640,19 +3677,19 @@ files = [
[[package]]
name = "mysqlclient"
-version = "2.2.5"
+version = "2.2.6"
description = "Python interface to MySQL"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mysqlclient-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78438314199504c64f69e1e3521f2c9b419f19fcd85158b44c997b64409a6af"},
- {file = "mysqlclient-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b54511648c1455b43ac28f8b4c1f732c5b0c343e87f7a3bd6fc9f9fe0f91934e"},
- {file = "mysqlclient-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:e871ede4261d0d42b8ed20a2459db411c7deafedd8e77b7e4ba760be4a6a752b"},
- {file = "mysqlclient-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:8012c633aab8c91ea8172ac479807135b171501b9cad1a7cd9b58c4dc8dcdab5"},
- {file = "mysqlclient-2.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:3f9625bea2b9bcde0ace76b32708762d44597491092c819fd1bff5b4e27f709b"},
- {file = "mysqlclient-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1d2e2ca0fe8405d8d6464edd01bf059951279e4bc27284d39341bd4737b2bc64"},
- {file = "mysqlclient-2.2.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aee14f1872114865679fcb09aac3772de4595fa7dcf2f83a4c7afee15e508854"},
- {file = "mysqlclient-2.2.5.tar.gz", hash = "sha256:add8643c32f738014d252d2bdebb478623b04802e8396d5903905db36474d3ff"},
+ {file = "mysqlclient-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:e94a92858203d97fd584bdb6d7ee8c56f2590db8d77fd44215c0dcf5e739bc37"},
+ {file = "mysqlclient-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:43c5b30be0675080b9c815f457d73397f0442173e7be83d089b126835e2617ae"},
+ {file = "mysqlclient-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:e940b41d85dfd7b190fa47d52f525f878cfa203d4653bf6a35b271b3c3be125b"},
+ {file = "mysqlclient-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:794857bce4f9a1903a99786dd29ad7887f45a870b3d11585b8c51c4a753c4174"},
+ {file = "mysqlclient-2.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:b0a5cddf1d3488b254605041070086cac743401d876a659a72d706a0d89c8ebb"},
+ {file = "mysqlclient-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f3efb849d6f7ef4b9788a0eda2e896b975e0ebf1d6bf3dcabea63fd698e5b0b5"},
+ {file = "mysqlclient-2.2.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3da70a07753ba6be881f7d75e795e254f6a0c12795778034acc69769b0649d37"},
+ {file = "mysqlclient-2.2.6.tar.gz", hash = "sha256:c0b46d9b78b461dbb62482089ca8040fa916595b1b30f831ebbd1b0a82b43d53"},
]
[[package]]
@@ -3727,6 +3764,17 @@ six = "*"
[package.extras]
tests = ["pytest (>=5.2)"]
+[[package]]
+name = "nodeenv"
+version = "1.9.1"
+description = "Node.js virtual environment builder"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
+ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
+]
+
[[package]]
name = "num2words"
version = "0.5.13"
@@ -3811,19 +3859,23 @@ numpy = ">=1.15"
[[package]]
name = "numpy-stl"
-version = "3.1.2"
+version = "3.2.0"
description = "Library to make reading, writing and modifying both binary and ascii STL files easy."
optional = false
-python-versions = ">3.6.0"
+python-versions = ">3.9.0"
files = [
- {file = "numpy_stl-3.1.2-py3-none-any.whl", hash = "sha256:a55288340c837378bf44753a1c595c6823312995acda97f27ed04db4ff1d25f3"},
- {file = "numpy_stl-3.1.2.tar.gz", hash = "sha256:72b46950dfa3642df1c7b873cfa78a548533724b907478c567db42fdf57ee3d2"},
+ {file = "numpy_stl-3.2.0-py3-none-any.whl", hash = "sha256:697c81b107231362460aaedf4647e81ba54f54f59c896772fea7904c9c439da5"},
+ {file = "numpy_stl-3.2.0.tar.gz", hash = "sha256:5a20c3f79cddaa0abc6a4b99f5486aceed4f88152f29b19a57acc844e183fd4d"},
]
[package.dependencies]
numpy = "*"
python-utils = ">=3.4.5"
+[package.extras]
+docs = ["mock", "python-utils", "sphinx"]
+tests = ["Sphinx", "cov-core", "coverage", "cython", "docutils", "execnet", "flake8", "numpy", "pep8", "py", "pyflakes", "pytest", "pytest-cache", "pytest-cov", "python-utils", "wheel"]
+
[[package]]
name = "oauth2"
version = "1.9.0.post1"
@@ -3939,13 +3991,13 @@ full = ["XLMMacroDeobfuscator"]
[[package]]
name = "openai"
-version = "1.52.0"
+version = "1.55.2"
description = "The official Python library for the openai API"
optional = false
-python-versions = ">=3.7.1"
+python-versions = ">=3.8"
files = [
- {file = "openai-1.52.0-py3-none-any.whl", hash = "sha256:0c249f20920183b0a2ca4f7dba7b0452df3ecd0fa7985eb1d91ad884bc3ced9c"},
- {file = "openai-1.52.0.tar.gz", hash = "sha256:95c65a5f77559641ab8f3e4c3a050804f7b51d278870e2ec1f7444080bfe565a"},
+ {file = "openai-1.55.2-py3-none-any.whl", hash = "sha256:3027c7fa4a33ed759f4a3d076093fcfa1c55658660c889bec33f651e2dc77922"},
+ {file = "openai-1.55.2.tar.gz", hash = "sha256:5cc0b1162b65dcdf670b4b41448f18dd470d2724ca04821ab1e86b6b4e88650b"},
]
[package.dependencies]
@@ -4001,7 +4053,7 @@ et-xmlfile = "*"
[[package]]
name = "openupgradelib"
-version = "3.7.2.dev6+g8b0c22b"
+version = "3.7.2.dev12+g8d04b10"
description = "A library with support functions to be called from Odoo migration scripts."
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@@ -4016,7 +4068,7 @@ lxml = "*"
type = "git"
url = "https://github.com/OCA/openupgradelib"
reference = "master"
-resolved_reference = "8b0c22b7ca6c23aeb692d6116276c9d6a7e49aae"
+resolved_reference = "8d04b103b70d6927f805b94ef26ecf53b26e51ed"
[[package]]
name = "os-service-types"
@@ -4298,15 +4350,28 @@ files = [
[package.dependencies]
pillow = "*"
+[[package]]
+name = "pdfminer"
+version = "20191125"
+description = "PDF parser and analyzer"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pdfminer-20191125.tar.gz", hash = "sha256:9e700bc731300ed5c8936343c1dd4529638184198e54e91dd2b59b64a755dc01"},
+]
+
+[package.dependencies]
+pycryptodome = "*"
+
[[package]]
name = "phonenumbers"
-version = "8.13.47"
+version = "8.13.50"
description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers."
optional = false
python-versions = "*"
files = [
- {file = "phonenumbers-8.13.47-py2.py3-none-any.whl", hash = "sha256:5d3c0142ef7055ca5551884352e3b6b93bfe002a0bc95b8eaba39b0e2184541b"},
- {file = "phonenumbers-8.13.47.tar.gz", hash = "sha256:53c5e7c6d431cafe4efdd44956078404ae9bc8b0eacc47be3105d3ccc88aaffa"},
+ {file = "phonenumbers-8.13.50-py2.py3-none-any.whl", hash = "sha256:bb95dbc0d9979c51f7ad94bcd780784938958861fbb4b75a2fe39ccd3d58954a"},
+ {file = "phonenumbers-8.13.50.tar.gz", hash = "sha256:e05ac6fb7b98c6d719a87ea895b9fc153673b4a51f455ec9afaf557ef4629da6"},
]
[[package]]
@@ -4424,6 +4489,24 @@ docs = ["sphinx (>=1.7.1)"]
redis = ["redis"]
tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "pytest-timeout (>=2.1.0)", "redis", "sphinx (>=6.0.0)", "types-redis"]
+[[package]]
+name = "pre-commit"
+version = "4.0.1"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"},
+ {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"},
+]
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+virtualenv = ">=20.10.0"
+
[[package]]
name = "premailer"
version = "3.10.0"
@@ -4768,18 +4851,18 @@ files = [
[[package]]
name = "pydantic"
-version = "2.8.2"
+version = "2.9.2"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"},
- {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"},
+ {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"},
+ {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"},
]
[package.dependencies]
-annotated-types = ">=0.4.0"
-pydantic-core = "2.20.1"
+annotated-types = ">=0.6.0"
+pydantic-core = "2.23.4"
typing-extensions = [
{version = ">=4.12.2", markers = "python_version >= \"3.13\""},
{version = ">=4.6.1", markers = "python_version < \"3.13\""},
@@ -4787,103 +4870,104 @@ typing-extensions = [
[package.extras]
email = ["email-validator (>=2.0.0)"]
+timezone = ["tzdata"]
[[package]]
name = "pydantic-core"
-version = "2.20.1"
+version = "2.23.4"
description = "Core functionality for Pydantic validation and serialization"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"},
- {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"},
- {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"},
- {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"},
- {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"},
- {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"},
- {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"},
- {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"},
- {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"},
- {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"},
- {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"},
- {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"},
- {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"},
- {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"},
- {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"},
- {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"},
- {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"},
- {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"},
- {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"},
- {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"},
- {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"},
- {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"},
- {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"},
- {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"},
- {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"},
- {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"},
- {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"},
- {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"},
- {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"},
- {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"},
- {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"},
- {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"},
- {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"},
- {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"},
- {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"},
- {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"},
- {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"},
- {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"},
- {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"},
- {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"},
- {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"},
- {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"},
- {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"},
- {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"},
- {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"},
+ {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"},
+ {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"},
+ {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"},
+ {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"},
+ {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"},
+ {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"},
+ {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"},
+ {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"},
+ {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"},
+ {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"},
+ {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"},
+ {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"},
+ {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"},
+ {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"},
+ {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"},
+ {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"},
+ {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"},
+ {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"},
+ {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"},
+ {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"},
+ {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"},
]
[package.dependencies]
@@ -4891,13 +4975,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
[[package]]
name = "pydifact"
-version = "0.1.7"
+version = "0.1.8"
description = "Pydifact is a library that aims to provide complete support for reading and writing EDIFACT files. These file format, despite being old, is still a standard in many business cases. In Austria e.g., it is used for the transfer of medical reports between medical doctors."
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.8"
files = [
- {file = "pydifact-0.1.7-py3-none-any.whl", hash = "sha256:3a1bc4577b3e3abc9bb1a2248895d6f68ddbc61c7bfe2dfb403f5182f344cad6"},
- {file = "pydifact-0.1.7.tar.gz", hash = "sha256:a51f357f3eb62c7ff7200d7bba0be06c8d837bc45becd30019feae1079e1392f"},
+ {file = "pydifact-0.1.8-py3-none-any.whl", hash = "sha256:7f0f25ea8c879f2bce5080dcd6e517f1c0224a2ac1c400a045d5f7e1fcc5a21e"},
+ {file = "pydifact-0.1.8.tar.gz", hash = "sha256:5853ce94e6e3983e7b330d7f0860b81be5c2b140b6ae1590d751b0cba5d78cc5"},
]
[package.extras]
@@ -4939,13 +5023,13 @@ test = ["pytest"]
[[package]]
name = "pygithub"
-version = "2.4.0"
+version = "2.5.0"
description = "Use the full Github API v3"
optional = false
python-versions = ">=3.8"
files = [
- {file = "PyGithub-2.4.0-py3-none-any.whl", hash = "sha256:81935aa4bdc939fba98fee1cb47422c09157c56a27966476ff92775602b9ee24"},
- {file = "pygithub-2.4.0.tar.gz", hash = "sha256:6601e22627e87bac192f1e2e39c6e6f69a43152cfb8f307cee575879320b3051"},
+ {file = "PyGithub-2.5.0-py3-none-any.whl", hash = "sha256:b0b635999a658ab8e08720bdd3318893ff20e2275f6446fcf35bf3f44f2c0fd2"},
+ {file = "pygithub-2.5.0.tar.gz", hash = "sha256:e1613ac508a9be710920d26eb18b1905ebd9926aa49398e88151c1b526aad3cf"},
]
[package.dependencies]
@@ -5001,13 +5085,13 @@ setuptools = "*"
[[package]]
name = "pyjwt"
-version = "2.9.0"
+version = "2.10.1"
description = "JSON Web Token implementation in Python"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"},
- {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"},
+ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"},
+ {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"},
]
[package.dependencies]
@@ -5473,13 +5557,13 @@ test = ["coverage (>=4.0,!=4.4)", "hacking (>=3.2.0,<3.3.0)", "keystoneauth1 (>=
[[package]]
name = "python-telegram-bot"
-version = "21.6"
+version = "21.7"
description = "We have made you a wrapper you can't refuse"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "python_telegram_bot-21.6-py3-none-any.whl", hash = "sha256:f2d6431bf154a53f40cdfc6c1d492a66102c0e4938709f6d8202bcd951c840cb"},
- {file = "python_telegram_bot-21.6.tar.gz", hash = "sha256:8b2b37836c3ff9c2924e990474a1c4731df21b1668acebff5099f475666426c6"},
+ {file = "python_telegram_bot-21.7-py3-none-any.whl", hash = "sha256:aff1d7245f1b0d4d12d41c9acff74e86d7100713c2204cd02ff17f8d80d18846"},
+ {file = "python_telegram_bot-21.7.tar.gz", hash = "sha256:bc8537b77ae02531fc2ad440caafc023fd13f13cf19e592dfa1a9ff84988a012"},
]
[package.dependencies]
@@ -6039,13 +6123,13 @@ pydantic = ["pydantic (>=2.0)"]
[[package]]
name = "selenium"
-version = "4.25.0"
+version = "4.27.1"
description = "Official Python bindings for Selenium WebDriver"
optional = false
python-versions = ">=3.8"
files = [
- {file = "selenium-4.25.0-py3-none-any.whl", hash = "sha256:3798d2d12b4a570bc5790163ba57fef10b2afee958bf1d80f2a3cf07c4141f33"},
- {file = "selenium-4.25.0.tar.gz", hash = "sha256:95d08d3b82fb353f3c474895154516604c7f0e6a9a565ae6498ef36c9bac6921"},
+ {file = "selenium-4.27.1-py3-none-any.whl", hash = "sha256:b89b1f62b5cfe8025868556fe82360d6b649d464f75d2655cb966c8f8447ea18"},
+ {file = "selenium-4.27.1.tar.gz", hash = "sha256:5296c425a75ff1b44d0d5199042b36a6d1ef76c04fb775b97b40be739a9caae2"},
]
[package.dependencies]
@@ -6676,13 +6760,13 @@ six = ">=1.12.0"
[[package]]
name = "telesign"
-version = "2.2.3"
+version = "2.2.5"
description = "TeleSign SDK"
optional = false
python-versions = "*"
files = [
- {file = "telesign-2.2.3-py2.py3-none-any.whl", hash = "sha256:77b5a80ebea7e7b0b83a21c1a9a450e97a3eac0e34e5e6fdd45de2f140f0a2dc"},
- {file = "telesign-2.2.3.tar.gz", hash = "sha256:a5c3bcc6e2bf81e74ea73d26bf4f41cfec1379f7833860f61f27b22ff0ab8a9a"},
+ {file = "telesign-2.2.5-py2.py3-none-any.whl", hash = "sha256:7ae0009d4a6a0b29a44273398c75c31d256110d68264736f342e72e6e42f4268"},
+ {file = "telesign-2.2.5.tar.gz", hash = "sha256:361ca6a8c2dc67cf604f5a1024d6c7cfacc079f3149eba593001deacd9c4555e"},
]
[package.dependencies]
@@ -6956,18 +7040,18 @@ test = ["vcrpy (>=1.10.3)"]
[[package]]
name = "twilio"
-version = "9.3.4"
+version = "9.3.7"
description = "Twilio API client and TwiML generator"
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "twilio-9.3.4-py2.py3-none-any.whl", hash = "sha256:2cae99f0f7aecbd9da02fa59ad8f11b360db4a9281fc3fb3237ad50be21d8a9b"},
- {file = "twilio-9.3.4.tar.gz", hash = "sha256:38a6ab04752f44313dcf736eae45236a901528d3f53dfc21d3afd33539243c7f"},
+ {file = "twilio-9.3.7-py2.py3-none-any.whl", hash = "sha256:7d5d05140530f0eaf60d6a810c88da443cb2e6aad18a0830e4cb0ccd7b338d30"},
+ {file = "twilio-9.3.7.tar.gz", hash = "sha256:0f747f6c29b0ddc50a55e51739abb28c83b83d97917b02e784119058a310db05"},
]
[package.dependencies]
aiohttp = ">=3.8.4"
-aiohttp-retry = ">=2.8.3"
+aiohttp-retry = "2.8.3"
PyJWT = ">=2.0.0,<3.0.0"
requests = ">=2.0.0"
@@ -7129,6 +7213,26 @@ files = [
{file = "validate_email-1.3.tar.gz", hash = "sha256:784719dc5f780be319cdd185dc85dd93afebdb6ebb943811bc4c7c5f9c72aeaf"},
]
+[[package]]
+name = "virtualenv"
+version = "20.27.1"
+description = "Virtual Python Environment builder"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"},
+ {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"},
+]
+
+[package.dependencies]
+distlib = ">=0.3.7,<1"
+filelock = ">=3.12.2,<4"
+platformdirs = ">=3.9.1,<5"
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "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]]
name = "vobject"
version = "0.9.6.1"
@@ -7144,270 +7248,338 @@ python-dateutil = ">=2.4.0"
[[package]]
name = "vonage"
-version = "3.99.5a0"
+version = "4.0.0"
description = "Python Server SDK for using Vonage APIs"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage-3.99.5a0-py3-none-any.whl", hash = "sha256:1664b6a0ccfa4dbc3862b9f8b89df54182df5570cbb298372a27947289333a8e"},
- {file = "vonage-3.99.5a0.tar.gz", hash = "sha256:299c70f64fea0ea12e13302b72b4917e5c645fe670a6921bc291d642320a150f"},
+ {file = "vonage-4.0.0-py3-none-any.whl", hash = "sha256:b755d61af19b9969d2bd9b347fe875146520823e62e64080b5717de2e349a3b6"},
+ {file = "vonage-4.0.0.tar.gz", hash = "sha256:2621a0a004420c052e4443910d8a83215cbe3558f7212abd4df737fa7a21790c"},
]
[package.dependencies]
-vonage-account = ">=1.0.1"
-vonage-application = ">=1.0.2"
-vonage-http-client = ">=1.4.1"
-vonage-messages = ">=1.2.1"
-vonage-number-insight = ">=1.0.1"
-vonage-numbers = ">=1.0.1"
-vonage-sms = ">=1.1.2"
-vonage-subaccounts = ">=1.0.2"
-vonage-users = ">=1.1.3"
-vonage-utils = ">=1.1.3"
-vonage-verify = ">=1.1.2"
-vonage-verify-v2 = ">=1.1.3"
-vonage-video = ">=1.0.0"
-vonage-voice = ">=1.0.4"
+vonage-account = ">=1.1.0"
+vonage-application = ">=2.0.0"
+vonage-http-client = ">=1.4.3"
+vonage-messages = ">=1.2.3"
+vonage-network-auth = ">=1.0.1"
+vonage-network-number-verification = ">=1.0.1"
+vonage-network-sim-swap = ">=1.1.1"
+vonage-number-insight = ">=1.0.5"
+vonage-numbers = ">=1.0.3"
+vonage-sms = ">=1.1.4"
+vonage-subaccounts = ">=1.0.4"
+vonage-users = ">=1.2.0"
+vonage-utils = ">=1.1.4"
+vonage-verify = ">=2.0.0"
+vonage-verify-legacy = ">=1.0.0"
+vonage-video = ">=1.0.3"
+vonage-voice = ">=1.0.6"
[[package]]
name = "vonage-account"
-version = "1.0.1"
+version = "1.1.0"
description = "Vonage Account API package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_account-1.0.1-py3-none-any.whl", hash = "sha256:340fe9f1175e6b98885f535fbb05396c8308514b2def939d2b671f8017be36ab"},
- {file = "vonage_account-1.0.1.tar.gz", hash = "sha256:6f392e2bb6121fc2d329b6fc3732a457a56567dff69e5a4b4d09bcf56c846045"},
+ {file = "vonage_account-1.1.0-py3-none-any.whl", hash = "sha256:24e9a016d63cf1bf039533a43c5595ca502b0d204c5d8c5f13f5dff002793ba7"},
+ {file = "vonage_account-1.1.0.tar.gz", hash = "sha256:210409ac8c9441257aacea86189d6ed8e4345938dc9e9a5c10b436e962c148ad"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.1"
-vonage-utils = ">=1.1.3"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-application"
-version = "1.0.2"
+version = "2.0.0"
description = "Vonage Application API package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_application-1.0.2-py3-none-any.whl", hash = "sha256:2d57676d20ef2f9e10084e52f24f752cd8cf25e4349f673f5480e510ea47dd05"},
- {file = "vonage_application-1.0.2.tar.gz", hash = "sha256:7e4a61272c2e15692f5eccf75c5c527d77824761c9b0b39d6bacb7578a08ef16"},
+ {file = "vonage_application-2.0.0-py3-none-any.whl", hash = "sha256:049fa520434aaaabd9bc6981f7fdae5b58b5f7a87e411bc6de114113c5c6536a"},
+ {file = "vonage_application-2.0.0.tar.gz", hash = "sha256:642d281ddaedb2873ba38f41f715c4fc0592232ef669d92f8636ac312ab6051a"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.1"
-vonage-utils = ">=1.1.3"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-http-client"
-version = "1.4.1"
+version = "1.4.3"
description = "An HTTP client for making requests to Vonage APIs."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_http_client-1.4.1-py3-none-any.whl", hash = "sha256:ed1a106895ab8c0394cbb43542d8cebc3b2442bec85373ffd0bf809cda293b4e"},
- {file = "vonage_http_client-1.4.1.tar.gz", hash = "sha256:d19b32dbe5261db223cf686ab00afb2987346e5b19e7595b87ef04f145bdb493"},
+ {file = "vonage_http_client-1.4.3-py3-none-any.whl", hash = "sha256:3ec6505235518627bbb71fff82e19466142739cb11b8a5834b4ab0d38f0b5ced"},
+ {file = "vonage_http_client-1.4.3.tar.gz", hash = "sha256:cc7ca4e3538c3ed585d647d88a147a96999461574f5983736670952b61bbe9c3"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
+pydantic = ">=2.9.2"
requests = ">=2.27.0"
typing-extensions = ">=4.9.0"
-vonage-jwt = ">=1.1.2"
-vonage-utils = ">=1.1.3"
+vonage-jwt = ">=1.1.4"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-jwt"
-version = "1.1.2"
+version = "1.1.4"
description = "Tooling for working with JWTs for Vonage APIs in Python."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_jwt-1.1.2-py3-none-any.whl", hash = "sha256:0f9f19306af7facaa2976eae90a7c8ddb46a25ae4b0f7ecf796dadaa631c7d2f"},
- {file = "vonage_jwt-1.1.2.tar.gz", hash = "sha256:1653397f2de1374c34459c74b6df7742823b8e292ecaad78c09cb22812b8fb85"},
+ {file = "vonage_jwt-1.1.4-py3-none-any.whl", hash = "sha256:aae3c98c588d3f383ef6984920c2c9948737f834049bf7bb688b087f04b77584"},
+ {file = "vonage_jwt-1.1.4.tar.gz", hash = "sha256:dc9aadc683318696c6d426f0abc05295166884fecf9970a7800ea14a99fae71e"},
]
[package.dependencies]
pyjwt = {version = ">=1.6.4", extras = ["crypto"]}
-vonage-utils = ">=1.1.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-messages"
-version = "1.2.1"
+version = "1.2.3"
description = "Vonage messages package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_messages-1.2.1-py3-none-any.whl", hash = "sha256:f89d5bbdae1d772b170074886027728c7244f5f076100163d82726e50e68f48a"},
- {file = "vonage_messages-1.2.1.tar.gz", hash = "sha256:a464f1d88166af0b686bb87351e81c74b524da50d3d2921674523636f80fae1d"},
+ {file = "vonage_messages-1.2.3-py3-none-any.whl", hash = "sha256:d20265cff55a7e5c791cb840205a446913add0a6326b342edaa44cd45cea9447"},
+ {file = "vonage_messages-1.2.3.tar.gz", hash = "sha256:a2fde7ad1fb24ab12b8f3349db18a075deb91ceeff416f455c270ddf28ce1a7a"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.1"
-vonage-utils = ">=1.1.3"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
+
+[[package]]
+name = "vonage-network-auth"
+version = "1.0.1"
+description = "Package for working with Network APIs that require Oauth2 in Python."
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "vonage_network_auth-1.0.1-py3-none-any.whl", hash = "sha256:0ea569ad0801dfedb08c5837584fd371ee48933dd97203d2d77c9d234b686c9f"},
+ {file = "vonage_network_auth-1.0.1.tar.gz", hash = "sha256:7ed4de3ad9ebb70119f096d5e1f2388205eb65e0db81fd6d80382c079d4451ff"},
+]
+
+[package.dependencies]
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
+
+[[package]]
+name = "vonage-network-number-verification"
+version = "1.0.1"
+description = "Package for working with the Vonage Number Verification Network API."
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "vonage_network_number_verification-1.0.1-py3-none-any.whl", hash = "sha256:b14ea52e4340f694863d57eb66ee5ddfceea08b8b4de7cc69baa829e5e6ccb25"},
+ {file = "vonage_network_number_verification-1.0.1.tar.gz", hash = "sha256:a28ab7221eb5a7170cf7f4f9fe7be4d22e24df22b217a0396ea4782d0b81ddba"},
+]
+
+[package.dependencies]
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-network-auth = ">=1.0.0"
+vonage-utils = ">=1.1.4"
+
+[[package]]
+name = "vonage-network-sim-swap"
+version = "1.1.1"
+description = "Package for working with the Vonage Sim Swap Network API."
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "vonage_network_sim_swap-1.1.1-py3-none-any.whl", hash = "sha256:9d0c459a4c28b3715ed22f7008e1f4661d2eb06751ecb7fc5cf6dfca0aefea8e"},
+ {file = "vonage_network_sim_swap-1.1.1.tar.gz", hash = "sha256:7ae4d3ff4c21528af9a73d61d21bccb9b048478b2b56500fa8dd8ec02b8258cd"},
+]
+
+[package.dependencies]
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-network-auth = ">=1.0.0"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-number-insight"
-version = "1.0.1"
+version = "1.0.5"
description = "Vonage Number Insight package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_number_insight-1.0.1-py3-none-any.whl", hash = "sha256:c00ca1ad6513b6393b902d2f3bc6261ecffafb99c933d635af360d42938da09e"},
- {file = "vonage_number_insight-1.0.1.tar.gz", hash = "sha256:d9d7b5cdad2e76901f116a58d79b3532034ff3dc34989bf6c37636a33f7724f2"},
+ {file = "vonage_number_insight-1.0.5-py3-none-any.whl", hash = "sha256:e54a0561b7e065bfc8ded9f0919063dde45d5fc566645228dafb9e484675b8c7"},
+ {file = "vonage_number_insight-1.0.5.tar.gz", hash = "sha256:edc6c8006dddfcf2637c21873b2cc79ca30b736f900b1f71abdfe8076c31142b"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.1"
-vonage-utils = ">=1.1.3"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-numbers"
-version = "1.0.1"
+version = "1.0.3"
description = "Vonage Numbers package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_numbers-1.0.1-py3-none-any.whl", hash = "sha256:ba81fb8898bc59eb0fbfd9b347331202b21bd18839d7e8f344f92f7c7ec98ca5"},
- {file = "vonage_numbers-1.0.1.tar.gz", hash = "sha256:51b7d5ae75540e21d7ccd8090b4c4ab57a275929e6153b9813a7900f24a7aae5"},
+ {file = "vonage_numbers-1.0.3-py3-none-any.whl", hash = "sha256:f36fc7574a138f605a29801f8664391a0f11893f3c79d9d55d8dea3859c0176d"},
+ {file = "vonage_numbers-1.0.3.tar.gz", hash = "sha256:e6ed05d05c0a86d5c4746d3fc69518439822b5f8519c4eda2e130cda79313264"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.1"
-vonage-utils = ">=1.1.3"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-sms"
-version = "1.1.2"
+version = "1.1.4"
description = "Vonage SMS package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_sms-1.1.2-py3-none-any.whl", hash = "sha256:90349b46263f3c0515e356df669221c682b5d4267a5eb6e815933aec7aaa2c4d"},
- {file = "vonage_sms-1.1.2.tar.gz", hash = "sha256:634e510d3e38f38f4fdced4356525e43c2b31b318ca7e536cc5ceb325393fbcb"},
+ {file = "vonage_sms-1.1.4-py3-none-any.whl", hash = "sha256:8ac5477c12d0d2e9dc5ecd2148fa448eee0171af7a9978032bd779d326af3549"},
+ {file = "vonage_sms-1.1.4.tar.gz", hash = "sha256:18531e563a32a3cbf482f7cd4598c1cd1e65522c30cd630b974ff2640d24d8ea"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.3.1"
-vonage-utils = ">=1.1.1"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-subaccounts"
-version = "1.0.2"
+version = "1.0.4"
description = "Vonage Subaccounts API package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_subaccounts-1.0.2-py3-none-any.whl", hash = "sha256:35fb885ad9713caaf266585fdf57d1043d28c19e1a8f4fcff2f457112cac27c1"},
- {file = "vonage_subaccounts-1.0.2.tar.gz", hash = "sha256:9d7629eced4774e4e77ebb95a1d491eda6acdaf557b9e026778c281e3886159b"},
+ {file = "vonage_subaccounts-1.0.4-py3-none-any.whl", hash = "sha256:c8ec1b78e9e975ae29939e426412f4e4eb662dbdef799de60dc1ff5da007cea9"},
+ {file = "vonage_subaccounts-1.0.4.tar.gz", hash = "sha256:2fe5af046765224783e26c110702adaf79fd3e4c7d4388e98fdf840cff898479"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.0"
-vonage-utils = ">=1.1.2"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-users"
-version = "1.1.3"
+version = "1.2.0"
description = "Vonage Users package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_users-1.1.3-py3-none-any.whl", hash = "sha256:9dc7c4420b688fb7bce7e2646c4c8524072a46832f22ed662dae553c2979ab89"},
- {file = "vonage_users-1.1.3.tar.gz", hash = "sha256:d08a4a97ed6159a9b61800c3ba3966209deaa0e9286a5ed462093e8379fcf0c2"},
+ {file = "vonage_users-1.2.0-py3-none-any.whl", hash = "sha256:f32f566ce69a7cae31747de89d4552e79290149e3abae5f45735f9897351f7ca"},
+ {file = "vonage_users-1.2.0.tar.gz", hash = "sha256:091524fb46116eed8aaba567c52154e4212fd5003f4703382a0a866567049e78"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.3.1"
-vonage-utils = ">=1.1.2"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-utils"
-version = "1.1.3"
+version = "1.1.4"
description = "Utils package containing objects for use with Vonage APIs"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_utils-1.1.3-py3-none-any.whl", hash = "sha256:71b34c31d4400a87df59cf549181b5fc0a86fa95b563b0865362c8b0d259f067"},
- {file = "vonage_utils-1.1.3.tar.gz", hash = "sha256:550cd7a510145082aebbf933b18c3c847849a64d03445785cbc7a63c9666c325"},
+ {file = "vonage_utils-1.1.4-py3-none-any.whl", hash = "sha256:438b0bc8da25e8026ec6789cd9a113b4f41636c70c4d84b2d9ab0e92ed23a665"},
+ {file = "vonage_utils-1.1.4.tar.gz", hash = "sha256:950b802dc93f8440717fba6e183d2ae39f6e0316dc19a3f1f41ca81f9af24bf8"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-typing-extensions = ">=4.9.0"
+pydantic = ">=2.9.2"
[[package]]
name = "vonage-verify"
-version = "1.1.2"
+version = "2.0.0"
description = "Vonage verify package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_verify-1.1.2-py3-none-any.whl", hash = "sha256:af5384a79a84f9ed3abe8029911d4db399d5b828b7bb85e761df8c982fbfd9cd"},
- {file = "vonage_verify-1.1.2.tar.gz", hash = "sha256:261d6966e3be1d1f928a1e91c6f252e05a48fc284051ff3c77332d2cca0cda56"},
+ {file = "vonage_verify-2.0.0-py3-none-any.whl", hash = "sha256:27baef5fe0f4a482a6db2eab6e39aacef9927917dc0b09840a81425d5d6ea766"},
+ {file = "vonage_verify-2.0.0.tar.gz", hash = "sha256:7663dfad065f4ccc6fb59dfc14df5fe17dc02757e372f027c2fa2e56862de6bb"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.3.1"
-vonage-utils = ">=1.1.1"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
+
+[[package]]
+name = "vonage-verify-legacy"
+version = "1.0.0"
+description = "Vonage legacy verify package"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "vonage_verify_legacy-1.0.0-py3-none-any.whl", hash = "sha256:5f17913826eca736ce5f90def3f98b5f1e2d7ed625cdee7f3bf175bb08576118"},
+ {file = "vonage_verify_legacy-1.0.0.tar.gz", hash = "sha256:62af73848cda503c64456f4e8957ca6d1ed34d875302017d25ec019932f79fb2"},
+]
+
+[package.dependencies]
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-verify-v2"
-version = "1.1.3"
+version = "1.1.4"
description = "Vonage verify v2 package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_verify_v2-1.1.3-py3-none-any.whl", hash = "sha256:36e6e2600630a191e1ece915c9bd2ebc1df9291e9fd85ef495bfcba0179a78be"},
- {file = "vonage_verify_v2-1.1.3.tar.gz", hash = "sha256:1700a81209c82389e9922290afc61c1688bca155390896dcda1c98b74309156e"},
+ {file = "vonage_verify_v2-1.1.4-py3-none-any.whl", hash = "sha256:56ab7ce142b6992a718882ae13921ac66d42d25be262a97d06490189b67c99cc"},
+ {file = "vonage_verify_v2-1.1.4.tar.gz", hash = "sha256:187a96333ffb0ae9578e9e70fdb7467277e57801bb28eb430e02d2a076edfe2b"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.0"
-vonage-utils = ">=1.1.2"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.2"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-video"
-version = "1.0.0"
+version = "1.0.3"
description = "Vonage video package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_video-1.0.0-py3-none-any.whl", hash = "sha256:6b58516fd338c931e415df043d84e7bbfae20f18c162eadbcb52e2a8457c0c3f"},
- {file = "vonage_video-1.0.0.tar.gz", hash = "sha256:86b573d5a91b46313ecc26c303cb65a220a5f61806091b56ae3161296d31cca9"},
+ {file = "vonage_video-1.0.3-py3-none-any.whl", hash = "sha256:53e3648acbf4881bf5a4ed2fa9c0edbad137ffe90e24746d90a115f380414559"},
+ {file = "vonage_video-1.0.3.tar.gz", hash = "sha256:77638a8c44512a8bbeefc858d2230c2617fd21d0215ee1f5e0d2cea475268413"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.4.0"
-vonage-utils = ">=1.1.2"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "vonage-voice"
-version = "1.0.4"
+version = "1.0.6"
description = "Vonage voice package"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "vonage_voice-1.0.4-py3-none-any.whl", hash = "sha256:0cfb62062e52163813dd426b379922c7518a257dc2e26e786d1d7df9f35e3077"},
- {file = "vonage_voice-1.0.4.tar.gz", hash = "sha256:7c39e87b9e05f3fe3416965395713270753ae88315b2f14d1d01072be8a04654"},
+ {file = "vonage_voice-1.0.6-py3-none-any.whl", hash = "sha256:3f497a3a96516a194da9d3768c489873818a76a05cf5055bb9a34d8086fccb69"},
+ {file = "vonage_voice-1.0.6.tar.gz", hash = "sha256:4dd9c004285ef6ceeb05ad2f8f8ca575430f40de95888859dc23bfa777be31ad"},
]
[package.dependencies]
-pydantic = ">=2.7.1"
-vonage-http-client = ">=1.3.1"
-vonage-utils = ">=1.1.2"
+pydantic = ">=2.9.2"
+vonage-http-client = ">=1.4.3"
+vonage-utils = ">=1.1.4"
[[package]]
name = "wasabi"
@@ -7488,13 +7660,13 @@ watchdog = ["watchdog"]
[[package]]
name = "wheel"
-version = "0.44.0"
+version = "0.45.1"
description = "A built-package format for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "wheel-0.44.0-py3-none-any.whl", hash = "sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f"},
- {file = "wheel-0.44.0.tar.gz", hash = "sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49"},
+ {file = "wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248"},
+ {file = "wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729"},
]
[package.extras]
@@ -7898,4 +8070,4 @@ bindings = ["ghostscript"]
[metadata]
lock-version = "2.0"
python-versions = "^3.10.14"
-content-hash = "a4deb5e34071f1cfabd0e5728fe9a883478db157b8754a2ab624846fd130cbe2"
+content-hash = "6628b50203788f5705d72bf91f39005f666f81d0960a60c4476f87dab9066163"
diff --git a/requirement/pyproject.odoo16.0_python3.10.14.toml b/requirement/pyproject.odoo16.0_python3.10.14.toml
index 1bdd3b7..e48e64d 100644
--- a/requirement/pyproject.odoo16.0_python3.10.14.toml
+++ b/requirement/pyproject.odoo16.0_python3.10.14.toml
@@ -24,7 +24,7 @@ argcomplete = "^3.5.1"
asana = "^5.0.10"
asn1crypto = "^1.5.1"
astor = "^0.8.1"
-avalara = "^24.10.0"
+avalara = "^24.11.2"
azure-identity = "1.13.0"
azure-storage-blob = "12.16.0"
babel = "2.9.1"
@@ -38,7 +38,7 @@ cairosvg = "^2.7.1"
chardet = "4.0.0"
clicksend-client = "^5.0.78"
cloudflare = "^3.1.0"
-cmake = "^3.30.5"
+cmake = "^3.31.1"
colorama = "^0.4.6"
countryinfo = "^0.1.2"
cryptography = "3.4.8"
@@ -52,7 +52,7 @@ dropbox = "^12.0.2"
ebaysdk = "2.1.5"
email-validator = "^2.2.0"
endesive = "^2.17.3"
-extract-msg = "^0.51.1"
+extract-msg = "^0.52.0"
ezdxf = "^1.3.4"
face-recognition = "^1.3.0"
factur-x = "^3.1"
@@ -69,9 +69,9 @@ gitpython = "3.1.30"
giturlparse = "^0.12.0"
googletrans-py = "4.0.0"
greenlet = "1.1.2"
-gst = "^0.1.0"
+gst = "^0.1.2"
httpagentparser = "1.8.1"
-hubspot-api-client = "^10.0.0"
+hubspot-api-client = "10.0.0"
idna = "2.10"
iscompatible = "^0.1.1"
jinja2 = "2.11.3"
@@ -80,25 +80,25 @@ libsass = "0.20.1"
linkedin = "^0.1.5"
lottie = "^0.7.1"
lxml = "4.6.5"
-lxml-html-clean = "^0.3.1"
-mako = "^1.3.5"
+lxml-html-clean = "^0.4.1"
+mako = "^1.3.6"
markupsafe = "1.1.1"
matplotlib = "^3.9.2"
mechanize = "^0.4.10"
messagebird = "^2.2.0"
mock = "^5.1.0"
mpld3 = "0.5.9"
-mysqlclient = "^2.2.5"
+mysqlclient = "^2.2.6"
nextcloud-api-wrapper = "^0.2.3"
num2words = "0.5.13"
numpy = ">=1.15"
numpy-financial = "<=1.0.0"
-numpy-stl = "^3.1.2"
+numpy-stl = "^3.2.0"
odoo-test-helper = "^2.1.1"
odoorpc = "^0.10.1"
ofxparse = "0.21"
ofxtools = "^0.9.5"
-openai = "^1.52.0"
+openai = "^1.55.2"
opencv-python = "^4.10.0.84"
openpyxl = "^3.1.5"
pandas = ">=0.25.3"
@@ -107,10 +107,12 @@ passlib = "1.7.4"
pathspec = "^0.12.1"
pay-ccavenue = "^1.0.0"
pdf2image = "^1.17.0"
-phonenumbers = "^8.13.47"
+pdfminer = "^20191125"
+phonenumbers = "^8.13.50"
pillow = "9.0.1"
plotly = "5.13.1"
polib = "1.1.0"
+pre-commit = "^4.0.1"
premailer = "^3.10.0"
printnodeapi = "^0.2.0"
prometheus-client = "0.15.0"
@@ -122,12 +124,12 @@ py3o-formats = "^0.3"
py3o-template = "^0.10.0"
pyaudio = "^0.2.14"
pycountry = "^24.6.1"
-pydifact = "^0.1.7"
+pydifact = "^0.1.8"
pydot = "1.4.2"
pyfcm = "^2.0.7"
-pygithub = "^2.4.0"
+pygithub = "^2.5.0"
pygobject = "3.44.1"
-pyjwt = "^2.9.0"
+pyjwt = "^2.10.1"
pymssql = "<=2.2.5"
pyncclient = "^0.7"
pyopenssl = "20.0.1"
@@ -148,7 +150,7 @@ python-resize-image = "^1.1.20"
python-slugify = "^8.0.4"
python-stdnum = "1.16"
python-swiftclient = "4.1.0"
-python-telegram-bot = "^21.6"
+python-telegram-bot = "^21.7"
pytz = "^2024.2"
pyusb = "1.0.2"
pyyaml = "6.0"
@@ -164,7 +166,7 @@ retrying = "^1.3.4"
rl-renderpm = "4.0.3"
roulier = "^1.1.1"
schwifty = "2024.4.0"
-selenium = "^4.25.0"
+selenium = "^4.27.1"
sentry-sdk = "<=1.9.0"
shapely = "^2.0.6"
simplejson = "^3.19.3"
@@ -172,21 +174,22 @@ spacy = "^3.8.2"
speechrecognition = "3.10.0"
sqlalchemy = "^2.0.36"
statsd = "4.0.1"
-telesign = "^2.2.3"
+telesign = "^2.2.5"
telnyx = "^2.1.3"
todoist-python = "^8.1.4"
toml = "^0.10.2"
tweepy = "^4.14.0"
-twilio = "^9.3.4"
+twilio = "^9.3.7"
unidecode = "^1.3.8"
unidiff = "^0.7.5"
urllib3 = "1.26.5"
uvloop = "^0.21.0"
validate-email = "^1.3"
vobject = "0.9.6.1"
-vonage = "^3.17.1"
+vonage = "^4.0.0"
+vonage-verify-v2 = "1.1.4"
werkzeug = "2.0.2"
-wheel = "^0.44.0"
+wheel = "^0.45.1"
xlrd = "1.2.0"
xlsxwriter = "1.4.5"
xlwt = "1.3.0"
diff --git a/requirement/requirements.odoo16.0_python3.10.14.txt b/requirement/requirements.odoo16.0_python3.10.14.txt
index 9c805a0..5be7839 100644
--- a/requirement/requirements.odoo16.0_python3.10.14.txt
+++ b/requirement/requirements.odoo16.0_python3.10.14.txt
@@ -16,6 +16,7 @@ cloudflare
selenium
# mmg # depend on weasyprint 59.0 and depend on old version pillow 9.0.1
uvloop
+python-randomword-fr
# For OSX
cython
@@ -45,6 +46,7 @@ PyPDF2
# For logical test and quality
git+https://github.com/psf/black.git@24.8.0
+pre-commit
# For python 3.10 from odoo/requirements.txt, poetry_update.py cannot support python_version
cryptography==3.4.8
@@ -72,3 +74,12 @@ xlrd==1.2.0
# Force python 3.10 over odoo/requirements.txt to remove warning
num2words==0.5.13
xlsxwriter==1.4.5
+
+# Fix vonage package depend on vonage-verify-v2 1.1.3, but not exist into pip
+vonage-verify-v2==1.1.4
+
+# Fix poetry
+hubspot-api-client==10.0.0
+
+# Optional Odoo
+pdfminer
diff --git a/script/code_generator/search_class_model.py b/script/code_generator/search_class_model.py
index f62eced..ce334ea 100755
--- a/script/code_generator/search_class_model.py
+++ b/script/code_generator/search_class_model.py
@@ -119,9 +119,7 @@ def search_and_replace(
# new_file_content = (
# f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
# )
- new_file_content = (
- f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
- )
+ new_file_content = f'{f_lines[:t_index_second_quote]}"{models_name}"{f_lines[t_index_third_quote + len(second_char):]}'
return new_file_content
diff --git a/script/database/image_db.py b/script/database/image_db.py
index 44d9e6a..2a9f9ae 100755
--- a/script/database/image_db.py
+++ b/script/database/image_db.py
@@ -240,7 +240,10 @@ def main():
# not finish to empty the queue
if dct_depend_image:
- _logger.info("Missing dependencies, auto-run all image generation for last execution")
+ _logger.info(
+ "Missing dependencies, auto-run all image generation for last"
+ " execution"
+ )
for depend_image, lst_module in dct_depend_image.items():
lst_queue_parallel.append(lst_module)
# print command to execute
diff --git a/script/deployment/copy_all_addons.sh b/script/deployment/copy_all_addons.sh
new file mode 100755
index 0000000..fd2ca0a
--- /dev/null
+++ b/script/deployment/copy_all_addons.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
+
+datetime=$(date +%Y-%m-%d_%H-%M-%S)
+backup_dir="backup_$datetime"
+mkdir -p "$backup_dir"
+
+for dir in */; do
+ if [ -d "$dir/addons/addons" ]; then
+ mkdir -p "$backup_dir/$dir"
+
+ # Support when addons is a symlink, copy the target directory
+ if [ -L "$dir/addons/addons" ]; then
+ source_dir=$(readlink -f "$dir/addons/addons")
+ else
+ source_dir="$dir/addons/addons"
+ fi
+
+ echo $source_dir
+
+ # Copy directory of addons
+ cp -r "$source_dir" "$backup_dir/$dir/addons"
+
+ # Copy docker-compose.yml
+ cp "$dir/docker-compose.yml" "$backup_dir/$dir/"
+ fi
+done
diff --git a/script/deployment/show_all_addons.sh b/script/deployment/show_all_addons.sh
new file mode 100755
index 0000000..eae259f
--- /dev/null
+++ b/script/deployment/show_all_addons.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+# © 2021-2024 TechnoLibre (http://www.technolibre.ca)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
+
+for dir in */; do
+ if [ -d "$dir/addons/addons" ]; then
+ echo "Directory : $dir"
+
+ find "$dir/addons/addons" -type f -print
+ fi
+done
diff --git a/script/deployment/update_dns_cloudflare.py b/script/deployment/update_dns_cloudflare.py
index 22dede5..be21e71 100755
--- a/script/deployment/update_dns_cloudflare.py
+++ b/script/deployment/update_dns_cloudflare.py
@@ -28,6 +28,16 @@ def get_config():
When auto_sync is enable:
Check zone and name on cloudflare and compare with public ip, update all old ip with new ip if different.
You need your profile in file ~/.cloudflare/cloudflare.cfg
+ Example:
+ [profil_name]
+ email=email@email.com
+ token=TOKEN
+
+ Configure locally a crontab and adapt it, crontab -e, specify an existing DNS
+ Example each 5 minutes:
+ */5 * * * * USERNAME cd /home/USERNAME/ERPLibre && ./script/deployment/update_dns_cloudflare.py --profile profil_name --zone_name example.com --dns_name example.com --auto_sync
+ Example each minute:
+ * * * * * USERNAME cd /home/USERNAME/ERPLibre && ./script/deployment/update_dns_cloudflare.py --profile profil_name --zone_name example.com --dns_name example.com --auto_sync
""",
epilog="""\
""",
diff --git a/script/docker/docker_update_version.py b/script/docker/docker_update_version.py
index b60da73..fd27dad 100755
--- a/script/docker/docker_update_version.py
+++ b/script/docker/docker_update_version.py
@@ -91,9 +91,9 @@ def edit_text(config):
if is_find:
key = "image:"
value = lst_docker_info[i]
- lst_docker_info[
- i
- ] = f"{value[:value.find(key) + len(key)]} {config.prod_version}\n"
+ lst_docker_info[i] = (
+ f"{value[:value.find(key) + len(key)]} {config.prod_version}\n"
+ )
break
if "ERPLibre" in docker_info:
is_find = True
diff --git a/script/install/install_OSX_dependency.sh b/script/install/install_OSX_dependency.sh
index e6e2990..a49fac0 100755
--- a/script/install/install_OSX_dependency.sh
+++ b/script/install/install_OSX_dependency.sh
@@ -13,9 +13,13 @@ EL_USER=${USER}
# Install PostgreSQL Server
#--------------------------------------------------
echo "\n---- Install PostgreSQL Server ----"
-brew install postgresql@15
-brew install postgis
-brew services start postgresql@15
+if which psql >/dev/null 2>&1; then
+ echo "postgresql is already installed, skipping"
+else
+ brew install postgresql@15
+ brew install postgis
+ brew services start postgresql@15
+fi
echo "\n---- Creating the ERPLibre PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true
@@ -25,6 +29,7 @@ sudo su - postgres -c "CREATE EXTENSION postgis;\nCREATE EXTENSION postgis_topol
# Install Dependencies
#--------------------------------------------------
echo "\n--- Installing Python 3 + pip3 --"
+#TODO is python@3.7 line here still usefull?? Should we get rid of it?
brew install git python@3.7 wget parallel mariadb
brew link git
brew link wget
diff --git a/script/install/install_debian_dependency.sh b/script/install/install_debian_dependency.sh
index 2ea66af..b4e3235 100755
--- a/script/install/install_debian_dependency.sh
+++ b/script/install/install_debian_dependency.sh
@@ -12,18 +12,23 @@ EL_USER=${USER}
## https://github.com/odoo/odoo/wiki/Wkhtmltopdf ):
# Ubuntu 20.04
UBUNTU_VERSION=$(lsb_release -rs)
+DEBIAN_VERSION=$(lsb_release -cs)
OS=$(lsb_release -si)
-if [ "20.04" == "${UBUNTU_VERSION}" ]; then
+if [ "24.04" == "${UBUNTU_VERSION}" ] || [ "24.10" == "${UBUNTU_VERSION}" ] || [ "23.10" == "${UBUNTU_VERSION}" ] || [ "23.04" == "${UBUNTU_VERSION}" ] || [ "22.10" == "${UBUNTU_VERSION}" ] || [ "22.04" == "${UBUNTU_VERSION}" ]; then
+ WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
+elif [ "20.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
-elif [ "22.04" == "${UBUNTU_VERSION}" ]; then
- WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
elif [ "18.04" == "${UBUNTU_VERSION}" ]; then
WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb
elif [[ "${OS}" == "Debian" ]]; then
- WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb
+ if [ "bookworm" == "${DEBIAN_VERSION}" ]; then
+ WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb
+ else
+ WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bullseye_amd64.deb
+ fi
elif [[ "${OS}" == *"Ubuntu"* ]]; then
echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04"
- WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
+ WKHTMLTOX_X64=https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
else
echo "Your version of Ubuntu is not supported, only support 18.04, 20.04 and 22.04"
exit 1
diff --git a/script/install/install_locally.sh b/script/install/install_locally.sh
index 23d0631..7b68242 100755
--- a/script/install/install_locally.sh
+++ b/script/install/install_locally.sh
@@ -106,7 +106,10 @@ if [[ ! -f ${VENV_REPO_PATH} ]]; then
fi
# Make .venv active
-
+if [[ "${OSTYPE}" == "darwin"* ]]; then
+ echo -e "=======>source .venv/bin/activate here!!! <==============="
+ source .venv/bin/activate
+fi
echo -e "\n---- Installing poetry dependency ----"
${VENV_PATH}/bin/pip install --upgrade pip
# Force python instead of changing env
diff --git a/script/poetry/poetry_update.py b/script/poetry/poetry_update.py
index 8bd4380..960d723 100755
--- a/script/poetry/poetry_update.py
+++ b/script/poetry/poetry_update.py
@@ -67,6 +67,7 @@ def get_lst_requirements_txt():
def get_lst_manifest_py():
return get_file_from_glob("__manifest__.py")
+
def get_file_from_glob(glob_txt):
with open(".odoo-version") as txt:
odoo_version = txt.read()
@@ -77,7 +78,9 @@ def get_file_from_glob(glob_txt):
a_dirname = os.path.dirname(a)
if a_dirname.startswith(".repo/") or a_dirname.startswith(".venv"):
continue
- if a_dirname.startswith("addons") and not a_dirname.startswith(f"addons.odoo{odoo_version}"):
+ if a_dirname.startswith("addons") and not a_dirname.startswith(
+ f"addons.odoo{odoo_version}"
+ ):
continue
lst_v.append(a)
return lst_v
diff --git a/script/selenium/web_login.py b/script/selenium/web_login.py
index 81f5616..fff299f 100755
--- a/script/selenium/web_login.py
+++ b/script/selenium/web_login.py
@@ -38,13 +38,13 @@ def run(config, selenium_tool):
try:
connexion_button = selenium_tool.driver.find_element(
By.XPATH,
- "/html/body/div/div/div/form/div[3]/button"
+ "/html/body/div/div/div/form/div[3]/button",
# '//button[contains(text(), "Log in")]'
)
except Exception:
connexion_button = selenium_tool.driver.find_element(
By.XPATH,
- "/html/body/div/main/div/form/div[3]/button"
+ "/html/body/div/main/div/form/div[3]/button",
# '//button[contains(text(), "Connexion")]'
)
diff --git a/script/version/update_env_version.py b/script/version/update_env_version.py
index c47690f..43656fb 100755
--- a/script/version/update_env_version.py
+++ b/script/version/update_env_version.py
@@ -423,18 +423,16 @@ class Update:
os.rename(addons_path, addons_path + "TEMP")
# TODO need to be force if installation path is all good, return True
- if self.config.is_in_installation:
+ if self.config.install_dev:
_logger.info("Installation.")
- status = self.install_erplibre(
- install_system=self.config.install,
- install_dev=self.config.install_dev,
- )
+ status = self.install_erplibre()
# Re-update if launch installation
- self._update_directory_to_link(
- VENV_FILE, self.expected_venv_name
- )
- # self._update_directory_to_link(ADDONS_PATH, self.expected_addons_name)
+ if self.config.install_dev:
+ self._update_directory_to_link(
+ VENV_FILE, self.expected_venv_name
+ )
+ # self._update_directory_to_link(ADDONS_PATH, self.expected_addons_name)
elif self.config.is_in_switch:
_logger.info("Switch")
self.execute_log.append(f"System update")
@@ -485,17 +483,18 @@ class Update:
pycharm_is_installed = os.path.exists(".idea")
if not pycharm_is_installed or not self.execute_log:
return
- os.system("./.venv/bin/python ./script/ide/pycharm_configuration.py --init")
+ os.system(
+ "./.venv/bin/python ./script/ide/pycharm_configuration.py --init"
+ )
- def install_erplibre(self, install_system=False, install_dev=False):
- status = 0
+ def install_erplibre(self):
+ self.execute_log.append(f"Dev installation")
+ status = os.system("./script/install/install_locally_dev.sh")
+ return status
- if install_system:
- self.execute_log.append(f"System installation")
- status = os.system("./script/install/install_dev.sh")
- if install_dev and not status:
- self.execute_log.append(f"Dev installation")
- status = os.system("./script/install/install_locally_dev.sh")
+ def install_system(self):
+ self.execute_log.append(f"System installation")
+ status = os.system("./script/install/install_dev.sh")
return status
def update_link_file(
@@ -688,12 +687,20 @@ def main():
update.validate_version()
_logger.info("Validate environment")
- status = update.validate_environment()
- if update.config.force_install or not status:
+ status = 0
+ if update.config.install_dev or update.config.is_in_switch:
+ status = update.validate_environment()
+ if update.config.install:
+ status = update.install_system()
+ if (
+ update.config.force_install
+ or update.config.install_dev
+ or update.config.is_in_switch
+ ) and not status:
update.update_environment()
update.print_log()
- if update.config.is_in_installation:
+ if update.config.install_dev:
# Update pycharm configuration
update.pycharm_update()