dinao 2.2.0.dev180__tar.gz → 2.2.0.dev182__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.
Files changed (37) hide show
  1. {dinao-2.2.0.dev180/dinao.egg-info → dinao-2.2.0.dev182}/PKG-INFO +1 -1
  2. dinao-2.2.0.dev182/dinao/__version__.py +2 -0
  3. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/mappers.py +17 -2
  4. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182/dinao.egg-info}/PKG-INFO +1 -1
  5. dinao-2.2.0.dev180/dinao/__version__.py +0 -2
  6. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/AUTHORS +0 -0
  7. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/LICENSE +0 -0
  8. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/README.md +0 -0
  9. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/__init__.py +0 -0
  10. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/__init__.py +0 -0
  11. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/base.py +0 -0
  12. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/errors.py +0 -0
  13. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/mariadb.py +0 -0
  14. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/mysql.py +0 -0
  15. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/postgres/__init__.py +0 -0
  16. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/postgres/asyncpg.py +0 -0
  17. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/postgres/base.py +0 -0
  18. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/postgres/psycopg2.py +0 -0
  19. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/postgres/psycopg3.py +0 -0
  20. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/sqlite/__init__.py +0 -0
  21. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/sqlite/aiosqlite.py +0 -0
  22. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/sqlite/base.py +0 -0
  23. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/backend/sqlite/stdlib.py +0 -0
  24. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/__init__.py +0 -0
  25. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/binders/__init__.py +0 -0
  26. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/binders/async_.py +0 -0
  27. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/binders/base.py +0 -0
  28. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/binders/sync.py +0 -0
  29. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/errors.py +0 -0
  30. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/binding/templating.py +0 -0
  31. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao/mung.py +0 -0
  32. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao.egg-info/SOURCES.txt +0 -0
  33. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao.egg-info/dependency_links.txt +0 -0
  34. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao.egg-info/requires.txt +0 -0
  35. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/dinao.egg-info/top_level.txt +0 -0
  36. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/pyproject.toml +0 -0
  37. {dinao-2.2.0.dev180 → dinao-2.2.0.dev182}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dinao
3
- Version: 2.2.0.dev180
3
+ Version: 2.2.0.dev182
4
4
  Summary: A simple database API
5
5
  Author-email: Jim Carreer <jim.carreer+dinao@gmail.com>
6
6
  License-Expression: ISC
@@ -0,0 +1,2 @@
1
+ # noqa: D100
2
+ __version__ = "2.2.0.dev182"
@@ -69,10 +69,25 @@ class ClassRowMapper(DictRowMapper):
69
69
  class SingleValueRowMapper(RowMapper):
70
70
  """Implements a row mapper for a primitive type."""
71
71
 
72
+ def __init__(self, mapped_type: typing.Type):
73
+ """Construct a single value row mapper that casts the result to the target type.
74
+
75
+ :param mapped_type: the primitive type to cast the result to
76
+ """
77
+ self._mapped_type = mapped_type
78
+
72
79
  def __call__(self, row: typing.Tuple, description: typing.Tuple[ColumnDescriptor, ...]): # noqa: D102
73
80
  if len(row) > 1:
74
81
  raise TooManyValuesError(f"Too many values, expected 1, got {len(row)}")
75
- return row[0]
82
+ value = row[0]
83
+ if value is None:
84
+ return None
85
+ if isinstance(value, self._mapped_type):
86
+ return value
87
+ # SQLite special case, we should consider better adapter handling
88
+ if self._mapped_type is datetime and isinstance(value, str):
89
+ return datetime.fromisoformat(value)
90
+ return self._mapped_type(value)
76
91
 
77
92
 
78
93
  def get_row_mapper(row_type: typing.Type) -> typing.Optional[RowMapper]:
@@ -92,7 +107,7 @@ def get_row_mapper(row_type: typing.Type) -> typing.Optional[RowMapper]:
92
107
  elif row_type in DICT_GENERICS:
93
108
  return DictRowMapper()
94
109
  elif row_type in NATIVE_SINGLE:
95
- return SingleValueRowMapper()
110
+ return SingleValueRowMapper(row_type)
96
111
  # Exclude typing special forms that look like classes in Python 3.14+
97
112
  # Bare Union/Optional without type parameters cannot be mapped
98
113
  elif row_type in TYPING_SPECIAL_FORMS:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dinao
3
- Version: 2.2.0.dev180
3
+ Version: 2.2.0.dev182
4
4
  Summary: A simple database API
5
5
  Author-email: Jim Carreer <jim.carreer+dinao@gmail.com>
6
6
  License-Expression: ISC
@@ -1,2 +0,0 @@
1
- # noqa: D100
2
- __version__ = "2.2.0.dev180"
File without changes
File without changes
File without changes
File without changes
File without changes