1. 25 Nov, 2021 6 commits
  2. 24 Nov, 2021 2 commits
  3. 23 Nov, 2021 2 commits
    • Nsukami Patrick's avatar
      [mypy] Type RQLHelper's schema attribute as ISchema · bd85b7006744
      Nsukami Patrick authored
      There was an unused protocol definition sleeping within the rql/interfaces.py module.
      This protocol (ISchema) perfectly represent what a schema should be.
      Let's use it to annotate the schema attribute within the RQLHelper class
    • Nsukami Patrick's avatar
      [mypy]: Add type hints for EtypeResolver class: · af2d5233a53f
      Nsukami Patrick authored
      Within rql/analyze.py:
        add (line 403):
            if self.uid_func:
        and fix:
            error: "None" not callable  [misc]
        add (line 548):
            assert self.uid_func_mapping is not None
        and fix:
            Unsupported right operand type for in ("Optional[Dict[Any, Any]]")
        change (line 615):
            etypes = frozenset(t for t in self._nonfinal_domain if t not in etypes)
            etypes = set(t for t in self._nonfinal_domain if t not in etypes)
        and fix:
            Incompatible types in assignment (expression has type "FrozenSet[str]", variable has type "Set[Any]")
      Within rql/interfaces.py:
      Update ISchema protocol definition:
              def __contains__():
          and fix:
               error: Unsupported right operand type for in ("ISchema")  [operator]
              def rschema(self, rtype: Any):
          and fix:
              "ISchema" has no attribute "rschema"  [attr-defined]
              def eschema(self, etype: Any):
          and fix:
              "ISchema" has no attribute "eschema"  [attr-defined]
      See RQL's issue: #15
  4. 17 Aug, 2021 4 commits
  5. 19 Oct, 2021 2 commits
  6. 18 Oct, 2021 1 commit
  7. 09 Oct, 2021 3 commits
    • Nsukami Patrick's avatar
      Fix Argument 1 to "__call__" of "TranslationFunction" has incompatible type · c03be5e0a47c
      Nsukami Patrick authored
      There is some cases where the `get_description` method will return None.
      The TranslationFunction assume the first parameter will be a string, not None.
      Alternative solutions:
      - update the condition: vtype is not None and != "Any" (picked solution)
      - assert returned value is not None whenever necessary
      - update TranslationFunction signature to take first parameter as Optional[str].
      - update all the `get_description` methods to always return a str.
    • Nsukami Patrick's avatar
      refactor(mypy): Improve type hints inside OperatorExpressionMixin class · 947a89a37413
      Nsukami Patrick authored
      - define necessary attributes within a protocol
      - this protocol should have:
         - operator attribute
         - iget_nodes method
         - get_type method
      - use the newly defined protocol to type `self` within OperatorExpressionMixin class
      - remove useless type-ignore comments
    • Nsukami Patrick's avatar
      refactor(mypy): Improve HSMixin type hints · 97efc3ea82ca
      Nsukami Patrick authored
      Inside rqltypes module
      - define a protocol to describe an object that:
        - has an attribute named `parent`
        - parent attribute should have an attribute named `relation`
        - a method named `get_type`
      Inside HSMixin:
      - remove now useless type:ignore comments
      - type `self` as a `HasHand` type
      Inside nodes.Constant `get_type` method could return a str or None:
      - make sure `get_type` always returns a str
      - change the default value of `_uidtype` from None to empty string
      - type `_uidtype` as a str
  8. 11 Oct, 2021 2 commits
    • Nsukami Patrick's avatar
      refactor: Update the shell script that build wheels · 045e097fcfb3
      Nsukami Patrick authored
      - Update Gecode version to the last one
      - To build rql wheels, starts with Python 3.7 version
      - Use pip flag --use-feature=in-tree-build, and deal with the following warning:
          DEPRECATION: A future pip version will change local packages to be built
          in-place without first copying to a temporary directory. We recommend you use
          --use-feature=in-tree-build to test your packages with this new behavior
          before it becomes the default.
             pip 21.3 will remove support for this functionality. You can find
          discussion regarding this at https://github.com/pypa/pip/issues/7555.
    • Nsukami Patrick's avatar
      refactor: Replace makefile with tox · 2611826b013d
      Nsukami Patrick authored
  9. 05 Oct, 2021 1 commit
  10. 03 Oct, 2021 1 commit
  11. 03 Aug, 2021 1 commit
  12. 13 Jul, 2021 1 commit
    • Nsukami Patrick's avatar
      refactor(mypy): Add more type-hints to stmts module · 2873da817f33
      Nsukami Patrick authored
      Inside stmts module,
      somewhere we read, `self.groupby` attribute being added if not exists and used as a list:
      if not self.groupby:
          self.groupby = []
      Let's just define:
      - self.groupby self.orderby as instance attribute
      - self.groupby self.orderby as List of Any
      - remove the if not self.grouby check
      Do the same with the `self.orderby` attribute.
      Inside Select class:
      - update `remove` method signature. And fix the error:
        rql/stmts.py:940: error:
        Argument 1 to "remove_sort_term" of "Select" has incompatible type "BaseNode";
        expected "SortTerm"  [arg-type]
      - update undefine_variable method:
        remove useless check of var.variable attribute
      Inside undo.NodeOperation class:
      - simplify type hint for `node` parameter inside `NodeOperation.__init__` method
  13. 04 Aug, 2021 1 commit
    • Nsukami Patrick's avatar
      refactor(mypy): Finish type hint the rql/__init__.py module · c5fb30b4a17b
      Nsukami Patrick authored
      - Type hint all `parse` functions inside rql/__init__.py
      - Create a type alias to represent what's returned by `parse` functions above
      - Update RQLSTChecker.check method signature:
        * node parameter should be a BaseNode	or any children	of BaseNode class
      - Type hint `copy_uid_node` function
      - Remove useless variable: pyparse = parse
      - Format without any compromise
  14. 23 Jul, 2021 5 commits
    • Nsukami Patrick's avatar
      flake8: fix minor errors F821 · e1ac84f98295
      Nsukami Patrick authored
    • Nsukami Patrick's avatar
      mypy: Remove useless import · a1d40ebd1f7a
      Nsukami Patrick authored
    • Nsukami Patrick's avatar
      black: format without any compromise · 68084ca277a2
      Nsukami Patrick authored
    • Nsukami Patrick's avatar
      mypy: Improve various type hints · 847f5057c319
      Nsukami Patrick authored
      Update rql.base.Node class:
      - define self.parent as a TypeVar
      - define self.children as a List of TypeVar
      - Those 2 TypeVar are bound, i.e: they can be BaseNode or any children of BaseNode
      Update rql.stmts.Union class:
      - add a new attribute, i.e:  `children: List["rql.stmts.Select"]`
      Update rql.RQLHelper simplify & _simplify methods:
      - remove call to cast method, no more need to cast from BaseNode to Select
      - Try to harmonize type signature for get_description methods
      - Remove now obsolete comments related to type hints
      - type vconsts as a List of Constant
    • Nsukami Patrick's avatar
      mypy: Improve type hint for RQLHelpher __init__ method · be0dbd62da07
      Nsukami Patrick authored
      - RQLHelper __init__ method takes a parameter `resolver_class`
      - `revolver_class` is anything implementing the interface of ETypeResolver class
      - create a protocol named `ResolvesEType` that respect that interface
  15. 22 Jul, 2021 1 commit
  16. 21 Jul, 2021 1 commit
  17. 20 Jul, 2021 2 commits
  18. 11 Jul, 2021 2 commits
  19. 06 Jul, 2021 1 commit
    • Nsukami Patrick's avatar
      refactor: Add module entrypoint for parsing rql strings · 6daa66868774
      Nsukami Patrick authored
      Move the old code within `parser_main.py` to `parser/__main__.py`
      So that rql package can be run with the -m module flag.
      When calling `$ python3 -m rql.parser "Any 1+1;"`, the main function
      defined inside __main__.py will be executed and the string "Any 1+1;"
      will be parsed.
  20. 21 Jun, 2021 1 commit