ransacklib 1.1.0.dev8__tar.gz → 1.1.0.dev10__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 (20) hide show
  1. {ransacklib-1.1.0.dev8/ransacklib.egg-info → ransacklib-1.1.0.dev10}/PKG-INFO +1 -1
  2. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/pyproject.toml +1 -1
  3. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/operator.py +2 -2
  4. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/transformer.py +7 -5
  5. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10/ransacklib.egg-info}/PKG-INFO +1 -1
  6. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/tests/test_transformer.py +2 -2
  7. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/LICENSE +0 -0
  8. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/README.rst +0 -0
  9. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/__init__.py +0 -0
  10. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/exceptions.py +0 -0
  11. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/function.py +0 -0
  12. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/parser.py +0 -0
  13. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransack/py.typed +0 -0
  14. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransacklib.egg-info/SOURCES.txt +0 -0
  15. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransacklib.egg-info/dependency_links.txt +0 -0
  16. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransacklib.egg-info/requires.txt +0 -0
  17. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/ransacklib.egg-info/top_level.txt +0 -0
  18. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/setup.cfg +0 -0
  19. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/tests/test_operator.py +0 -0
  20. {ransacklib-1.1.0.dev8 → ransacklib-1.1.0.dev10}/tests/test_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ransacklib
3
- Version: 1.1.0.dev8
3
+ Version: 1.1.0.dev10
4
4
  Summary: A modern, extensible language for manipulation with structured data
5
5
  Author-email: "Rajmund H. Hruška" <rajmund.hruska@cesnet.cz>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ransacklib"
7
- version = "1.1.0.dev8"
7
+ version = "1.1.0.dev10"
8
8
  description = "A modern, extensible language for manipulation with structured data"
9
9
  license = "MIT"
10
10
  readme = "README.rst"
@@ -608,7 +608,7 @@ def _operator_map_sql(op, l_sql, r_sql, t1, t2) -> tuple[str, Any, bool]:
608
608
  (Number, Number): (f"{l_sql} / {r_sql}", Number),
609
609
  },
610
610
  "%": {
611
- (Number, Number): (f"({l_sql} % {r_sql})", Number),
611
+ (Number, Number): (f"({l_sql} %% {r_sql})", Number),
612
612
  },
613
613
  ".": {
614
614
  (str, str): (f"{l_sql} || {r_sql}", str),
@@ -680,4 +680,4 @@ def binary_operation_sql(
680
680
  return sql, type_, not switch
681
681
  except KeyError:
682
682
  pass
683
- raise OperatorNotFoundError(operator, (l_type, r_type), (left, right)) from None
683
+ raise OperatorNotFoundError(operator, (l_type, r_type)) from None
@@ -830,7 +830,9 @@ class SQLInterpreter(Interpreter):
830
830
  A class providing a method for translating the query from 'ransack' language to SQL.
831
831
  """
832
832
 
833
- def to_sql(self, tree: Tree, data: dict | None = None) -> tuple[str, list[Any]]:
833
+ def to_sql(
834
+ self, tree: Tree, data: dict | None = None
835
+ ) -> tuple[str, list[Any], Any]:
834
836
  """
835
837
  Translates the given tree to PostgreSQL query using the provided data.
836
838
 
@@ -839,15 +841,15 @@ class SQLInterpreter(Interpreter):
839
841
  data: Optional dictionary containing the definition of queried columns.
840
842
 
841
843
  Returns:
842
- A part of the SQL query (the part after 'SELECT' or 'WHERE') and its
843
- parameters.
844
+ A part of the SQL query (the part after 'SELECT' or 'WHERE'), its
845
+ parameters and a resulting type.
844
846
  """
845
847
  self.data = data if data is not None else {}
846
848
 
847
- result, params, _ = self.visit(tree)
849
+ result, params, type_ = self.visit(tree)
848
850
 
849
851
  self.data = {}
850
- return result, params
852
+ return result, params, type_
851
853
 
852
854
  def number(self, token: TokenWrapper) -> tuple[str, list, type[int | float]]:
853
855
  return ("%s", [token.real_value], type(token.real_value))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ransacklib
3
- Version: 1.1.0.dev8
3
+ Version: 1.1.0.dev10
4
4
  Summary: A modern, extensible language for manipulation with structured data
5
5
  Author-email: "Rajmund H. Hruška" <rajmund.hruska@cesnet.cz>
6
6
  License-Expression: MIT
@@ -725,7 +725,7 @@ class TestSQLInterpreter:
725
725
  # Test arithmetic operations.
726
726
  (
727
727
  "(10 + 12 - 7) * (15 / (8 % 3)) - (-5)",
728
- "(((%s + %s) - %s) * %s / (%s % %s) - (-%s))",
728
+ "(((%s + %s) - %s) * %s / (%s %% %s) - (-%s))",
729
729
  [10, 12, 7, 15, 8, 3, 5],
730
730
  ),
731
731
  # Test comparisons.
@@ -856,7 +856,7 @@ class TestSQLInterpreter:
856
856
  ],
857
857
  )
858
858
  def test_parse_sql(self, parser, sql, expr, expected_sql, expected_params):
859
- sql_str, params = self.parse(parser, sql, expr)
859
+ sql_str, params, _ = self.parse(parser, sql, expr)
860
860
 
861
861
  assert sql_str == expected_sql
862
862
  assert params == expected_params