Skip to content

Conversation

bygu4
Copy link
Collaborator

@bygu4 bygu4 commented Jan 1, 2025

Configure Ruff linter for applying pycodestyle, pydocstyle and other's rules. Update the documentation after adding type annotations to pyformlang.

Notes

It is important to note that sphinx with napoleon supports Python type annotations, so adding type hints to docstrings is not necessary.

Todo

  • Configure Ruff linter
  • Update docstrings and fix rule violations
  • Update code examples in docstrings
  • Add examples for FA string generator and other added features
  • Add linting with Ruff to CI jobs

Related

Copy link

github-actions bot commented Jan 1, 2025

Coverage

Coverage Report
FileStmtsMissCoverMissing
pyformlang
   __init__.py90100% 
pyformlang/cfg
   __init__.py30100% 
   cfg.py46622 99%
   cfg_variable_converter.py6544 94%
   cyk_table.py790100% 
   formal_grammar.py6911 99%
   llone_parser.py16333 98%
   parse_tree.py6511 98%
   recursive_decent_parser.py6122 97%
   set_queue.py150100% 
   utils.py250100% 
pyformlang/cfg/tests
   __init__.py00100% 
   test_cfg.py62622 99%
   test_llone_parser.py11711 99%
   test_production.py210100% 
   test_recursive_decent_parser.py2511 96%
   test_terminal.py330100% 
   test_variable.py180100% 
pyformlang/fcfg
   __init__.py40100% 
   fcfg.py13111 99%
   feature_production.py250100% 
   feature_structure.py19133 98%
   state.py360100% 
pyformlang/fcfg/tests
   __init__.py00100% 
   test_fcfg.py1690100% 
   test_feature_structure.py1590100% 
pyformlang/finite_automaton
   __init__.py80100% 
   deterministic_finite_automaton.py18322 99%
   deterministic_transition_function.py2411 96%
   doubly_linked_list.py350100% 
   doubly_linked_node.py100100% 
   epsilon_nfa.py21011 99%
   finite_automaton.py23111 99%
   hopcroft_processing_list.py240100% 
   nondeterministic_finite_automaton.py400100% 
   nondeterministic_transition_function.py480100% 
   partition.py400100% 
   transition_function.py320100% 
   utils.py300100% 
pyformlang/finite_automaton/tests
   __init__.py00100% 
   test_deterministic_finite_automaton.py2960100% 
   test_deterministic_transition_function.py8955 94%
   test_epsilon.py130100% 
   test_epsilon_nfa.py5950100% 
   test_nondeterministic_finite_automaton.py1600100% 
   test_nondeterministic_transition_function.py790100% 
   test_state.py280100% 
   test_symbol.py290100% 
pyformlang/fst
   __init__.py20100% 
   fst.py18611 99%
   transition_function.py3833 92%
   utils.py250100% 
pyformlang/fst/tests
   __init__.py00100% 
   test_fst.py1910100% 
pyformlang/indexed_grammar
   __init__.py90100% 
   consumption_rule.py3522 94%
   duplication_rule.py320100% 
   end_rule.py3311 97%
   indexed_grammar.py27111 99%
   production_rule.py3511 97%
   reduced_rule.py290100% 
   rule_ordering.py730100% 
   rules.py770100% 
   utils.py410100% 
pyformlang/indexed_grammar/tests
   __init__.py00100% 
   test_indexed_grammar.py2490100% 
   test_rules.py350100% 
pyformlang/objects
   __init__.py50100% 
   base_epsilon.py1511 93%
   base_terminal.py70100% 
   formal_object.py240100% 
pyformlang/objects/cfg_objects
   __init__.py60100% 
   cfg_object.py50100% 
   epsilon.py30100% 
   production.py4111 98%
   terminal.py100100% 
   utils.py140100% 
   variable.py130100% 
pyformlang/objects/finite_automaton_objects
   __init__.py50100% 
   epsilon.py30100% 
   finite_automaton_object.py50100% 
   state.py70100% 
   symbol.py50100% 
   utils.py140100% 
pyformlang/objects/pda_objects
   __init__.py60100% 
   epsilon.py30100% 
   pda_object.py50100% 
   stack_symbol.py70100% 
   state.py70100% 
   symbol.py50100% 
   utils.py2111 95%
pyformlang/objects/regex_objects
   __init__.py20100% 
   regex_objects.py650100% 
   utils.py220100% 
pyformlang/pda
   __init__.py40100% 
   pda.py31722 99%
   transition_function.py3933 92%
   utils.py5322 96%
pyformlang/pda/tests
   __init__.py00100% 
   test_pda.py3020100% 
pyformlang/regular_expression
   __init__.py30100% 
   python_regex.py26966 98%
   regex.py2811414 95%
   regex_reader.py15944 97%
pyformlang/regular_expression/tests
   __init__.py00100% 
   test_python_regex.py2780100% 
   test_regex.py4110100% 
pyformlang/rsa
   __init__.py30100% 
   box.py512525 51%
   recursive_automaton.py7299 88%
pyformlang/rsa/tests
   __init__.py00100% 
   test_rsa.py370100% 
pyformlang/tests
   __init__.py00100% 
TOTAL874410899% 

Tests Skipped Failures Errors Time
310 0 💤 0 ❌ 0 🔥 8.212s ⏱️

@bygu4 bygu4 requested a review from gsvgit January 6, 2025 20:39
Copy link
Member

@gsvgit gsvgit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First part

value : any
The value of the state

value:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it ok that type annotation is missing?


Parameters
----------
value:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it ok that type annotation is missing?

boxes : set of :class:`~pyformlang.rsa.Box`
A finite set of boxes

start_box:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it ok that type annotation is missing?

start_nonterminal : :class:`~pyformlang.finite_automaton.Symbol` | str
The start nonterminal for the recursive automaton
----------
regex:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it ok that type annotation is missing?

start_nonterminal : \
:class:`~pyformlang.finite_automaton.Symbol` | str, optional
The start nonterminal, S by default
text:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it ok that type annotation is missing?


Parameters
-----------
value : any
The value of the object
value:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type annotation?

:param l_sets: a list containing tuples (C, M) where:

Parameters
----------
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type annotation?

prod : any
The production used in the rule
----------
left:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type annotation?

prod : any
The production used in the rule
----------
left:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type annotation?

rules : iterable of :class:`~pyformlang.indexed_grammar.ReducedRule`
A list of all the rules
optim : int
rules:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type annotation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants