Skip to content

Commit 671fa89

Browse files
committed
Release 1.3.3
1 parent a30ac39 commit 671fa89

File tree

7 files changed

+31
-8
lines changed

7 files changed

+31
-8
lines changed

docs/changelog.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
Changelog
33
#########
44

5+
Version 1.3.3
6+
=============
7+
8+
* Fix unregistered bug: Newly extended interface breaks the driver (affects usability of
9+
the driver with Firebird development versions).
10+
* New exception type `.FirebirdWarning`. From now on, warnings from engine are raised as
11+
`.FirebirdWarning` instead `Warning`. In some future release, warnings will not be raised,
12+
but reported via `warnings.warn` mechanism.
13+
514
Version 1.3.2
615
=============
716

docs/ref-types.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,15 @@ NotSupportedError
4848
-----------------
4949
.. autoexception:: NotSupportedError
5050

51+
FirebirdWarning
52+
---------------
53+
.. autoexception:: FirebirdWarning
54+
5155
This is the exception inheritance layout::
5256

5357
StandardError
5458
|__Warning
59+
|__FirebirdWarning
5560
|__Error
5661
|__InterfaceError
5762
|__DatabaseError

firebird/driver/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from .fbapi import load_api, get_api
4040
from .types import Error, InterfaceError, DatabaseError, DataError, \
4141
OperationalError, IntegrityError, InternalError, ProgrammingError, \
42-
NotSupportedError, \
42+
NotSupportedError, FirebirdWarning, \
4343
NetProtocol, DirectoryCode, PageSize, DBKeyScope, DbInfoCode, Features, ReplicaMode, \
4444
StmtInfoCode, TraInfoCode, TraInfoIsolation, TraInfoReadCommitted, \
4545
TraInfoAccess, TraIsolation, TraReadCommitted, TraLockResolution, TraAccessMode, \

firebird/driver/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ def __init__(self, *, user: str=None, password: str=None, role: str=None,
414414
# Available options:
415415
# AuthClient, WireCryptPlugin, Providers, ConnectionTimeout, WireCrypt,
416416
# WireConpression, DummyPacketInterval, RemoteServiceName, RemoteServicePort,
417-
# RemoteAuxPort, TcpNoNagle, IpcName, RemotePipeName
417+
# RemoteAuxPort, TcpNoNagle, IpcName, RemotePipeName, ClientBatchBuffer [FB4+]
418418
#: Configuration override
419419
self.config: Optional[str] = config
420420
#: List of authentication plugins override

firebird/driver/interfaces.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939
import sys
4040
import threading
4141
import datetime
42+
#from warnings import warn
4243
from ctypes import memmove, memset, create_string_buffer, cast, byref, string_at, sizeof, \
4344
c_char_p, c_void_p, c_byte, c_ulong
44-
from .types import Error, DatabaseError, InterfaceError, BCD, \
45+
from .types import Error, DatabaseError, InterfaceError, FirebirdWarning, BCD, \
4546
StateResult, DirectoryCode, BlobInfoCode, SQLDataType, XpbKind, \
4647
StatementType, StateFlag, CursorFlag, StatementFlag, PreparePrefetchFlag, get_timezone
4748
from . import fbapi as a
@@ -67,7 +68,7 @@ class iVersionedMeta(type):
6768
def __call__(cls: iVersioned, intf):
6869
v = intf.contents.vtable.contents.version
6970
for c in cls.__mro__:
70-
if getattr(c, 'VERSION', 0) == v:
71+
if getattr(c, 'VERSION', 0) <= v:
7172
return super(iVersionedMeta, iVersionedMeta).__call__(c, intf)
7273

7374
# IVersioned(1)
@@ -76,9 +77,9 @@ class iVersioned(metaclass=iVersionedMeta):
7677
VERSION = 1
7778
def __init__(self, intf):
7879
self._as_parameter_ = intf
79-
if intf and self.vtable.version != self.VERSION: # pragma: no cover
80+
if intf and self.vtable.version < self.VERSION: # pragma: no cover
8081
raise InterfaceError(f"Wrong interface version {self.vtable.version}, expected {self.VERSION}")
81-
def __report(self, cls: Union[Error, Warning], vector_ptr: a.ISC_STATUS_ARRAY_PTR) -> None:
82+
def __report(self, cls: Union[Error, FirebirdWarning], vector_ptr: a.ISC_STATUS_ARRAY_PTR) -> None:
8283
msg = _util.format_status(self.status)
8384
sqlstate = create_string_buffer(6)
8485
a.api.fb_sqlstate(sqlstate, vector_ptr)
@@ -103,7 +104,9 @@ def _check(self) -> None:
103104
if StateFlag.ERRORS in state:
104105
raise self.__report(DatabaseError, self.status.get_errors())
105106
if StateFlag.WARNINGS in state: # pragma: no cover
106-
raise self.__report(Warning, self.status.get_warning())
107+
raise self.__report(FirebirdWarning, self.status.get_warning())
108+
#warn(self.__report(FirebirdWarning, self.status.get_warning()).args[0],
109+
#FirebirdWarning, 2)
107110
@property
108111
def status(self) -> iStatus:
109112
"iStatus for interface"

firebird/driver/types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ class NotSupportedError(DatabaseError):
110110
supported by the database.
111111
"""
112112

113+
# Firebird engine warning via Python Warning mechanism
114+
115+
class FirebirdWarning(Warning):
116+
"""Warning from Firebird engine.
117+
"""
118+
113119
# Enums
114120

115121
class NetProtocol(IntEnum):

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ all-files=True
55

66
[metadata]
77
name = firebird-driver
8-
version = 1.3.2
8+
version = 1.3.3
99
description = Firebird driver
1010
long_description = file: README.rst
1111
long_description_content_type = text/x-rst; charset=UTF-8

0 commit comments

Comments
 (0)