orange3-data-helpers 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- orange3_data_helpers-0.2.4/LICENSE +0 -0
- orange3_data_helpers-0.2.4/MANIFEST.in +5 -0
- orange3_data_helpers-0.2.4/PKG-INFO +36 -0
- orange3_data_helpers-0.2.4/README.md +4 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/PKG-INFO +36 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/SOURCES.txt +34 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/dependency_links.txt +1 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/entry_points.txt +5 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/requires.txt +22 -0
- orange3_data_helpers-0.2.4/orange3_data_helpers.egg-info/top_level.txt +1 -0
- orange3_data_helpers-0.2.4/orangecontrib/__init__.py +3 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/__init__.py +30 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/utils/driver_installer.py +35 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/__init__.py +3 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/addon_icon.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/ai_insight.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/data_overview.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/db_query.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/get_data_api.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/query_loader.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/save_data.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/select_row.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/icons/table_structure.png +0 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_data_overview.py +550 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_data_selected.py +380 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_data_structure.py +373 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_db_query.py +459 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_db_restore.py +1819 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_db_type_inspector.py +689 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_join_data.py +369 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_query_loader.py +612 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_query_table.py +408 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_save_big.py +585 -0
- orange3_data_helpers-0.2.4/orangecontrib/datahelpers/widgets/ow_table_pattern_browser.py +458 -0
- orange3_data_helpers-0.2.4/pyproject.toml +56 -0
- orange3_data_helpers-0.2.4/setup.cfg +4 -0
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: orange3-data-helpers
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Data Helpers – Add-on Orange untuk Database Administrator: koneksi, schema, size, query.
|
|
5
|
+
Author-email: Devi Ardiana <deviardn@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/deviardn/orange3-data-helpers
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: orange3>=3.36.0
|
|
15
|
+
Requires-Dist: pandas>=1.5.0
|
|
16
|
+
Requires-Dist: numpy>=1.22.0
|
|
17
|
+
Requires-Dist: sqlalchemy>=2.0
|
|
18
|
+
Requires-Dist: PyQt5>=5.15
|
|
19
|
+
Requires-Dist: PyQtWebEngine>=5.15
|
|
20
|
+
Requires-Dist: PyYAML>=6.0
|
|
21
|
+
Provides-Extra: postgresql
|
|
22
|
+
Requires-Dist: psycopg2-binary>=2.9; extra == "postgresql"
|
|
23
|
+
Provides-Extra: mysql
|
|
24
|
+
Requires-Dist: pymysql>=1.0; extra == "mysql"
|
|
25
|
+
Provides-Extra: mssql
|
|
26
|
+
Requires-Dist: pyodbc>=4.0; extra == "mssql"
|
|
27
|
+
Provides-Extra: clickhouse
|
|
28
|
+
Requires-Dist: clickhouse-connect>=0.7; extra == "clickhouse"
|
|
29
|
+
Provides-Extra: oracle
|
|
30
|
+
Requires-Dist: cx-Oracle>=8.3; extra == "oracle"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
## 📦 Orange3 Data Helpers
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
Copyright (c) 2025 BPK RI
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: orange3-data-helpers
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Data Helpers – Add-on Orange untuk Database Administrator: koneksi, schema, size, query.
|
|
5
|
+
Author-email: Devi Ardiana <deviardn@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/deviardn/orange3-data-helpers
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: orange3>=3.36.0
|
|
15
|
+
Requires-Dist: pandas>=1.5.0
|
|
16
|
+
Requires-Dist: numpy>=1.22.0
|
|
17
|
+
Requires-Dist: sqlalchemy>=2.0
|
|
18
|
+
Requires-Dist: PyQt5>=5.15
|
|
19
|
+
Requires-Dist: PyQtWebEngine>=5.15
|
|
20
|
+
Requires-Dist: PyYAML>=6.0
|
|
21
|
+
Provides-Extra: postgresql
|
|
22
|
+
Requires-Dist: psycopg2-binary>=2.9; extra == "postgresql"
|
|
23
|
+
Provides-Extra: mysql
|
|
24
|
+
Requires-Dist: pymysql>=1.0; extra == "mysql"
|
|
25
|
+
Provides-Extra: mssql
|
|
26
|
+
Requires-Dist: pyodbc>=4.0; extra == "mssql"
|
|
27
|
+
Provides-Extra: clickhouse
|
|
28
|
+
Requires-Dist: clickhouse-connect>=0.7; extra == "clickhouse"
|
|
29
|
+
Provides-Extra: oracle
|
|
30
|
+
Requires-Dist: cx-Oracle>=8.3; extra == "oracle"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
## 📦 Orange3 Data Helpers
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
Copyright (c) 2025 BPK RI
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
pyproject.toml
|
|
5
|
+
orange3_data_helpers.egg-info/PKG-INFO
|
|
6
|
+
orange3_data_helpers.egg-info/SOURCES.txt
|
|
7
|
+
orange3_data_helpers.egg-info/dependency_links.txt
|
|
8
|
+
orange3_data_helpers.egg-info/entry_points.txt
|
|
9
|
+
orange3_data_helpers.egg-info/requires.txt
|
|
10
|
+
orange3_data_helpers.egg-info/top_level.txt
|
|
11
|
+
orangecontrib/__init__.py
|
|
12
|
+
orangecontrib/datahelpers/__init__.py
|
|
13
|
+
orangecontrib/datahelpers/utils/driver_installer.py
|
|
14
|
+
orangecontrib/datahelpers/widgets/__init__.py
|
|
15
|
+
orangecontrib/datahelpers/widgets/ow_data_overview.py
|
|
16
|
+
orangecontrib/datahelpers/widgets/ow_data_selected.py
|
|
17
|
+
orangecontrib/datahelpers/widgets/ow_data_structure.py
|
|
18
|
+
orangecontrib/datahelpers/widgets/ow_db_query.py
|
|
19
|
+
orangecontrib/datahelpers/widgets/ow_db_restore.py
|
|
20
|
+
orangecontrib/datahelpers/widgets/ow_db_type_inspector.py
|
|
21
|
+
orangecontrib/datahelpers/widgets/ow_join_data.py
|
|
22
|
+
orangecontrib/datahelpers/widgets/ow_query_loader.py
|
|
23
|
+
orangecontrib/datahelpers/widgets/ow_query_table.py
|
|
24
|
+
orangecontrib/datahelpers/widgets/ow_save_big.py
|
|
25
|
+
orangecontrib/datahelpers/widgets/ow_table_pattern_browser.py
|
|
26
|
+
orangecontrib/datahelpers/widgets/icons/addon_icon.png
|
|
27
|
+
orangecontrib/datahelpers/widgets/icons/ai_insight.png
|
|
28
|
+
orangecontrib/datahelpers/widgets/icons/data_overview.png
|
|
29
|
+
orangecontrib/datahelpers/widgets/icons/db_query.png
|
|
30
|
+
orangecontrib/datahelpers/widgets/icons/get_data_api.png
|
|
31
|
+
orangecontrib/datahelpers/widgets/icons/query_loader.png
|
|
32
|
+
orangecontrib/datahelpers/widgets/icons/save_data.png
|
|
33
|
+
orangecontrib/datahelpers/widgets/icons/select_row.png
|
|
34
|
+
orangecontrib/datahelpers/widgets/icons/table_structure.png
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
orange3>=3.36.0
|
|
2
|
+
pandas>=1.5.0
|
|
3
|
+
numpy>=1.22.0
|
|
4
|
+
sqlalchemy>=2.0
|
|
5
|
+
PyQt5>=5.15
|
|
6
|
+
PyQtWebEngine>=5.15
|
|
7
|
+
PyYAML>=6.0
|
|
8
|
+
|
|
9
|
+
[clickhouse]
|
|
10
|
+
clickhouse-connect>=0.7
|
|
11
|
+
|
|
12
|
+
[mssql]
|
|
13
|
+
pyodbc>=4.0
|
|
14
|
+
|
|
15
|
+
[mysql]
|
|
16
|
+
pymysql>=1.0
|
|
17
|
+
|
|
18
|
+
[oracle]
|
|
19
|
+
cx-Oracle>=8.3
|
|
20
|
+
|
|
21
|
+
[postgresql]
|
|
22
|
+
psycopg2-binary>=2.9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
orangecontrib
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from importlib.metadata import version, PackageNotFoundError
|
|
2
|
+
|
|
3
|
+
try:
|
|
4
|
+
__version__ = version("orange3-data-helpers")
|
|
5
|
+
except PackageNotFoundError:
|
|
6
|
+
__version__ = "0.0.1"
|
|
7
|
+
|
|
8
|
+
NAME = "Data Helpers"
|
|
9
|
+
DESCRIPTION = "Widget untuk koneksi DB, query, struktur, dan ekspor data besar."
|
|
10
|
+
BACKGROUND = "#f6612d"
|
|
11
|
+
ICON = "icons/addon_icon.png"
|
|
12
|
+
|
|
13
|
+
import warnings
|
|
14
|
+
|
|
15
|
+
# Suppress FutureWarning dari pandas soal downcasting .fillna
|
|
16
|
+
warnings.filterwarnings(
|
|
17
|
+
"ignore",
|
|
18
|
+
message="Downcasting object dtype arrays on .fillna",
|
|
19
|
+
category=FutureWarning,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Suppress UserWarning ketika pandas tidak bisa infer format datetime
|
|
23
|
+
warnings.filterwarnings(
|
|
24
|
+
"ignore",
|
|
25
|
+
message="Could not infer format, so each element will be parsed individually",
|
|
26
|
+
category=UserWarning,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import importlib.util
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
from typing import Tuple, Optional
|
|
5
|
+
|
|
6
|
+
DRIVER_MATRIX = {
|
|
7
|
+
"PostgreSQL": ("psycopg2", "psycopg2-binary"),
|
|
8
|
+
"MySQL (PyMySQL)": ("pymysql", "pymysql"),
|
|
9
|
+
"SQLite": ("sqlite3", None),
|
|
10
|
+
"SQL Server (pyodbc)": ("pyodbc", "pyodbc"), # butuh ODBC driver OS
|
|
11
|
+
"ClickHouse": ("clickhouse_connect", "clickhouse-connect"),
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
def is_installed(module_name: str) -> bool:
|
|
15
|
+
return importlib.util.find_spec(module_name) is not None
|
|
16
|
+
|
|
17
|
+
def pip_install(pkg: Optional[str]) -> Tuple[bool, str]:
|
|
18
|
+
if not pkg:
|
|
19
|
+
return True, "No pip package required."
|
|
20
|
+
proc = subprocess.run(
|
|
21
|
+
[sys.executable, "-m", "pip", "install", pkg],
|
|
22
|
+
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
|
|
23
|
+
)
|
|
24
|
+
return proc.returncode == 0, proc.stdout
|
|
25
|
+
|
|
26
|
+
def ensure_driver(db_kind: str) -> Tuple[bool, str, Optional[str]]:
|
|
27
|
+
if db_kind not in DRIVER_MATRIX:
|
|
28
|
+
return False, f"Unsupported DB type: {db_kind}", None
|
|
29
|
+
module_name, pip_pkg = DRIVER_MATRIX[db_kind]
|
|
30
|
+
if is_installed(module_name):
|
|
31
|
+
return True, f"Driver {module_name} is available.", module_name
|
|
32
|
+
ok, log = pip_install(pip_pkg)
|
|
33
|
+
if ok and is_installed(module_name):
|
|
34
|
+
return True, f"Installed {pip_pkg}.\n{log}", module_name
|
|
35
|
+
return False, f"Failed installing {pip_pkg}.\n{log}", None
|
|
Binary file
|
|
Binary file
|
|
Binary file
|