dapper-sqls 0.9.3__py3-none-any.whl → 0.9.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
dapper_sqls/config.py CHANGED
@@ -1,137 +1,6 @@
1
1
  # -*- coding: latin -*-
2
2
  from .models import ConnectionStringData
3
3
  import sys
4
- from _typeshed import ReadableBuffer, Unused
5
- from types import TracebackType
6
- from typing import Any, Final, Literal, final, overload
7
- from typing_extensions import Self, TypeAlias
8
-
9
- if sys.platform == "win32":
10
- # Though this class has a __name__ of PyHKEY, it's exposed as HKEYType for some reason
11
- @final
12
- class HKEYType:
13
- def __bool__(self) -> bool: ...
14
- def __int__(self) -> int: ...
15
- def __enter__(self) -> Self: ...
16
- def __exit__(
17
- self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None
18
- ) -> bool | None: ...
19
- def Close(self) -> None: ...
20
- def Detach(self) -> int: ...
21
- def __hash__(self) -> int: ...
22
- @property
23
- def handle(self) -> int: ...
24
-
25
- _KeyType: TypeAlias = HKEYType | int
26
- def CloseKey(hkey: _KeyType, /) -> None: ...
27
- def ConnectRegistry(computer_name: str | None, key: _KeyType, /) -> HKEYType: ...
28
- def CreateKey(key: _KeyType, sub_key: str | None, /) -> HKEYType: ...
29
- def CreateKeyEx(key: _KeyType, sub_key: str | None, reserved: int = 0, access: int = 131078) -> HKEYType: ...
30
- def DeleteKey(key: _KeyType, sub_key: str, /) -> None: ...
31
- def DeleteKeyEx(key: _KeyType, sub_key: str, access: int = 256, reserved: int = 0) -> None: ...
32
- def DeleteValue(key: _KeyType, value: str, /) -> None: ...
33
- def EnumKey(key: _KeyType, index: int, /) -> str: ...
34
- def EnumValue(key: _KeyType, index: int, /) -> tuple[str, Any, int]: ...
35
- def ExpandEnvironmentStrings(string: str, /) -> str: ...
36
- def FlushKey(key: _KeyType, /) -> None: ...
37
- def LoadKey(key: _KeyType, sub_key: str, file_name: str, /) -> None: ...
38
- def OpenKey(key: _KeyType, sub_key: str, reserved: int = 0, access: int = 131097) -> HKEYType: ...
39
- def OpenKeyEx(key: _KeyType, sub_key: str, reserved: int = 0, access: int = 131097) -> HKEYType: ...
40
- def QueryInfoKey(key: _KeyType, /) -> tuple[int, int, int]: ...
41
- def QueryValue(key: _KeyType, sub_key: str | None, /) -> str: ...
42
- def QueryValueEx(key: _KeyType, name: str, /) -> tuple[Any, int]: ...
43
- def SaveKey(key: _KeyType, file_name: str, /) -> None: ...
44
- def SetValue(key: _KeyType, sub_key: str, type: int, value: str, /) -> None: ...
45
- @overload # type=REG_DWORD|REG_QWORD
46
- def SetValueEx(
47
- key: _KeyType, value_name: str | None, reserved: Unused, type: Literal[4, 5], value: int | None, /
48
- ) -> None: ...
49
- @overload # type=REG_SZ|REG_EXPAND_SZ
50
- def SetValueEx(
51
- key: _KeyType, value_name: str | None, reserved: Unused, type: Literal[1, 2], value: str | None, /
52
- ) -> None: ...
53
- @overload # type=REG_MULTI_SZ
54
- def SetValueEx(
55
- key: _KeyType, value_name: str | None, reserved: Unused, type: Literal[7], value: list[str] | None, /
56
- ) -> None: ...
57
- @overload # type=REG_BINARY and everything else
58
- def SetValueEx(
59
- key: _KeyType,
60
- value_name: str | None,
61
- reserved: Unused,
62
- type: Literal[0, 3, 8, 9, 10, 11],
63
- value: ReadableBuffer | None,
64
- /,
65
- ) -> None: ...
66
- @overload # Unknown or undocumented
67
- def SetValueEx(
68
- key: _KeyType,
69
- value_name: str | None,
70
- reserved: Unused,
71
- type: int,
72
- value: int | str | list[str] | ReadableBuffer | None,
73
- /,
74
- ) -> None: ...
75
- def DisableReflectionKey(key: _KeyType, /) -> None: ...
76
- def EnableReflectionKey(key: _KeyType, /) -> None: ...
77
- def QueryReflectionKey(key: _KeyType, /) -> bool: ...
78
-
79
- HKEY_CLASSES_ROOT: int
80
- HKEY_CURRENT_USER: int
81
- HKEY_LOCAL_MACHINE: int
82
- HKEY_USERS: int
83
- HKEY_PERFORMANCE_DATA: int
84
- HKEY_CURRENT_CONFIG: int
85
- HKEY_DYN_DATA: int
86
-
87
- KEY_ALL_ACCESS: Final = 983103
88
- KEY_WRITE: Final = 131078
89
- KEY_READ: Final = 131097
90
- KEY_EXECUTE: Final = 131097
91
- KEY_QUERY_VALUE: Final = 1
92
- KEY_SET_VALUE: Final = 2
93
- KEY_CREATE_SUB_KEY: Final = 4
94
- KEY_ENUMERATE_SUB_KEYS: Final = 8
95
- KEY_NOTIFY: Final = 16
96
- KEY_CREATE_LINK: Final = 32
97
-
98
- KEY_WOW64_64KEY: Final = 256
99
- KEY_WOW64_32KEY: Final = 512
100
-
101
- REG_BINARY: Final = 3
102
- REG_DWORD: Final = 4
103
- REG_DWORD_LITTLE_ENDIAN: Final = 4
104
- REG_DWORD_BIG_ENDIAN: Final = 5
105
- REG_EXPAND_SZ: Final = 2
106
- REG_LINK: Final = 6
107
- REG_MULTI_SZ: Final = 7
108
- REG_NONE: Final = 0
109
- REG_QWORD: Final = 11
110
- REG_QWORD_LITTLE_ENDIAN: Final = 11
111
- REG_RESOURCE_LIST: Final = 8
112
- REG_FULL_RESOURCE_DESCRIPTOR: Final = 9
113
- REG_RESOURCE_REQUIREMENTS_LIST: Final = 10
114
- REG_SZ: Final = 1
115
-
116
- REG_CREATED_NEW_KEY: Final = 1 # undocumented
117
- REG_LEGAL_CHANGE_FILTER: Final = 268435471 # undocumented
118
- REG_LEGAL_OPTION: Final = 31 # undocumented
119
- REG_NOTIFY_CHANGE_ATTRIBUTES: Final = 2 # undocumented
120
- REG_NOTIFY_CHANGE_LAST_SET: Final = 4 # undocumented
121
- REG_NOTIFY_CHANGE_NAME: Final = 1 # undocumented
122
- REG_NOTIFY_CHANGE_SECURITY: Final = 8 # undocumented
123
- REG_NO_LAZY_FLUSH: Final = 4 # undocumented
124
- REG_OPENED_EXISTING_KEY: Final = 2 # undocumented
125
- REG_OPTION_BACKUP_RESTORE: Final = 4 # undocumented
126
- REG_OPTION_CREATE_LINK: Final = 2 # undocumented
127
- REG_OPTION_NON_VOLATILE: Final = 0 # undocumented
128
- REG_OPTION_OPEN_LINK: Final = 8 # undocumented
129
- REG_OPTION_RESERVED: Final = 0 # undocumented
130
- REG_OPTION_VOLATILE: Final = 1 # undocumented
131
- REG_REFRESH_HIVE: Final = 2 # undocumented
132
- REG_WHOLE_HIVE_VOLATILE: Final = 1 # undocumented
133
-
134
- error = OSError
135
4
 
136
5
  class Config(object):
137
6
  def __init__(self, server: str, database: str, username: str, password: str, sql_version: int = None, api_environment=False, default_attempts=1, default_wait_timeout=2):
@@ -200,38 +69,47 @@ class Config(object):
200
69
  def sql_version(self, value):
201
70
  if not isinstance(value, int) and value is not None:
202
71
  raise ValueError("The value assigned to sql_version must be of type integer or None")
203
- self._sql_version = value
204
-
205
72
 
206
73
  @staticmethod
207
74
  def get_all_odbc_driver_versions():
208
75
  driver_versions = []
209
- try:
210
- key_path = r"SOFTWARE\ODBC\ODBCINST.INI"
211
- key = OpenKey(HKEY_LOCAL_MACHINE, key_path)
212
76
 
213
- i = 0
214
- while True:
215
- try:
216
- subkey_name = EnumKey(key, i)
217
- subkey = OpenKey(key, subkey_name)
77
+ # Verificar se o sistema é Windows e o módulo winreg está disponível
78
+ if sys.platform == "win32":
79
+ try:
80
+ import winreg # Importar o módulo winreg se estiver disponível
81
+
82
+ # Abrir a chave onde as informações sobre os drivers ODBC estão armazenadas
83
+ key_path = r"SOFTWARE\ODBC\ODBCINST.INI"
84
+ key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path)
218
85
 
86
+ # Iterar sobre as subchaves para encontrar os drivers específicos
87
+ i = 0
88
+ while True:
219
89
  try:
220
- driver_name, _ = QueryValueEx(subkey, "Driver")
221
- if subkey_name.startswith('ODBC Driver'):
222
- driver_versions.append(subkey_name)
223
-
224
- except FileNotFoundError:
225
- pass
90
+ subkey_name = winreg.EnumKey(key, i)
91
+ subkey = winreg.OpenKey(key, subkey_name)
92
+
93
+ # Verificar se a subchave contém o valor 'Driver'
94
+ try:
95
+ driver_name, _ = winreg.QueryValueEx(subkey, "Driver")
96
+ if subkey_name.startswith('ODBC Driver'):
97
+ driver_versions.append(subkey_name)
98
+
99
+ except FileNotFoundError:
100
+ pass # A subchave não possui a entrada 'Driver'
101
+
102
+ i += 1
103
+ except OSError:
104
+ break
226
105
 
227
- i += 1
228
- except OSError:
229
- break
106
+ except Exception as e:
107
+ print(f"Erro ao acessar o registro: {e}")
108
+ else:
109
+ print("A funcionalidade de obtenção de versões de drivers ODBC não é suportada neste sistema operacional.")
230
110
 
231
- except Exception as e:
232
- print(f"Erro ao acessar o registro: {e}")
111
+ return sorted(driver_versions, key=lambda x: int(x.split()[-4]), reverse=True) if driver_versions else []
233
112
 
234
- return sorted(driver_versions, key=lambda x: int(x.split()[-4]), reverse=True)
235
113
 
236
114
 
237
115
 
dapper_sqls/utils.py CHANGED
@@ -1,4 +1,4 @@
1
-
1
+ # -*- coding: latin -*-
2
2
 
3
3
  def get_dict_args(local : dict , ignore_args = [], ignore_values_none = True):
4
4
  if ignore_values_none:
@@ -0,0 +1,16 @@
1
+ Metadata-Version: 2.1
2
+ Name: dapper-sqls
3
+ Version: 0.9.5
4
+ Summary: UNKNOWN
5
+ Home-page: UNKNOWN
6
+ Author: Samuel Semedo
7
+ License: UNKNOWN
8
+ Platform: UNKNOWN
9
+ Requires-Dist: annotated-types ==0.7.0
10
+ Requires-Dist: pydantic ==2.10.2
11
+ Requires-Dist: pydantic-core ==2.27.1
12
+ Requires-Dist: pyodbc ==5.2.0
13
+ Requires-Dist: typing-extensions ==4.12.2
14
+
15
+ UNKNOWN
16
+
@@ -1,9 +1,8 @@
1
1
  dapper_sqls/__init__.py,sha256=KzUmxAhkQiQIu7Oa1yRtvRhCbsxg29aNa-MszPL6PrY,207
2
2
  dapper_sqls/_types.py,sha256=GM_qDsjKGRSFC0NsU5hkqLKH-ydVKJ-1TgEkxQzi4Hw,181
3
- dapper_sqls/config.py,sha256=PvkX-4Wy7a39I_6d3GPF8CzmaT2DVSq8CIusGQOGyZg,9518
3
+ dapper_sqls/config.py,sha256=z370PREmTu8dpZV4Fm6ZyWrQBDJeb0xMr28I-ZCGRIo,4633
4
4
  dapper_sqls/decorators.py,sha256=5mrabdIv4yZpwmN1XDjAhDXIU8ruoxww6b9X7fmRtE8,2655
5
- dapper_sqls/parser.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- dapper_sqls/utils.py,sha256=vRN-g-xify34YR08OSUF18L58jAjffoc0ixOJY0FcI4,3437
5
+ dapper_sqls/utils.py,sha256=4XCK-5Ikf4bJ18EewhK2UCDR_xi3TMYpFScJJfYjulI,3460
7
6
  dapper_sqls/async_dapper/__init__.py,sha256=lBXRyXMCaiwgcK5TCw5rg-niwFS4GcZVW5Q2enKcS-0,47
8
7
  dapper_sqls/async_dapper/async_dapper.py,sha256=fcJbscwJHCS4_cZJKwfzTJPkEaVBnSc7p8MpPEqD3-0,2462
9
8
  dapper_sqls/async_dapper/async_executors.py,sha256=djBDfpz3Dg2sx7Ct29khmbeRtwrEgQb_v-HOTUFGPh4,13164
@@ -25,7 +24,7 @@ dapper_sqls/models/result.py,sha256=4yCJmQEy87gPOi6sUdrXD3xtSWAbXeAX_uR2Ou6EYpg,
25
24
  dapper_sqls/sqlite/__init__.py,sha256=VifBg1-pubsrYs5jm3ZsgtIqM5JzeNDS2tdInAKvjwM,49
26
25
  dapper_sqls/sqlite/local_database.py,sha256=PpIokP09sfIT8JbwRVi0OxegrubDwOVXvajO4lU1U4g,9873
27
26
  dapper_sqls/sqlite/models.py,sha256=QwV771SexBq5j92Ls9bgcuR1ucDx9ARazj9JkhMTSB0,712
28
- dapper_sqls-0.9.3.dist-info/METADATA,sha256=eZIXNvtd0PWI3Z7q52pdZpcokI0i9fR9RcQbbJ8JJ8A,169
29
- dapper_sqls-0.9.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
30
- dapper_sqls-0.9.3.dist-info/top_level.txt,sha256=Pe1YqCPngnYbSVdhJyDrdFWHFCOqBvFW8WK7kTaIax4,12
31
- dapper_sqls-0.9.3.dist-info/RECORD,,
27
+ dapper_sqls-0.9.5.dist-info/METADATA,sha256=XvXm_sgs_txo7DpqiXjXYLgt2OMlvpbmeCOBzEg5ELs,356
28
+ dapper_sqls-0.9.5.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
29
+ dapper_sqls-0.9.5.dist-info/top_level.txt,sha256=Pe1YqCPngnYbSVdhJyDrdFWHFCOqBvFW8WK7kTaIax4,12
30
+ dapper_sqls-0.9.5.dist-info/RECORD,,
dapper_sqls/parser.py DELETED
File without changes
@@ -1,11 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: dapper-sqls
3
- Version: 0.9.3
4
- Summary: UNKNOWN
5
- Home-page: UNKNOWN
6
- Author: Samuel Semedo
7
- License: UNKNOWN
8
- Platform: UNKNOWN
9
-
10
- UNKNOWN
11
-