Skip to content

Commit cddfa9e

Browse files
author
Thibault Bétrémieux
committed
docs(transaction_control): use a different code for Python 3.10 to check other libraries' versions
1 parent c391a6b commit cddfa9e

File tree

1 file changed

+46
-16
lines changed

1 file changed

+46
-16
lines changed

demos/transaction_control.ipynb

+46-16
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"outputs": [],
2121
"source": [
2222
"import pandas as pd\n",
23-
"from distutils.version import LooseVersion\n",
2423
"from pangres import upsert\n",
2524
"from sqlalchemy import create_engine, inspect as sqla_inspect, text\n",
2625
"from typing import Optional\n",
@@ -39,6 +38,37 @@
3938
"# Helpers"
4039
]
4140
},
41+
{
42+
"cell_type": "markdown",
43+
"id": "32d537c1-3a4d-4e0d-a467-43be15c91773",
44+
"metadata": {},
45+
"source": [
46+
"## Generic"
47+
]
48+
},
49+
{
50+
"cell_type": "code",
51+
"execution_count": 2,
52+
"id": "46fcfb29-6ef0-4a25-8af8-969ce9c0582c",
53+
"metadata": {},
54+
"outputs": [],
55+
"source": [
56+
"def version_equal_or_greater_than(version_string, minimal_version_string) -> bool:\n",
57+
" # different implementations of this function depending on the python version\n",
58+
" # check if Python >= 3.10\n",
59+
" import sys\n",
60+
" py_v = sys.version_info\n",
61+
" py_gt3_10 = (py_v.major > 3) or ((py_v.major >= 3) and (py_v.minor >= 10))\n",
62+
"\n",
63+
" # for Python >= 3.10 use packaging.version otherwise use distutils.version.LooseVersion\n",
64+
" if py_gt3_10:\n",
65+
" from packaging import version\n",
66+
" return version.parse(version_string) >= version.parse(minimal_version_string)\n",
67+
" else:\n",
68+
" from distutils.version import LooseVersion\n",
69+
" return LooseVersion(version_string) >= LooseVersion(minimal_version_string)"
70+
]
71+
},
4272
{
4373
"cell_type": "markdown",
4474
"id": "832b8ab1-1356-4e7f-bd5a-cfdfe4087cbe",
@@ -49,15 +79,15 @@
4979
},
5080
{
5181
"cell_type": "code",
52-
"execution_count": 2,
82+
"execution_count": 3,
5383
"id": "normal-material",
5484
"metadata": {},
5585
"outputs": [],
5686
"source": [
5787
"def table_exists(connection, table_name, schema=None) -> bool:\n",
5888
" insp = sqla_inspect(connection)\n",
5989
" import sqlalchemy\n",
60-
" if LooseVersion(sqlalchemy.__version__) >= LooseVersion(\"1.4.0\"):\n",
90+
" if version_equal_or_greater_than(sqlalchemy.__version__, '1.4.0'):\n",
6191
" return insp.has_table(table_name=table_name, schema=schema)\n",
6292
" else:\n",
6393
" return table_name in insp.get_table_names(schema=schema)\n",
@@ -97,7 +127,7 @@
97127
},
98128
{
99129
"cell_type": "code",
100-
"execution_count": 3,
130+
"execution_count": 4,
101131
"id": "d8a3f3d2-fa54-41d4-a070-25c34b760db1",
102132
"metadata": {},
103133
"outputs": [],
@@ -149,7 +179,7 @@
149179
},
150180
{
151181
"cell_type": "code",
152-
"execution_count": 4,
182+
"execution_count": 5,
153183
"id": "strategic-sugar",
154184
"metadata": {},
155185
"outputs": [],
@@ -205,7 +235,7 @@
205235
},
206236
{
207237
"cell_type": "code",
208-
"execution_count": 5,
238+
"execution_count": 6,
209239
"id": "seventh-reference",
210240
"metadata": {},
211241
"outputs": [
@@ -300,7 +330,7 @@
300330
},
301331
{
302332
"cell_type": "code",
303-
"execution_count": 6,
333+
"execution_count": 7,
304334
"id": "spiritual-spider",
305335
"metadata": {},
306336
"outputs": [
@@ -386,7 +416,7 @@
386416
},
387417
{
388418
"cell_type": "code",
389-
"execution_count": 7,
419+
"execution_count": 8,
390420
"id": "617a1ec1-b39c-45dd-903d-4520f6de71ec",
391421
"metadata": {},
392422
"outputs": [
@@ -484,7 +514,7 @@
484514
},
485515
{
486516
"cell_type": "code",
487-
"execution_count": 8,
517+
"execution_count": 9,
488518
"id": "204330eb-ce97-4fb4-8176-5fac3241ef0e",
489519
"metadata": {},
490520
"outputs": [
@@ -601,7 +631,7 @@
601631
},
602632
{
603633
"cell_type": "code",
604-
"execution_count": 9,
634+
"execution_count": 10,
605635
"id": "5e43fe2a-41f2-44b5-92ec-2d6828dbf08f",
606636
"metadata": {},
607637
"outputs": [],
@@ -611,7 +641,7 @@
611641
},
612642
{
613643
"cell_type": "code",
614-
"execution_count": 10,
644+
"execution_count": 11,
615645
"id": "55e4b5b6-af9c-4ba8-bc37-27ed9ec4a3c3",
616646
"metadata": {},
617647
"outputs": [
@@ -662,7 +692,7 @@
662692
},
663693
{
664694
"cell_type": "code",
665-
"execution_count": 11,
695+
"execution_count": 12,
666696
"id": "88ecb1b5-7960-4d60-8e7f-3c5cd3774005",
667697
"metadata": {},
668698
"outputs": [],
@@ -672,7 +702,7 @@
672702
},
673703
{
674704
"cell_type": "code",
675-
"execution_count": 12,
705+
"execution_count": 13,
676706
"id": "b0eeb2dd-7ab8-4f91-ae8b-91abe324a8f8",
677707
"metadata": {},
678708
"outputs": [
@@ -760,9 +790,9 @@
760790
],
761791
"metadata": {
762792
"kernelspec": {
763-
"display_name": "Python [conda env:pangres-dev]",
793+
"display_name": "Python 3 (ipykernel)",
764794
"language": "python",
765-
"name": "conda-env-pangres-dev-py"
795+
"name": "python3"
766796
},
767797
"language_info": {
768798
"codemirror_mode": {
@@ -774,7 +804,7 @@
774804
"name": "python",
775805
"nbconvert_exporter": "python",
776806
"pygments_lexer": "ipython3",
777-
"version": "3.9.7"
807+
"version": "3.10.1"
778808
}
779809
},
780810
"nbformat": 4,

0 commit comments

Comments
 (0)