sqlite-database 0.7.10__tar.gz → 0.7.11__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 (121) hide show
  1. {sqlite_database-0.7.10/sqlite_database.egg-info → sqlite_database-0.7.11}/PKG-INFO +1 -1
  2. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/__init__.py +1 -1
  3. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/_utils.py +6 -3
  4. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/query_builder.py +22 -5
  5. {sqlite_database-0.7.10 → sqlite_database-0.7.11/sqlite_database.egg-info}/PKG-INFO +1 -1
  6. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.editorconfig +0 -0
  7. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/ISSUE_TEMPLATE/question.md +0 -0
  10. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/dependabot.yml +0 -0
  11. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/workflows/pylint.yml +0 -0
  12. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/workflows/pytest.yml +0 -0
  13. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.github/workflows/python-publish.yml +0 -0
  14. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.gitignore +0 -0
  15. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.readthedocs.yaml +0 -0
  16. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/.vscode/settings.json +0 -0
  17. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/History.md +0 -0
  18. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/LICENSE +0 -0
  19. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/README.md +0 -0
  20. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/TODO.md +0 -0
  21. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/activate +0 -0
  22. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/check.bat +0 -0
  23. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/check.sh +0 -0
  24. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/include/utility.bash +0 -0
  25. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/install.bash +0 -0
  26. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/need-installed/activate +0 -0
  27. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/need-installed/pre-commit +0 -0
  28. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/bin/summarize-pylint.py +0 -0
  29. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/dev-config/black.toml +0 -0
  30. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/dev-config/pylint.toml +0 -0
  31. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/dev-config/pytest.ini +0 -0
  32. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/dev-requirements.txt +0 -0
  33. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/DatabaseModes.md +0 -0
  34. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/Makefile +0 -0
  35. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/ModelAPI.md +0 -0
  36. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/SimpleGuide.md +0 -0
  37. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/_.md +0 -0
  38. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/api_reference.rst +0 -0
  39. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/conf.py +0 -0
  40. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/index.rst +0 -0
  41. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/make.bat +0 -0
  42. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/modules.rst +0 -0
  43. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.column.rst +0 -0
  44. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.config.rst +0 -0
  45. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.csv.rst +0 -0
  46. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.database.rst +0 -0
  47. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.errors.rst +0 -0
  48. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.functions.rst +0 -0
  49. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.locals.rst +0 -0
  50. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.model.errors.rst +0 -0
  51. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.model.helpers.rst +0 -0
  52. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.model.query_builder.rst +0 -0
  53. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.model.rst +0 -0
  54. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.errors.rst +0 -0
  55. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.helpers.rst +0 -0
  56. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.mixin.rst +0 -0
  57. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.query_builder.rst +0 -0
  58. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.rst +0 -0
  59. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.models.type_checkers.rst +0 -0
  60. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.operators.rst +0 -0
  61. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.query_builder.rst +0 -0
  62. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.rst +0 -0
  63. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.signature.rst +0 -0
  64. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.subexp.rst +0 -0
  65. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.subquery.rst +0 -0
  66. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.table.rst +0 -0
  67. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.typings.rst +0 -0
  68. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.utils.rst +0 -0
  69. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.workers.connection.rst +0 -0
  70. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.workers.database.rst +0 -0
  71. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs/sqlite_database.workers.rst +0 -0
  72. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/docs-requirements.txt +0 -0
  73. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/project-init.bash +0 -0
  74. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/pyproject.toml +0 -0
  75. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/setup.cfg +0 -0
  76. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/setup.py +0 -0
  77. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/_debug.py +0 -0
  78. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/column.py +0 -0
  79. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/csv.py +0 -0
  80. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/database.py +0 -0
  81. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/errors.py +0 -0
  82. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/functions.py +0 -0
  83. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/locals.py +0 -0
  84. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/__init__.py +0 -0
  85. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/errors.py +0 -0
  86. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/helpers.py +0 -0
  87. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/mixin.py +0 -0
  88. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/query_builder.py +0 -0
  89. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/models/type_checkers.py +0 -0
  90. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/operators.py +0 -0
  91. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/signature.py +0 -0
  92. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/subquery.py +0 -0
  93. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/table.py +0 -0
  94. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/typings.py +0 -0
  95. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/utils.py +0 -0
  96. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/workers/__init__.py +0 -0
  97. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/workers/connection.py +0 -0
  98. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database/workers/database.py +0 -0
  99. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database.egg-info/SOURCES.txt +0 -0
  100. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database.egg-info/dependency_links.txt +0 -0
  101. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database.egg-info/requires.txt +0 -0
  102. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database.egg-info/top_level.txt +0 -0
  103. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/sqlite_database.egg-info/zip-safe +0 -0
  104. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/__init__.py +0 -0
  105. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/__init__.py +0 -0
  106. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/model_api/__init__.py +0 -0
  107. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/model_api/test_model_api.py +0 -0
  108. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/setup.py +0 -0
  109. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/__init__.py +0 -0
  110. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_csv.py +0 -0
  111. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_delete.py +0 -0
  112. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_insert.py +0 -0
  113. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_others.py +0 -0
  114. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_select.py +0 -0
  115. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/table_api/test_update.py +0 -0
  116. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/database/test_custom.py +0 -0
  117. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/manual_test_performances.py +0 -0
  118. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/test_internals.py +0 -0
  119. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/user_benchmark.py +0 -0
  120. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/tests/user_helpers.py +0 -0
  121. {sqlite_database-0.7.10 → sqlite_database-0.7.11}/transient/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlite_database
3
- Version: 0.7.10
3
+ Version: 0.7.11
4
4
  Summary: Easy to use SQLite wrapper
5
5
  Home-page: https://github.com/RimuEirnarn/sqlite_database
6
6
  Author: RimuEirnarn
@@ -15,7 +15,7 @@ def test_installed():
15
15
  return True
16
16
 
17
17
 
18
- __version__ = "0.7.10"
18
+ __version__ = "0.7.11"
19
19
  __all__ = [
20
20
  "Database",
21
21
  "Table",
@@ -108,22 +108,25 @@ def matches(pattern: Pattern, value: str):
108
108
  return True
109
109
 
110
110
 
111
- def check_one(data: str):
111
+ def check_one(data: str, bypass_list: tuple[str, ...] | None = None):
112
112
  """check one to check if a string contains illegal character OR
113
113
  if it is a reserved SQL keyword"""
114
114
  if matches(_re_valid, data) is True:
115
115
  exc = SecurityError("Cannot parse unsafe data.")
116
116
  exc.add_note(f"Target: {data}")
117
117
  raise exc
118
+ bp = bypass_list or []
118
119
  if data.upper() in _SQLITE_KEYWORDS:
120
+ if data in bp:
121
+ return data
119
122
  raise SecurityError(f'"{data}" is a reserved SQL keyword and cannot be used.')
120
123
  return data
121
124
 
122
125
 
123
- def check_iter(data: Iterable[str]):
126
+ def check_iter(data: Iterable[str], bypass_list: tuple[str, ...] | None = None):
124
127
  """An iterable checks as it's check_one"""
125
128
  for val in data:
126
- yield check_one(val)
129
+ check_one(val, bypass_list)
127
130
 
128
131
 
129
132
  class WithCursor(Cursor):
@@ -95,6 +95,12 @@ class QueryParams:
95
95
  order: Optional[CacheOrders] = None
96
96
  data: Optional[CacheData] = None
97
97
 
98
+ def __post_init__(self):
99
+ if not all(
100
+ (isinstance(getattr(self, item), int) for item in ("limit", "offset"))
101
+ ):
102
+ raise TypeError("Expected limit/offset to be integer")
103
+
98
104
  def __hash__(self):
99
105
  """Custom hash function to ensure compatibility with lru_cache."""
100
106
  return hash(
@@ -230,7 +236,8 @@ def extract_signature( # pylint: disable=too-many-locals
230
236
 
231
237
  val = (
232
238
  Signature(
233
- ":"+NAMING_FORMAT.format(
239
+ ":"
240
+ + NAMING_FORMAT.format(
234
241
  key=key,
235
242
  suffix=suffix,
236
243
  call_id=call_id,
@@ -498,7 +505,8 @@ def extract_subquery(subquery: SubQuery, depth: int = 1):
498
505
  subquery.where,
499
506
  subquery.cols,
500
507
  subquery.limit,
501
- subquery.orders, # type: ignore
508
+ 0, # type: ignore
509
+ subquery.orders # type: ignore
502
510
  ),
503
511
  depth=depth,
504
512
  )
@@ -543,9 +551,16 @@ def _setup_limit_patch(table_name: str, condition: str, limit):
543
551
  def _parse_orders(order: CacheOrders):
544
552
  if isinstance(order, tuple) and not isinstance(order[0], tuple):
545
553
  ord_, order_by = order
554
+ # print('here')
555
+ check_iter(order, ("asc", "desc")) # type: ignore
546
556
  return f"{ord_} {order_by}"
547
557
  if isinstance(order, tuple) and isinstance(order[0], tuple):
548
- return ", ".join(f"{ord_} {order_by}" for ord_, order_by in order)
558
+
559
+ return ", ".join(
560
+ f"{ord_} {order_by}"
561
+ for ord_, order_by in order
562
+ if check_iter((ord_, order_by), ("asc", "desc"))
563
+ )
549
564
  raise TypeError("What?", type(order))
550
565
 
551
566
 
@@ -571,12 +586,14 @@ def _build_select(query_params: QueryParams, depth: int = 0):
571
586
  )
572
587
  check_one(query_params.table_name)
573
588
  cond, data = extract_signature(query_params.condition, depth=depth)
574
- check_iter(query_params.only or ()) # type: ignore
575
589
  only_ = "*"
576
590
  if query_params.only and isinstance(query_params.only, ParsedFn):
577
591
  only_, _ = query_params.only.parse_sql()
592
+ check_iter(
593
+ (query_params.only.name, *(a for a in query_params.only.values if a != "*"))
594
+ )
578
595
  elif isinstance(query_params.only, tuple):
579
- only_ = f"{', '.join(column_name for column_name in query_params.only)}"
596
+ only_ = f"{', '.join(column_name for column_name in query_params.only if check_one(column_name))}"
580
597
  elif query_params.only != "*" and isinstance(query_params.only, str):
581
598
  only_ = check_one(query_params.only) # type: ignore
582
599
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlite_database
3
- Version: 0.7.10
3
+ Version: 0.7.11
4
4
  Summary: Easy to use SQLite wrapper
5
5
  Home-page: https://github.com/RimuEirnarn/sqlite_database
6
6
  Author: RimuEirnarn