diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index d0f28e1db..341d5de69 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -12,7 +12,7 @@ configuration. Communicate this to the users during code review. See . - [ ] The type information analyzer at - + can generate information about annotation completeness of variables, functions, methods, type aliases, decorators, and classes in the PyThaiNLP repo. diff --git a/.gitignore b/.gitignore index ba6490da6..bbc8945e3 100644 --- a/.gitignore +++ b/.gitignore @@ -129,3 +129,7 @@ logs/ # Temp files *.tmp *.temp + +# Type annotation analyzer +build_tools/output/*.csv +build_tools/output/*.json diff --git a/build_tools/analysis/README.md b/build_tools/analysis/README.md index bb8c02408..64d8d541e 100644 --- a/build_tools/analysis/README.md +++ b/build_tools/analysis/README.md @@ -1,18 +1,25 @@ -# Code Analysis Tools +# Code analysis tools This directory contains tools for analyzing the PyThaiNLP codebase. -## Type Hint Analysis +## Type annotation analysis ### Overview -The type hint analysis system provides comprehensive coverage analysis of type annotations across the entire PyThaiNLP codebase. It follows the [Python typing documentation's type completeness guidelines](https://typing.python.org/en/latest/guides/libraries.html#type-completeness) to assess the quality and completeness of type hints. +The type annotation analysis system provides comprehensive coverage analysis +of type annotations across the entire PyThaiNLP codebase. +It follows the +[Python typing documentation's type completeness guidelines][type-completeness] +to estimate the quality and completeness of type annotations. + +[type-completeness]: https://typing.python.org/en/latest/guides/libraries.html#type-completeness ### Scripts -#### type_hint_analyzer.py +#### type-analyzer.py -Main script that performs comprehensive type hint coverage analysis using Python's Abstract Syntax Tree (AST) module. +Main script that performs comprehensive type annotation coverage analysis +using Python's Abstract Syntax Tree (AST) module. **What it analyzes:** @@ -28,7 +35,8 @@ Main script that performs comprehensive type hint coverage analysis using Python **Implementation Details:** -The analyzer uses Python's `ast` module to parse and traverse the syntax tree of each Python file. Key components: +The analyzer uses Python's `ast` module to parse and traverse the syntax tree +of each Python file. Key components: - `TypeHintAnalyzer` class: Custom `ast.NodeVisitor` that visits each node - `visit_FunctionDef()`: Analyzes function/method signatures @@ -37,6 +45,7 @@ The analyzer uses Python's `ast` module to parse and traverse the syntax tree of - `visit_Assign()`: Handles non-annotated assignments for comparison The analyzer distinguishes between: + - Module-level scope (top of file) - Class-level scope (inside class definition) - Function-level scope (inside function/method) @@ -49,31 +58,32 @@ The analyzer distinguishes between: **Usage:** +For best results, delete all previous data files (`*.csv`, `*.json`) +and clear the cache for mypy and any other static type checkers +before running the analyzer. + ```bash # Run from the build_tools/analysis directory (default output: ./output) -python3 type_hint_analyzer.py +python type-analyzer.py # Or specify a custom output directory -python3 type_hint_analyzer.py --output-dir /path/to/output +python type-analyzer.py --output-dir /path/to/output # Get help -python3 type_hint_analyzer.py --help +python type-analyzer.py --help ``` -**Performance:** +Enable more accurate static analysis by installing optional dependencies +(and their type stubs, if available) for enhanced type discovery. -- Analyzes ~190 Python files in pythainlp/ directory -- Processes ~720 functions/methods and ~960 variables -- Typical runtime: 2-3 minutes (including mypy analysis) -- Mypy timeout: 60 seconds per submodule +#### gen-csv.py -#### generate_csv.py - -Converts the JSON output from type_hint_analyzer.py into CSV files for easy analysis in spreadsheet applications or data analysis tools. +Converts the JSON output from type-analyzer.py into CSV files for +easy analysis in spreadsheet applications or data analysis tools. **Prerequisites:** -- Must run `type_hint_analyzer.py` first to generate the JSON data +- Must run `type-analyzer.py` first to generate the JSON data **Output:** @@ -88,6 +98,7 @@ Converts the JSON output from type_hint_analyzer.py into CSV files for easy anal **CSV Schema:** Functions CSV files include: + - Function Name (qualified name) - Submodule - Scope (public/private) @@ -101,6 +112,7 @@ Functions CSV files include: - Line Number Variables CSV files include: + - Variable Name (qualified name) - Submodule - Parent Class (for class/instance variables) @@ -112,28 +124,28 @@ Variables CSV files include: ```bash # Run from the build_tools/analysis directory (uses ./output by default) -python3 generate_csv.py +python gen-csv.py # Or specify custom paths -python3 generate_csv.py --input /path/to/input.json --output-dir /path/to/output +python gen-csv.py --input /path/to/input.json --output-dir /path/to/output # Get help -python3 generate_csv.py --help +python gen-csv.py --help ``` ### Complete Workflow -To perform a full type hint analysis: +To perform a full type annotation analysis: ```bash # Navigate to the analysis directory cd build_tools/analysis # 1. Run the analyzer (outputs to ./output by default) -python3 type_hint_analyzer.py +python type-analyzer.py # 2. Generate CSV files (reads from ./output by default) -python3 generate_csv.py +python gen-csv.py # 3. Review the results ls -la output/ @@ -142,9 +154,9 @@ cat output/submodule_summary.csv **Example Output:** -``` +```text ================================================================================ -TYPE HINT COVERAGE ANALYSIS FOR PYTHAINLP +TYPE ANNOTATION COVERAGE ANALYSIS FOR PYTHAINLP ================================================================================ Repository root: /path/to/pythainlp @@ -203,9 +215,10 @@ The workflow provides continuous monitoring of type hint coverage as the codebas ### Type Completeness Standards This analyzer follows the type completeness guidelines from the Python typing documentation: -https://typing.python.org/en/latest/guides/libraries.html#type-completeness + The analysis covers: + - All function and method signatures (parameters and return types) - Class variables (class-level attributes) - Instance variables (instance attributes) @@ -215,7 +228,8 @@ The analysis covers: **Type Completeness Criteria:** -According to PEP 561 and the Python typing documentation, a library is considered to have complete type hints when: +According to PEP 561 and the Python typing documentation, +a library is considered to have complete type hints when: 1. All exported functions, methods, and classes have type annotations 2. All public module-level variables have type annotations @@ -223,9 +237,9 @@ According to PEP 561 and the Python typing documentation, a library is considere 4. Generic types are properly parameterized 5. The library passes type checking with mypy in strict mode -### Analysis Categories +### Analysis categories -**Type Hint Status:** +**Type hint status:** - **Complete:** All parameters and return value have type hints (for functions), or variable has type annotation (for variables) - **Incomplete:** Some parameters or return value missing type hints (for functions only) @@ -254,7 +268,7 @@ According to PEP 561 and the Python typing documentation, a library is considere - Modern syntax: `MyType: TypeAlias = dict[str, int]` - Also detects `typing.TypeAlias` and `typing_extensions.TypeAlias` -**Priority Levels:** +**Priority levels:** Functions are assigned priority based on visibility and usage patterns: @@ -269,7 +283,7 @@ Functions are assigned priority based on visibility and usage patterns: - Internal implementation details - Lower priority for type hint coverage -**Test Suites:** +**Test suites:** The analyzer maps functions to test categories based on their dependencies: @@ -281,14 +295,13 @@ The analyzer maps functions to test categories based on their dependencies: This mapping helps understand which functions are tested and their dependency requirements. -### Output Files +### Output files All analysis outputs are stored in: - `build_tools/analysis/output/` - JSON and CSV data files -- `TYPE_HINT_ANALYSIS.md` - Main analysis report (repository root) -**JSON Structure:** +**JSON structure:** ```json { @@ -329,36 +342,37 @@ All analysis outputs are stored in: } ``` -### Code Review and Quality +### Code review and quality -**Documentation Coverage:** +**Documentation coverage:** The analyzer codebase maintains high documentation standards: + - 95.7% docstring coverage (22 of 23 functions/methods) - All public functions have comprehensive docstrings - Docstrings follow reStructuredText format for Sphinx compatibility -**Code Quality:** +**Code quality:** - Follows Ruff linting standards - Type hints on all function signatures - Clear separation of concerns with dedicated helper methods - Proper exception handling for file I/O and subprocess calls -**Key Design Decisions:** +**Key Design decisions:** 1. **AST-based Analysis**: Uses Python's `ast` module rather than runtime inspection - Pros: No need to import/execute code, faster, safer - Cons: Cannot detect dynamically generated code - + 2. **Stateful Visitor Pattern**: Tracks context (class, function, module level) - Enables accurate classification of variables - Distinguishes between local, instance, class, and module variables - + 3. **Reference Counting**: Simple text-based search for usage patterns - Fast and implementation-agnostic - Trade-off: May have false positives (comments, strings) - + 4. **Priority System**: Heuristic-based prioritization - Helps focus improvement efforts on most impactful areas - Based on visibility (public/private) and usage frequency @@ -411,8 +425,8 @@ The analyzer codebase maintains high documentation standards: If you'd like to improve the type hint analyzer: -1. The main implementation is in `type_hint_analyzer.py` -2. The CSV generator is in `generate_csv.py` +1. The main implementation is in `type-analyzer.py` +2. The CSV generator is in `gen-csv.py` 3. Both scripts follow PyThaiNLP coding standards 4. Run Ruff before submitting changes: `ruff check build_tools/analysis/` 5. Ensure all docstrings are complete and follow reStructuredText format @@ -420,6 +434,23 @@ If you'd like to improve the type hint analyzer: For questions or suggestions, please open an issue in the PyThaiNLP repository. +## Understanding variable type annotations + +### What should be annotated + +According to Python typing best practices and type checking tools like mypy, +type annotations should be added to: + +1. **First assignment** of a variable +2. **Variables where type isn't obvious** from the assigned value +3. **Class and instance variables** (on first assignment only) + +### What should not be annotated + +1. **Reassignments** - Adding type annotations to reassignments causes `no-redef` errors +2. **Dictionary subscript operations** - Cannot annotate `dict[key] = value` operations +3. **Variables with obvious literal types** - Optional, but generally omitted for simple cases + ## Future Tools This directory can be extended with additional analysis tools: diff --git a/build_tools/analysis/coverage-analysis.md b/build_tools/analysis/coverage-analysis.md deleted file mode 100644 index 51ceaa20f..000000000 --- a/build_tools/analysis/coverage-analysis.md +++ /dev/null @@ -1,134 +0,0 @@ -# Type Hint Variable Coverage Analysis - -**Date**: 2026-02-04 -**Coverage**: 95.39% (1199/1257 variables) -**Mypy Status**: ✅ Success: no issues found in 191 source files - -## Executive Summary - -The type hint analyzer reports **95.39% variable coverage**, with 58 variables lacking type annotations. However, **all 58 cases are intentionally unannotated** following Python typing best practices. When considered correctly, the codebase has achieved **100% appropriate variable type coverage**. - -## Understanding Variable Type Annotations - -### What Should Be Annotated - -According to Python typing best practices ([PEP 526](https://www.python.org/dev/peps/pep-0526/)) and type checking tools like mypy, type annotations should be added to: - -1. **First assignment** of a variable -2. **Variables where type isn't obvious** from the assigned value -3. **Class and instance variables** (on first assignment only) - -### What Should NOT Be Annotated - -1. **Reassignments** - Adding type annotations to reassignments causes `no-redef` errors -2. **Dictionary subscript operations** - Cannot annotate `dict[key] = value` operations -3. **Variables with obvious literal types** - Optional, but generally omitted for simple cases - -## Analysis of Unannotated Variables (58 total) - -### Category 1: Instance Variable Reassignments (37 variables, 63.8%) - -These are instance attributes being reassigned after their initial annotated declaration: - -```python -# Initial declaration with annotation -self.history: list[tuple[str, str]] = [] - -# Later reassignment WITHOUT annotation (correct) -self.history = [] # ← Detected as "no hint" but correct -``` - -**Examples**: -- `chat/core.py:22` - `self.history = []` -- `tokenize/core.py:944,946` - `self.__trie_dict = dict_trie(...)` / `word_dict_trie()` -- `tokenize/core.py:996` - `self.__engine = engine` -- `translate/core.py:77,81,85,89,93,97` - `self.model = ...` -- `word_vector/core.py:59,60,65,68,70` - Various attribute reassignments - -**Why no annotation**: Adding annotations would cause mypy `no-redef` errors: -``` -error: Attribute "__engine" already defined on line 947 [no-redef] -``` - -### Category 2: Dictionary Item Assignments (14 variables, 24.1%) - -These are dictionary subscript operations, not variable declarations: - -```python -# Dictionary initialization with annotation -_dict_aksonhan: dict[str, str] = {} - -# Dictionary item assignment (not a variable) -_dict_aksonhan[i + j + i] = "ั" + j + i # ← Detected as "no hint" but correct -``` - -**Examples**: -- `ancient/aksonhan.py:20-22` - `_dict_aksonhan[...] = ...` -- `util/morse.py:128,132,135` - `decodingeng[val] = key`, etc. -- `util/spell_words.py:41-56` - `dict_vowel[i] = ...` -- `util/syllable.py:68` - `thai_initial_consonant_to_type[i] = k` -- `wsd/core.py:27` - `_mean_all[i] = j` - -**Why no annotation**: Dictionary subscript operations (`dict[key] = value`) cannot have type annotations. The dictionary itself is annotated when declared. - -### Category 3: Module Variable Reassignments (7 variables, 12.1%) - -Module-level variables being reassigned after initial declaration: - -```python -# Initial declaration with annotation -_vowel_patterns: str = "..." - -# Reassignment WITHOUT annotation (correct) -_vowel_patterns = _vowel_patterns.replace("*", "...") # ← Detected as "no hint" but correct -``` - -**Examples**: -- `transliterate/royin.py:73-75` - `_vowel_patterns = _vowel_patterns.replace(...)` -- `cli/__init__.py:18-19` - `sys.stdout = ...`, `sys.stderr = ...` -- `spell/wanchanberta_thai_grammarly.py:60,106` - `tagging_model = tagging_model.to(device)` - -**Why no annotation**: These are reassignments of already-declared variables. Adding annotations would cause `no-redef` errors. - -## Detailed Breakdown - -| File | Line | Variable | Category | Reason | -|------|------|----------|----------|--------| -| `chat/core.py` | 22 | `self.history` | Instance reassign | After initial annotation at line 18 | -| `tokenize/core.py` | 944 | `self.__trie_dict` | Instance reassign | Conditional reassignment in `__init__` | -| `tokenize/core.py` | 946 | `self.__trie_dict` | Instance reassign | Conditional reassignment in `__init__` | -| `tokenize/core.py` | 996 | `self.__engine` | Instance reassign | Setter method reassignment | -| `ancient/aksonhan.py` | 20-22 | Dict items | Dict subscript | Dictionary population in loop | -| `cli/__init__.py` | 18-19 | `sys.stdout/stderr` | Module reassign | Module attribute reassignment | -| `transliterate/royin.py` | 73-75 | `_vowel_patterns` | Module reassign | String transformation chain | -| `util/morse.py` | 128,132,135 | Dict items | Dict subscript | Dictionary population | -| `util/spell_words.py` | 41-56 | Dict items | Dict subscript | Dictionary population | -| `util/syllable.py` | 68 | Dict item | Dict subscript | Dictionary population in loop | - -## Verification - -We verified this analysis by: - -1. Running the type hint analyzer to identify all unannotated variables -2. Examining each case to understand why it lacks annotation -3. Confirming that mypy passes with **zero errors** (191 source files checked) -4. Running all tests successfully (114/114 core tests pass) - -## Conclusion - -The **95.39% variable type hint coverage** represents the analyzer counting each assignment location independently. When considering Python typing best practices: - -✅ **100% of variables are appropriately typed** - -All 58 "unannotated" cases fall into categories that **should not** have type annotations to avoid errors or follow Python conventions. The codebase has achieved full variable type completeness according to: - -- Python typing specifications (PEP 526, PEP 484) -- Mypy type checking requirements -- Type completeness guidelines from typing.python.org - -## References - -- [PEP 484 - Type Hints](https://www.python.org/dev/peps/pep-0484/) -- [PEP 526 - Syntax for Variable Annotations](https://www.python.org/dev/peps/pep-0526/) -- [Type completeness guidelines](https://typing.python.org/en/latest/guides/libraries.html#type-completeness) -- [Mypy documentation](https://mypy.readthedocs.io/) diff --git a/build_tools/analysis/generate_csv.py b/build_tools/analysis/gen-csv.py similarity index 97% rename from build_tools/analysis/generate_csv.py rename to build_tools/analysis/gen-csv.py index b4b7f9f88..1ea7f409e 100644 --- a/build_tools/analysis/generate_csv.py +++ b/build_tools/analysis/gen-csv.py @@ -3,10 +3,10 @@ # SPDX-FileCopyrightText: 2026 PyThaiNLP Project # SPDX-License-Identifier: Apache-2.0 """ -Generate detailed CSV report from type hint analysis +Generate detailed CSV report from type annotation analysis Usage: - python generate_csv.py [--input INPUT_JSON] [--output-dir OUTPUT_DIR] + python gen-csv.py [--input INPUT_JSON] [--output-dir OUTPUT_DIR] Options: --input Input JSON file (default: ./output/type_hint_analysis.json) @@ -19,10 +19,10 @@ def main(): - """Generate CSV files from type hint analysis JSON.""" + """Generate CSV files from type annotation analysis JSON.""" # Parse command line arguments parser = argparse.ArgumentParser( - description="Generate CSV reports from type hint analysis" + description="Generate CSV reports from type annotation analysis" ) parser.add_argument( "--input", diff --git a/build_tools/analysis/output/README.md b/build_tools/analysis/output/README.md index e0421aafb..a1e5da792 100644 --- a/build_tools/analysis/output/README.md +++ b/build_tools/analysis/output/README.md @@ -1,7 +1,12 @@ -# Type Hint Analysis Data Files +# Type annotation analysis data files -This directory contains detailed data files from the type hint coverage -analysis. +This directory contains detailed data files from the type annotation coverage +analysis. Note that the analysis may not be highly accurate and may contain +false positives, partly due to annotation requirement exemptions of certain +cases as listed in the +[Python typing documentation's type completeness guidelines][type-completeness]. + +[type-completeness]: https://typing.python.org/en/latest/guides/libraries.html#type-completeness ## Files @@ -80,9 +85,8 @@ csvsort -c References -r functions_no_hints.csv ## Related Files -- `../../../TYPE_HINT_ANALYSIS.md` - Comprehensive analysis report -- `../type_hint_analyzer.py` - Main analyzer script -- `../generate_csv.py` - CSV generator script +- `../type-analyzer.py` - Main analyzer script +- `../gen-csv.py` - CSV generator script ## Updating the Analysis @@ -93,8 +97,8 @@ To regenerate this analysis: cd build_tools/analysis # Run the analyzer -python3 type_hint_analyzer.py +python type-analyzer.py # Generate CSV files -python3 generate_csv.py +python gen-csv.py ``` diff --git a/build_tools/analysis/output/class_variables_no_hints.csv b/build_tools/analysis/output/class_variables_no_hints.csv deleted file mode 100644 index 4ddea9cd2..000000000 --- a/build_tools/analysis/output/class_variables_no_hints.csv +++ /dev/null @@ -1,2 +0,0 @@ -Variable Name,Submodule,Parent Class,Scope,File,Line -pythainlp.util.trie.Node.__slots__,util,Node,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/trie.py,53 diff --git a/build_tools/analysis/output/functions_incomplete_hints.csv b/build_tools/analysis/output/functions_incomplete_hints.csv deleted file mode 100644 index 16eec6f10..000000000 --- a/build_tools/analysis/output/functions_incomplete_hints.csv +++ /dev/null @@ -1 +0,0 @@ -Function Name,Submodule,Scope,Priority,Params Hinted,Has Return,References,Test Suite,Decorators,File,Line diff --git a/build_tools/analysis/output/functions_no_hints.csv b/build_tools/analysis/output/functions_no_hints.csv deleted file mode 100644 index a0f2e30c4..000000000 --- a/build_tools/analysis/output/functions_no_hints.csv +++ /dev/null @@ -1 +0,0 @@ -Function Name,Submodule,Scope,Priority,References,Test Suite,Decorators,File,Line diff --git a/build_tools/analysis/output/instance_variables_no_hints.csv b/build_tools/analysis/output/instance_variables_no_hints.csv deleted file mode 100644 index 1812c0611..000000000 --- a/build_tools/analysis/output/instance_variables_no_hints.csv +++ /dev/null @@ -1,210 +0,0 @@ -Variable Name,Submodule,Parent Class,Scope,File,Line -pythainlp.augment.lm.fasttext.FastTextAug.model,augment,FastTextAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/fasttext.py,37 -pythainlp.augment.lm.fasttext.FastTextAug.model,augment,FastTextAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/fasttext.py,39 -pythainlp.augment.lm.phayathaibert.ThaiTextAugmenter.tokenizer,augment,ThaiTextAugmenter,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/phayathaibert.py,31 -pythainlp.augment.lm.phayathaibert.ThaiTextAugmenter.model_for_masked_lm,augment,ThaiTextAugmenter,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/phayathaibert.py,32 -pythainlp.augment.lm.phayathaibert.ThaiTextAugmenter.model,augment,ThaiTextAugmenter,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/phayathaibert.py,35 -pythainlp.augment.lm.phayathaibert.ThaiTextAugmenter.processor,augment,ThaiTextAugmenter,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/phayathaibert.py,40 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.model_name,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,28 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.target_tokenizer,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,29 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.tokenizer,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,30 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.fill_mask,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,38 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.MASK_TOKEN,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,44 -pythainlp.augment.lm.wangchanberta.Thai2transformersAug.input_text,augment,Thai2transformersAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/wangchanberta.py,50 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.bpemb_temp,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,35 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.model,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,36 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.aug,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,47 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.sentence,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,71 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.temp,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,72 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.temp_new,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,73 -pythainlp.augment.word2vec.bpemb_wv.BPEmbAug.t,augment,BPEmbAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/bpemb_wv.py,75 -pythainlp.augment.word2vec.core.Word2VecAug.model,augment,Word2VecAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/core.py,36 -pythainlp.augment.word2vec.core.Word2VecAug.model,augment,Word2VecAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/core.py,40 -pythainlp.augment.word2vec.ltw2v.LTW2VAug.ltw2v_wv,augment,LTW2VAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/ltw2v.py,30 -pythainlp.augment.word2vec.ltw2v.LTW2VAug.aug,augment,LTW2VAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/ltw2v.py,46 -pythainlp.augment.word2vec.thai2fit.Thai2fitAug.thai2fit_wv,augment,Thai2fitAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/thai2fit.py,30 -pythainlp.augment.word2vec.thai2fit.Thai2fitAug.aug,augment,Thai2fitAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/thai2fit.py,47 -pythainlp.augment.wordnet.WordNetAug.list_synsets,augment,WordNetAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/wordnet.py,140 -pythainlp.augment.wordnet.WordNetAug.p2w_pos,augment,WordNetAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/wordnet.py,142 -pythainlp.augment.wordnet.WordNetAug.list_synsets,augment,WordNetAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/wordnet.py,144 -pythainlp.augment.wordnet.WordNetAug.list_synsets,augment,WordNetAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/wordnet.py,146 -pythainlp.augment.wordnet.WordNetAug.temp,augment,WordNetAug,public,/home/runner/work/pythainlp/pythainlp/pythainlp/augment/wordnet.py,209 -pythainlp.chat.core.ChatBotModel.history,chat,ChatBotModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/chat/core.py,16 -pythainlp.chat.core.ChatBotModel.model,chat,ChatBotModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/chat/core.py,41 -pythainlp.classify.param_free.GzipModel.training_data,classify,GzipModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py,36 -pythainlp.classify.param_free.GzipModel.cx2_list,classify,GzipModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py,37 -pythainlp.classify.param_free.GzipModel.cx2_list,classify,GzipModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py,109 -pythainlp.classify.param_free.GzipModel.training_data,classify,GzipModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py,110 -pythainlp.cli.tag.SubAppBase.args,cli,SubAppBase,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/tag.py,41 -pythainlp.cli.tag.POSTaggingApp.separator,cli,POSTaggingApp,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/tag.py,55 -pythainlp.cli.tag.POSTaggingApp.run,cli,POSTaggingApp,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/tag.py,56 -pythainlp.cli.tokenize.SubAppBase.args,cli,SubAppBase,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/tokenize.py,77 -pythainlp.corpus.core._ResponseWrapper.status_code,corpus,_ResponseWrapper,public,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py,42 -pythainlp.corpus.core._ResponseWrapper.headers,corpus,_ResponseWrapper,public,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py,43 -pythainlp.corpus.core._ResponseWrapper._content,corpus,_ResponseWrapper,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py,44 -pythainlp.el._multiel.MultiEL.model_name,el,MultiEL,public,/home/runner/work/pythainlp/pythainlp/pythainlp/el/_multiel.py,18 -pythainlp.el._multiel.MultiEL.device,el,MultiEL,public,/home/runner/work/pythainlp/pythainlp/pythainlp/el/_multiel.py,19 -pythainlp.el._multiel.MultiEL._bela_run,el,MultiEL,private,/home/runner/work/pythainlp/pythainlp/pythainlp/el/_multiel.py,29 -pythainlp.generate.core.Unigram.counts,generate,Unigram,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py,43 -pythainlp.generate.core.Unigram.counts,generate,Unigram,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py,45 -pythainlp.generate.core.Unigram._word_prob,generate,Unigram,private,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py,83 -pythainlp.spell.words_spelling_correction.FastTextEncoder.model_dir,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,68 -pythainlp.spell.words_spelling_correction.FastTextEncoder.nn_model_path,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,69 -pythainlp.spell.words_spelling_correction.FastTextEncoder.bucket,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,70 -pythainlp.spell.words_spelling_correction.FastTextEncoder.nb_words,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,71 -pythainlp.spell.words_spelling_correction.FastTextEncoder.minn,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,72 -pythainlp.spell.words_spelling_correction.FastTextEncoder.maxn,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,73 -pythainlp.spell.words_spelling_correction.FastTextEncoder.words_for_suggestion,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,77 -pythainlp.spell.words_spelling_correction.FastTextEncoder.nn_session,spell,FastTextEncoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,78 -pythainlp.spell.words_spelling_correction.Words_Spelling_Correction.list_word,spell,Words_Spelling_Correction,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,267 -pythainlp.summarize.keybert.KeyBERT.ft_pipeline,summarize,KeyBERT,public,/home/runner/work/pythainlp/pythainlp/pythainlp/summarize/keybert.py,34 -pythainlp.tag._tag_perceptron.PerceptronTagger.tagdict,tag,PerceptronTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/_tag_perceptron.py,221 -pythainlp.tag._tag_perceptron.PerceptronTagger.classes,tag,PerceptronTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/_tag_perceptron.py,222 -pythainlp.tag.crfchunk.CRFchunk._model_file_ctx,tag,CRFchunk,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py,90 -pythainlp.tag.crfchunk.CRFchunk._model_file_ctx,tag,CRFchunk,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py,112 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,51 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,55 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,61 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,65 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,73 -pythainlp.tag.named_entity.NER.engine,tag,NER,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py,78 -pythainlp.tag.thainer.ThaiNameTagger.pos_tag_name,tag,ThaiNameTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/thainer.py,128 -pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX._json,tag,WngchanBerta_ONNX,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py,55 -pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.id2tag,tag,WngchanBerta_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py,56 -pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX._s,tag,WngchanBerta_ONNX,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py,101 -pythainlp.tokenize.attacut.AttacutTokenizer._MODEL_NAME,tokenize,AttacutTokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/attacut.py,23 -pythainlp.tokenize.attacut.AttacutTokenizer._MODEL_NAME,tokenize,AttacutTokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/attacut.py,26 -pythainlp.tokenize.attacut.AttacutTokenizer._tokenizer,tokenize,AttacutTokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/attacut.py,28 -pythainlp.tokenize.core.Tokenizer.__trie_dict,tokenize,Tokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py,944 -pythainlp.tokenize.core.Tokenizer.__trie_dict,tokenize,Tokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py,946 -pythainlp.tokenize.core.Tokenizer.__engine,tokenize,Tokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py,996 -pythainlp.tokenize.han_solo.Featurizer.N,tokenize,Featurizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,61 -pythainlp.tokenize.han_solo.Featurizer.delimiter,tokenize,Featurizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,62 -pythainlp.tokenize.han_solo.Featurizer.radius,tokenize,Featurizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,63 -pythainlp.tokenize.longest.LongestMatchTokenizer.__trie,tokenize,LongestMatchTokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,52 -pythainlp.tokenize.multi_cut.LatticeString.unique,tokenize,LatticeString,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py,45 -pythainlp.tokenize.multi_cut.LatticeString.multi,tokenize,LatticeString,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py,47 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,75 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,79 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,83 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,87 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,91 -pythainlp.translate.core.Translate.model,translate,Translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py,95 -pythainlp.translate.en_th.EnThTranslator._model,translate,EnThTranslator,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py,89 -pythainlp.translate.small100.Small100Translator.pretrained,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,36 -pythainlp.translate.small100.Small100Translator.model,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,37 -pythainlp.translate.small100.Small100Translator.tgt_lang,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,40 -pythainlp.translate.small100.Small100Translator.model,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,42 -pythainlp.translate.small100.Small100Translator.tokenizer,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,74 -pythainlp.translate.small100.Small100Translator.tgt_lang,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,77 -pythainlp.translate.small100.Small100Translator.translated,translate,Small100Translator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py,78 -pythainlp.translate.th_fr.ThFrTranslator.tokenizer_thfr,translate,ThFrTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/th_fr.py,49 -pythainlp.translate.th_fr.ThFrTranslator.model_thfr,translate,ThFrTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/th_fr.py,50 -pythainlp.translate.th_fr.ThFrTranslator.model_thfr,translate,ThFrTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/th_fr.py,52 -pythainlp.translate.th_fr.ThFrTranslator.translated,translate,ThFrTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/th_fr.py,73 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.sp_model_kwargs,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,158 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.language_codes,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,162 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.lang_code_to_token,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,164 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.vocab_file,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,192 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.encoder,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,196 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.decoder,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,197 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.spm_file,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,198 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.sp_model,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,199 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.encoder_size,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,201 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.lang_token_to_id,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,203 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.lang_code_to_id,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,207 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.id_to_lang_token,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,211 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer._tgt_lang,translate,SMALL100Tokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,215 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.cur_lang_id,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,216 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.num_madeup_words,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,219 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer._tgt_lang,translate,SMALL100Tokenizer,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,232 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.__dict__,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,355 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.sp_model_kwargs,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,359 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.sp_model,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,361 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.tgt_lang,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,398 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.tgt_lang,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,411 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.prefix_tokens,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,419 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.suffix_tokens,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,420 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.cur_lang_id,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,426 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.prefix_tokens,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,427 -pythainlp.translate.tokenization_small100.SMALL100Tokenizer.suffix_tokens,translate,SMALL100Tokenizer,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,428 -pythainlp.translate.zh_th.ThZhTranslator.tokenizer_thzh,translate,ThZhTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,43 -pythainlp.translate.zh_th.ThZhTranslator.model_thzh,translate,ThZhTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,44 -pythainlp.translate.zh_th.ThZhTranslator.model_thzh,translate,ThZhTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,46 -pythainlp.translate.zh_th.ThZhTranslator.translated,translate,ThZhTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,67 -pythainlp.translate.zh_th.ZhThTranslator.tokenizer_zhth,translate,ZhThTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,99 -pythainlp.translate.zh_th.ZhThTranslator.model_zhth,translate,ZhThTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,100 -pythainlp.translate.zh_th.ZhThTranslator.translated,translate,ZhThTranslator,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py,123 -pythainlp.transliterate.thai2rom.Encoder.hidden_size,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,124 -pythainlp.transliterate.thai2rom.Encoder.character_embedding,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,125 -pythainlp.transliterate.thai2rom.Encoder.rnn,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,128 -pythainlp.transliterate.thai2rom.Encoder.dropout,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,135 -pythainlp.transliterate.thai2rom.Attn.method,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,188 -pythainlp.transliterate.thai2rom.Attn.hidden_size,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,189 -pythainlp.transliterate.thai2rom.Attn.attn,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,194 -pythainlp.transliterate.thai2rom.Attn.attn,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,197 -pythainlp.transliterate.thai2rom.Attn.other,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,198 -pythainlp.transliterate.thai2rom.AttentionDecoder.vocabulary_size,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,247 -pythainlp.transliterate.thai2rom.AttentionDecoder.hidden_size,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,248 -pythainlp.transliterate.thai2rom.AttentionDecoder.character_embedding,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,249 -pythainlp.transliterate.thai2rom.AttentionDecoder.rnn,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,252 -pythainlp.transliterate.thai2rom.AttentionDecoder.attn,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,259 -pythainlp.transliterate.thai2rom.AttentionDecoder.linear,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,260 -pythainlp.transliterate.thai2rom.AttentionDecoder.dropout,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,262 -pythainlp.transliterate.thai2rom.Seq2Seq.encoder,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,308 -pythainlp.transliterate.thai2rom.Seq2Seq.decoder,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,309 -pythainlp.transliterate.thai2rom.Seq2Seq.pad_idx,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,310 -pythainlp.transliterate.thai2rom.Seq2Seq.target_start_token,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,311 -pythainlp.transliterate.thai2rom.Seq2Seq.target_end_token,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,312 -pythainlp.transliterate.thai2rom.Seq2Seq.max_length,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,313 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.encoder,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,106 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.decoder,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,107 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.pad_idx,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,108 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.target_start_token,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,109 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.target_end_token,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,110 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.max_length,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,111 -pythainlp.transliterate.thai2rom_onnx.Seq2Seq_ONNX.target_vocab_size,transliterate,Seq2Seq_ONNX,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,113 -pythainlp.transliterate.thaig2p.Encoder.hidden_size,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,135 -pythainlp.transliterate.thaig2p.Encoder.character_embedding,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,136 -pythainlp.transliterate.thaig2p.Encoder.rnn,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,139 -pythainlp.transliterate.thaig2p.Encoder.dropout,transliterate,Encoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,146 -pythainlp.transliterate.thaig2p.Attn.method,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,205 -pythainlp.transliterate.thaig2p.Attn.hidden_size,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,206 -pythainlp.transliterate.thaig2p.Attn.attn,transliterate,Attn,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,212 -pythainlp.transliterate.thaig2p.AttentionDecoder.vocabulary_size,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,264 -pythainlp.transliterate.thaig2p.AttentionDecoder.hidden_size,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,265 -pythainlp.transliterate.thaig2p.AttentionDecoder.character_embedding,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,266 -pythainlp.transliterate.thaig2p.AttentionDecoder.rnn,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,269 -pythainlp.transliterate.thaig2p.AttentionDecoder.attn,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,276 -pythainlp.transliterate.thaig2p.AttentionDecoder.linear,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,277 -pythainlp.transliterate.thaig2p.AttentionDecoder.dropout,transliterate,AttentionDecoder,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,279 -pythainlp.transliterate.thaig2p.Seq2Seq.encoder,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,325 -pythainlp.transliterate.thaig2p.Seq2Seq.decoder,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,326 -pythainlp.transliterate.thaig2p.Seq2Seq.pad_idx,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,327 -pythainlp.transliterate.thaig2p.Seq2Seq.target_start_token,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,328 -pythainlp.transliterate.thaig2p.Seq2Seq.target_end_token,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,329 -pythainlp.transliterate.thaig2p.Seq2Seq.max_length,transliterate,Seq2Seq,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,330 -pythainlp.transliterate.umt5_thaig2p.Umt5ThaiG2P.pipe,transliterate,Umt5ThaiG2P,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/umt5_thaig2p.py,35 -pythainlp.transliterate.w2p.Thai_W2P.checkpoint,transliterate,Thai_W2P,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,89 -pythainlp.transliterate.w2p.Thai_W2P.word,transliterate,Thai_W2P,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,172 -pythainlp.transliterate.w2p.Thai_W2P.word,transliterate,Thai_W2P,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,173 -pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,119 -pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,120 -pythainlp.transliterate.wunsen.WunsenTransliterate.system,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,121 -pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,123 -pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,124 -pythainlp.transliterate.wunsen.WunsenTransliterate.system,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,125 -pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,127 -pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,128 -pythainlp.transliterate.wunsen.WunsenTransliterate.system,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,129 -pythainlp.transliterate.wunsen.WunsenTransliterate.lang,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,134 -pythainlp.transliterate.wunsen.WunsenTransliterate.thap_value,transliterate,WunsenTransliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py,145 -pythainlp.util.trie.Trie.words,util,Trie,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/trie.py,60 -pythainlp.util.trie.Trie.root,util,Trie,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/trie.py,61 -pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner,wangchanberta,ThaiNameTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py,112 -pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner,wangchanberta,ThaiNameTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py,118 -pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner,wangchanberta,ThaiNameTagger,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py,126 -pythainlp.word_vector.core.WordVector.tokenize,word_vector,WordVector,public,/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py,68 -pythainlp.word_vector.core.WordVector.tokenize,word_vector,WordVector,public,/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py,70 -pythainlp.wsd.core._SentenceTransformersModel.device,wsd,_SentenceTransformersModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py,45 -pythainlp.wsd.core._SentenceTransformersModel.model,wsd,_SentenceTransformersModel,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py,46 diff --git a/build_tools/analysis/output/module_variables_no_hints.csv b/build_tools/analysis/output/module_variables_no_hints.csv deleted file mode 100644 index 88e8ed985..000000000 --- a/build_tools/analysis/output/module_variables_no_hints.csv +++ /dev/null @@ -1,228 +0,0 @@ -Variable Name,Submodule,Scope,File,Line -pythainlp.ancient.aksonhan.unknown,ancient,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py,18 -pythainlp.ancient.aksonhan.unknown,ancient,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py,19 -pythainlp.ancient.aksonhan.unknown,ancient,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py,20 -pythainlp.cli.stdout,cli,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/__init__.py,18 -pythainlp.cli.stderr,cli,public,/home/runner/work/pythainlp/pythainlp/pythainlp/cli/__init__.py,19 -pythainlp.coref.core._MODEL,coref,private,/home/runner/work/pythainlp/pythainlp/pythainlp/coref/core.py,8 -pythainlp.corpus.tnc.__all__,corpus,public,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/tnc.py,8 -pythainlp.corpus.tnc._UNIGRAM_FILENAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/tnc.py,19 -pythainlp.corpus.tnc._BIGRAM_CORPUS_NAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/tnc.py,20 -pythainlp.corpus.tnc._TRIGRAM_CORPUS_NAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/tnc.py,21 -pythainlp.corpus.ttc.__all__,corpus,public,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/ttc.py,12 -pythainlp.corpus.ttc._UNIGRAM_FILENAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/ttc.py,18 -pythainlp.corpus.volubilis._VOLUBILIS_WORDS,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/volubilis.py,10 -pythainlp.corpus.volubilis._VOLUBILIS_FILENAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/volubilis.py,11 -pythainlp.corpus.wikipedia._WIKIPEDIA_TITLES,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/wikipedia.py,10 -pythainlp.corpus.wikipedia._WIKIPEDIA_TITLES_FILENAME,corpus,private,/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/wikipedia.py,11 -pythainlp.el.__all__,el,public,/home/runner/work/pythainlp/pythainlp/pythainlp/el/__init__.py,6 -pythainlp.generate.__all__,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/__init__.py,6 -pythainlp.generate.thai2fit.__all__,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,12 -pythainlp.generate.thai2fit.imdb,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,41 -pythainlp.generate.thai2fit.dummy_df,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,42 -pythainlp.generate.thai2fit.thwiki,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,45 -pythainlp.generate.thai2fit.thwiki_itos,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,61 -pythainlp.generate.thai2fit.thwiki_vocab,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,62 -pythainlp.generate.thai2fit.tt,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,65 -pythainlp.generate.thai2fit.processor,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,71 -pythainlp.generate.thai2fit.data_lm,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,75 -pythainlp.generate.thai2fit.config,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,85 -pythainlp.generate.thai2fit.trn_args,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,99 -pythainlp.generate.thai2fit.learn,generate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/generate/thai2fit.py,101 -pythainlp.lm.__all__,lm,public,/home/runner/work/pythainlp/pythainlp/pythainlp/lm/__init__.py,5 -pythainlp.parse.core._tagger_name,parse,private,/home/runner/work/pythainlp/pythainlp/pythainlp/parse/core.py,9 -pythainlp.phayathaibert.__all__,phayathaibert,public,/home/runner/work/pythainlp/pythainlp/pythainlp/phayathaibert/__init__.py,6 -pythainlp.phayathaibert.core._PAT_URL,phayathaibert,private,/home/runner/work/pythainlp/pythainlp/pythainlp/phayathaibert/core.py,18 -pythainlp.phayathaibert.core._model_name,phayathaibert,private,/home/runner/work/pythainlp/pythainlp/pythainlp/phayathaibert/core.py,20 -pythainlp.phayathaibert.core._tokenizer,phayathaibert,private,/home/runner/work/pythainlp/pythainlp/pythainlp/phayathaibert/core.py,21 -pythainlp.spell.phunspell.pspell,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/phunspell.py,22 -pythainlp.spell.symspellpy._UNIGRAM_FILENAME,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/symspellpy.py,28 -pythainlp.spell.symspellpy._BIGRAM_CORPUS_NAME,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/symspellpy.py,29 -pythainlp.spell.symspellpy._sym_spell,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/symspellpy.py,31 -pythainlp.spell.symspellpy._unigram_file_ctx,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/symspellpy.py,32 -pythainlp.spell.symspellpy._load_lock,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/symspellpy.py,35 -pythainlp.spell.wanchanberta_thai_grammarly.use_cuda,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,27 -pythainlp.spell.wanchanberta_thai_grammarly.device,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,28 -pythainlp.spell.wanchanberta_thai_grammarly.tokenizer,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,29 -pythainlp.spell.wanchanberta_thai_grammarly.tagging_model,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,56 -pythainlp.spell.wanchanberta_thai_grammarly.tagging_model,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,58 -pythainlp.spell.wanchanberta_thai_grammarly.ids_to_labels,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,59 -pythainlp.spell.wanchanberta_thai_grammarly.mlm_model,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,100 -pythainlp.spell.wanchanberta_thai_grammarly.mlm_model,spell,public,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py,104 -pythainlp.spell.words_spelling_correction._WSC,spell,private,/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py,271 -pythainlp.summarize.freq._STOPWORDS,summarize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/summarize/freq.py,16 -pythainlp.tag.thai_nner.__all__,tag,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/thai_nner.py,18 -pythainlp.tag.thainer.__all__,tag,public,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/thainer.py,8 -pythainlp.tag.thainer._TOKENIZER_ENGINE,tag,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tag/thainer.py,21 -pythainlp.tokenize._utils._DIGITS_WITH_SEPARATOR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/_utils.py,11 -pythainlp.tokenize.attacut._tokenizers_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/attacut.py,35 -pythainlp.tokenize.budoux._parser,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/budoux.py,18 -pythainlp.tokenize.budoux._parser_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/budoux.py,19 -pythainlp.tokenize.core._RE_WHITESPACE,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py,28 -pythainlp.tokenize.core._RE_WORD_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py,29 -pythainlp.tokenize.crfcut._ENDERS,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/crfcut.py,27 -pythainlp.tokenize.crfcut._STARTERS,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/crfcut.py,80 -pythainlp.tokenize.crfcut._CRFCUT_DATA_FILENAME,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/crfcut.py,177 -pythainlp.tokenize.crfcut._tagger,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/crfcut.py,178 -pythainlp.tokenize.etcc._PAT_ENDING_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/etcc.py,37 -pythainlp.tokenize.etcc._RE_ENDING_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/etcc.py,38 -pythainlp.tokenize.han_solo._tagger,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,22 -pythainlp.tokenize.han_solo._model_file_ctx,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,23 -pythainlp.tokenize.han_solo._load_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,24 -pythainlp.tokenize.han_solo._to_feature,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/han_solo.py,154 -pythainlp.tokenize.longest._FRONT_DEP_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,23 -pythainlp.tokenize.longest._REAR_DEP_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,39 -pythainlp.tokenize.longest._TRAILING_CHAR,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,40 -pythainlp.tokenize.longest._RE_NONTHAI,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,42 -pythainlp.tokenize.longest._KNOWN,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,44 -pythainlp.tokenize.longest._UNKNOWN,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,45 -pythainlp.tokenize.longest._tokenizers_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/longest.py,163 -pythainlp.tokenize.multi_cut._RE_NONTHAI,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py,51 -pythainlp.tokenize.multi_cut._PAT_NONTHAI,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py,57 -pythainlp.tokenize.nercut._thainer,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/nercut.py,19 -pythainlp.tokenize.newmm._PAT_NONTHAI,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,32 -pythainlp.tokenize.newmm._PAT_THAI_TWOCHARS,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,43 -pythainlp.tokenize.newmm._MAX_GRAPH_SIZE,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,47 -pythainlp.tokenize.newmm._TEXT_SCAN_POINT,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,50 -pythainlp.tokenize.newmm._TEXT_SCAN_LEFT,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,51 -pythainlp.tokenize.newmm._TEXT_SCAN_RIGHT,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,52 -pythainlp.tokenize.newmm._TEXT_SCAN_BEGIN,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,53 -pythainlp.tokenize.newmm._TEXT_SCAN_END,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/newmm.py,54 -pythainlp.tokenize.nlpo3._NLPO3_DEFAULT_DICT_NAME,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/nlpo3.py,17 -pythainlp.tokenize.nlpo3._NLPO3_DEFAULT_DICT,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/nlpo3.py,18 -pythainlp.tokenize.nlpo3._dict_file_ctx,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/nlpo3.py,19 -pythainlp.tokenize.nlpo3._load_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/nlpo3.py,20 -pythainlp.tokenize.oskut._DEFAULT_ENGINE,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/oskut.py,19 -pythainlp.tokenize.oskut._engine_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/oskut.py,20 -pythainlp.tokenizeicu._thread_local,tokenizeicu,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/pyicu.py,21 -pythainlp.tokenize.sefr_cut._DEFAULT_ENGINE,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/sefr_cut.py,18 -pythainlp.tokenize.sefr_cut._engine_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/sefr_cut.py,19 -pythainlp.tokenize.tcc._RE_TCC,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/tcc.py,20 -pythainlp.tokenize.tcc._PAT_TCC,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/tcc.py,59 -pythainlp.tokenize.tcc_p._RE_TCC,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/tcc_p.py,21 -pythainlp.tokenize.tcc_p._PAT_TCC,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/tcc_p.py,59 -pythainlp.tokenize.wtsplit._MODEL,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/wtsplit.py,16 -pythainlp.tokenize.wtsplit._MODEL_NAME,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/wtsplit.py,17 -pythainlp.tokenize.wtsplit._model_lock,tokenize,private,/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/wtsplit.py,18 -pythainlp.translate.__all__,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/__init__.py,6 -pythainlp.translate.en_th._EN_TH_MODEL_NAME,translate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py,32 -pythainlp.translate.en_th._EN_TH_FILE_NAME,translate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py,34 -pythainlp.translate.en_th._TH_EN_MODEL_NAME,translate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py,36 -pythainlp.translate.en_th._TH_EN_FILE_NAME,translate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py,38 -pythainlp.translate.tokenization_small100.SPIECE_UNDERLINE,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,37 -pythainlp.translate.tokenization_small100.VOCAB_FILES_NAMES,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,39 -pythainlp.translate.tokenization_small100.PRETRAINED_VOCAB_FILES_MAP,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,45 -pythainlp.translate.tokenization_small100.PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,57 -pythainlp.translate.tokenization_small100.FAIRSEQ_LANGUAGE_CODES,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/tokenization_small100.py,62 -pythainlp.translate.word2word_translate.support_list,translate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/translate/word2word_translate.py,10 -pythainlp.transliterate.iso_11940._all_dict,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/iso_11940.py,125 -pythainlp.transliterate.iso_11940._keys_set,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/iso_11940.py,131 -pythainlp.transliterate.lookup._TRANSLITERATE_IDX,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/lookup.py,22 -pythainlp.transliterateicu._ICU_THAI_TO_LATIN,transliterateicu,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/pyicu.py,16 -pythainlp.transliterate.royin._vowel_patterns,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py,73 -pythainlp.transliterate.royin._vowel_patterns,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py,74 -pythainlp.transliterate.royin._vowel_patterns,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py,75 -pythainlp.transliterate.spoonerism._list_consonants,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/spoonerism.py,9 -pythainlp.transliterate.thai2rom.device,transliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,20 -pythainlp.transliterate.thai2rom._MODEL_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,22 -pythainlp.transliterate.thai2rom._THAI_TO_ROM,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py,398 -pythainlp.transliterate.thai2rom_onnx._MODEL_ENCODER_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,19 -pythainlp.transliterate.thai2rom_onnx._MODEL_DECODER_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,20 -pythainlp.transliterate.thai2rom_onnx._MODEL_CONFIG_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,21 -pythainlp.transliterate.thai2rom_onnx._THAI_TO_ROM_ONNX,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom_onnx.py,184 -pythainlp.transliterate.thaig2p.device,transliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,23 -pythainlp.transliterate.thaig2p._MODEL_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,25 -pythainlp.transliterate.thaig2p._THAI_G2P,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py,413 -pythainlp.transliterate.thaig2p_v2._THAI_G2P,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p_v2.py,45 -pythainlp.transliterate.umt5_thaig2p._THAI_G2P,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/umt5_thaig2p.py,45 -pythainlp.transliterate.w2p._GRAPHEMES,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,19 -pythainlp.transliterate.w2p._PHONEMES,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,22 -pythainlp.transliterate.w2p._MODEL_NAME,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,26 -pythainlp.transliterate.w2p.hp,transliterate,public,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,41 -pythainlp.transliterate.w2p._THAI_W2P,transliterate,private,/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py,229 -pythainlp.ulmfit.core.device,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,34 -pythainlp.ulmfit.core._MODEL_NAME_LSTM,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,36 -pythainlp.ulmfit.core._ITOS_NAME_LSTM,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,37 -pythainlp.ulmfit.core.THWIKI_LSTM,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,44 -pythainlp.ulmfit.core.pre_rules_th,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,76 -pythainlp.ulmfit.core.post_rules_th,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,86 -pythainlp.ulmfit.core.pre_rules_th_sparse,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,89 -pythainlp.ulmfit.core.post_rules_th_sparse,ulmfit,public,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/core.py,90 -pythainlp.ulmfit.preprocess._TK_UNK,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/preprocess.py,15 -pythainlp.ulmfit.preprocess._TK_REP,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/preprocess.py,16 -pythainlp.ulmfit.preprocess._TK_WREP,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/preprocess.py,17 -pythainlp.ulmfit.preprocess._TK_END,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/preprocess.py,18 -pythainlp.ulmfit.preprocess._TK_URL,ulmfit,private,/home/runner/work/pythainlp/pythainlp/pythainlp/ulmfit/preprocess.py,19 -pythainlp.util.collate._RE_TONE,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/collate.py,13 -pythainlp.util.collate._RE_LV_C,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/collate.py,14 -pythainlp.util.date.__all__,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,17 -pythainlp.util.date.thai_abbr_weekdays,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,31 -pythainlp.util.date.thai_full_weekdays,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,32 -pythainlp.util.date.thai_abbr_months,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,42 -pythainlp.util.date.thai_full_months,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,56 -pythainlp.util.date.thai_full_month_lists,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,70 -pythainlp.util.date.thai_full_month_lists_regex,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,84 -pythainlp.util.date.year_all_regex,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,87 -pythainlp.util.date.dates_list,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,88 -pythainlp.util.date._DAY,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/date.py,96 -pythainlp.util.digitconv._spell_digit,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/digitconv.py,47 -pythainlp.util.digitconv._arabic_thai_translate_table,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/digitconv.py,60 -pythainlp.util.digitconv._thai_arabic_translate_table,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/digitconv.py,61 -pythainlp.util.digitconv._digit_spell_translate_table,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/digitconv.py,62 -pythainlp.util.emojiconv._th_emoji,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/emojiconv.py,1829 -pythainlp.util.emojiconv._emojis,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/emojiconv.py,1831 -pythainlp.util.emojiconv._emoji_regex,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/emojiconv.py,1832 -pythainlp.util.emojiconv._delimiter,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/emojiconv.py,1833 -pythainlp.util.keyboard.EN_TH_KEYB_PAIRS,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,10 -pythainlp.util.keyboard.TH_EN_KEYB_PAIRS,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,105 -pythainlp.util.keyboard.EN_TH_TRANSLATE_TABLE,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,107 -pythainlp.util.keyboard.TH_EN_TRANSLATE_TABLE,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,108 -pythainlp.util.keyboard.TIS_820_2531_MOD,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,110 -pythainlp.util.keyboard.TIS_820_2531_MOD_SHIFT,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keyboard.py,116 -pythainlp.util.keywords._STOPWORDS,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/keywords.py,11 -pythainlp.util.morse.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py,126 -pythainlp.util.morse.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py,130 -pythainlp.util.morse.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py,133 -pythainlp.util.normalize._RE_TONEMARKS,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/normalize.py,51 -pythainlp.util.normalize._RE_REMOVE_NEWLINES,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/normalize.py,53 -pythainlp.util.normalize._RE_REMOVE_SPACES_BEFORE_NONBASE,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/normalize.py,58 -pythainlp.util.phoneme.consonants_ipa_nectec,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,14 -pythainlp.util.phoneme.monophthong_ipa_nectec,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,39 -pythainlp.util.phoneme.diphthong_ipa_nectec,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,62 -pythainlp.util.phoneme.tones_ipa_nectec,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,71 -pythainlp.util.phoneme.dict_nectec_to_ipa,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,79 -pythainlp.util.phoneme.dict_ipa_rtgs,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,124 -pythainlp.util.phoneme.dict_ipa_rtgs_final,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/phoneme.py,194 -pythainlp.util.pronounce.kv,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/pronounce.py,14 -pythainlp.util.pronounce.all_thai_words_dict,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/pronounce.py,15 -pythainlp.util.pronounce.thai_vowel,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/pronounce.py,45 -pythainlp.util.pronounce.thai_vowel_all,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/pronounce.py,51 -pythainlp.util.spell_words._r1,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,21 -pythainlp.util.spell_words._r2,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,22 -pythainlp.util.spell_words.tonemarks,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,23 -pythainlp.util.spell_words.dict_vowel_ex,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,38 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,40 -pythainlp.util.spell_words.dict_vowel,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,43 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,45 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,49 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,51 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,53 -pythainlp.util.spell_words.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py,55 -pythainlp.util.strftime.__all__,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/strftime.py,20 -pythainlp.util.strftime._HA_TH_DIGITS,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/strftime.py,24 -pythainlp.util.strftime._BE_AD_DIFFERENCE,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/strftime.py,25 -pythainlp.util.strftime._NEED_L10N,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/strftime.py,27 -pythainlp.util.strftime._EXTENSIONS,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/strftime.py,28 -pythainlp.util.syllable.unknown,util,public,/home/runner/work/pythainlp/pythainlp/pythainlp/util/syllable.py,61 -pythainlp.util.thai_lunar_date._BEGIN_DATES,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/thai_lunar_date.py,129 -pythainlp.util.thai_lunar_date._DAYS_354,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/thai_lunar_date.py,188 -pythainlp.util.thai_lunar_date._DAYS_355,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/thai_lunar_date.py,189 -pythainlp.util.thai_lunar_date._DAYS_384,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/thai_lunar_date.py,190 -pythainlp.util.time._TIME_FORMAT_WITH_SEC,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/time.py,19 -pythainlp.util.time._TIME_FORMAT_WITHOUT_SEC,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/time.py,20 -pythainlp.util.time._DICT_THAI_TIME,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/time.py,21 -pythainlp.util.time._THAI_TIME_AFFIX,util,private,/home/runner/work/pythainlp/pythainlp/pythainlp/util/time.py,56 -pythainlp.wangchanberta.__all__,wangchanberta,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/__init__.py,4 -pythainlp.wangchanberta.core._model_name,wangchanberta,private,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py,16 -pythainlp.wangchanberta.core._tokenizer,wangchanberta,private,/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py,17 -pythainlp.wsd.core.unknown,wsd,public,/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py,19 diff --git a/build_tools/analysis/output/submodule_summary.csv b/build_tools/analysis/output/submodule_summary.csv deleted file mode 100644 index 39f9f8c32..000000000 --- a/build_tools/analysis/output/submodule_summary.csv +++ /dev/null @@ -1,32 +0,0 @@ -Submodule,Total,Complete,Incomplete,None,% Complete,Mypy Errors -__main__,1,1,0,0,100.00%,0 -ancient,2,2,0,0,100.00%,26 -augment,29,29,0,0,100.00%,33 -benchmarks,8,8,0,0,100.00%,26 -chat,4,4,0,0,100.00%,28 -classify,5,5,0,0,100.00%,26 -cli,21,21,0,0,100.00%,28 -coref,5,5,0,0,100.00%,26 -corpus,70,70,0,0,100.00%,26 -el,5,5,0,0,100.00%,26 -generate,15,15,0,0,100.00%,31 -khavee,9,9,0,0,100.00%,26 -lm,2,2,0,0,100.00%,26 -morpheme,2,2,0,0,100.00%,26 -parse,9,9,0,0,100.00%,28 -phayathaibert,19,19,0,0,100.00%,26 -soundex,27,27,0,0,100.00%,26 -spell,43,43,0,0,100.00%,26 -summarize,17,17,0,0,100.00%,31 -tag,73,73,0,0,100.00%,28 -tokenize,73,73,0,0,100.00%,26 -tokenizeicu,3,3,0,0,100.00%,0 -tools,9,9,0,0,100.00%,26 -translate,44,44,0,0,100.00%,33 -transliterate,75,75,0,0,100.00%,27 -transliterateicu,1,1,0,0,100.00%,0 -ulmfit,25,25,0,0,100.00%,30 -util,109,109,0,0,100.00%,26 -wangchanberta,9,9,0,0,100.00%,26 -word_vector,7,7,0,0,100.00%,33 -wsd,4,4,0,0,100.00%,28 diff --git a/build_tools/analysis/output/type_aliases.csv b/build_tools/analysis/output/type_aliases.csv deleted file mode 100644 index ce7759191..000000000 --- a/build_tools/analysis/output/type_aliases.csv +++ /dev/null @@ -1 +0,0 @@ -Type Alias Name,Submodule,Scope,File,Line diff --git a/build_tools/analysis/output/type_hint_analysis.json b/build_tools/analysis/output/type_hint_analysis.json deleted file mode 100644 index de57eeb46..000000000 --- a/build_tools/analysis/output/type_hint_analysis.json +++ /dev/null @@ -1,1225 +0,0 @@ -{ - "statistics": { - "functions": { - "total": 725, - "complete": 725, - "incomplete": 0, - "none": 0, - "pct_complete": 100.0, - "pct_incomplete": 0.0, - "pct_none": 0.0 - }, - "variables": { - "total": 1256, - "complete": 1110, - "none": 146, - "pct_complete": 88.37579617834395, - "pct_none": 11.624203821656051, - "class_variables": 300, - "instance_variables": 434, - "module_variables": 522 - }, - "type_aliases": { - "total": 0 - }, - "classes": { - "total": 97 - } - }, - "by_submodule": { - "__main__": { - "complete": 1, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "ancient": { - "complete": 2, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "augment": { - "complete": 29, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "benchmarks": { - "complete": 8, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "chat": { - "complete": 4, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "classify": { - "complete": 5, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "cli": { - "complete": 21, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "coref": { - "complete": 5, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "corpus": { - "complete": 70, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "el": { - "complete": 5, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "generate": { - "complete": 15, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "khavee": { - "complete": 9, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "lm": { - "complete": 2, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "morpheme": { - "complete": 2, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "parse": { - "complete": 9, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "phayathaibert": { - "complete": 19, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "soundex": { - "complete": 27, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "spell": { - "complete": 43, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "summarize": { - "complete": 17, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "tag": { - "complete": 73, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "tokenize": { - "complete": 73, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "tokenizeicu": { - "complete": 3, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "tools": { - "complete": 9, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "translate": { - "complete": 44, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "transliterate": { - "complete": 75, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "transliterateicu": { - "complete": 1, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "ulmfit": { - "complete": 25, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "util": { - "complete": 109, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "wangchanberta": { - "complete": 9, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "word_vector": { - "complete": 7, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - }, - "wsd": { - "complete": 4, - "incomplete": 0, - "none": 0, - "mypy_errors": 0 - } - }, - "functions_no_hints": [], - "functions_incomplete_hints": [], - "class_variables_no_hints": [], - "instance_variables_no_hints": [ - { - "name": "pythainlp.augment.lm.fasttext.FastTextAug.model", - "scope": "public", - "parent_class": "FastTextAug", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/fasttext.py", - "line": 37 - }, - { - "name": "pythainlp.augment.lm.fasttext.FastTextAug.model", - "scope": "public", - "parent_class": "FastTextAug", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/augment/lm/fasttext.py", - "line": 39 - }, - { - "name": "pythainlp.augment.word2vec.core.Word2VecAug.model", - "scope": "public", - "parent_class": "Word2VecAug", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/core.py", - "line": 32 - }, - { - "name": "pythainlp.augment.word2vec.core.Word2VecAug.model", - "scope": "public", - "parent_class": "Word2VecAug", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/core.py", - "line": 34 - }, - { - "name": "pythainlp.augment.word2vec.core.Word2VecAug.model", - "scope": "public", - "parent_class": "Word2VecAug", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/augment/word2vec/core.py", - "line": 38 - }, - { - "name": "pythainlp.chat.core.ChatBotModel.history", - "scope": "public", - "parent_class": "ChatBotModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/chat/core.py", - "line": 20 - }, - { - "name": "pythainlp.chat.core.ChatBotModel.history", - "scope": "public", - "parent_class": "ChatBotModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/chat/core.py", - "line": 24 - }, - { - "name": "pythainlp.chat.core.ChatBotModel.model", - "scope": "public", - "parent_class": "ChatBotModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/chat/core.py", - "line": 54 - }, - { - "name": "pythainlp.classify.param_free.GzipModel.training_data", - "scope": "public", - "parent_class": "GzipModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py", - "line": 38 - }, - { - "name": "pythainlp.classify.param_free.GzipModel.cx2_list", - "scope": "public", - "parent_class": "GzipModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py", - "line": 39 - }, - { - "name": "pythainlp.classify.param_free.GzipModel.cx2_list", - "scope": "public", - "parent_class": "GzipModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py", - "line": 115 - }, - { - "name": "pythainlp.classify.param_free.GzipModel.training_data", - "scope": "public", - "parent_class": "GzipModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/classify/param_free.py", - "line": 116 - }, - { - "name": "pythainlp.corpus.core._ResponseWrapper.status_code", - "scope": "public", - "parent_class": "_ResponseWrapper", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py", - "line": 41 - }, - { - "name": "pythainlp.corpus.core._ResponseWrapper.headers", - "scope": "public", - "parent_class": "_ResponseWrapper", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py", - "line": 42 - }, - { - "name": "pythainlp.corpus.core._ResponseWrapper._content", - "scope": "private", - "parent_class": "_ResponseWrapper", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/corpus/core.py", - "line": 43 - }, - { - "name": "pythainlp.generate.core.Unigram.counts", - "scope": "public", - "parent_class": "Unigram", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py", - "line": 43 - }, - { - "name": "pythainlp.generate.core.Unigram.counts", - "scope": "public", - "parent_class": "Unigram", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py", - "line": 45 - }, - { - "name": "pythainlp.generate.core.Unigram._word_prob", - "scope": "private", - "parent_class": "Unigram", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/generate/core.py", - "line": 85 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.model_dir", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 70 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.nn_model_path", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 71 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.bucket", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 72 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.nb_words", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 73 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.minn", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 74 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.maxn", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 75 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.words_for_suggestion", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 79 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.nn_session", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 80 - }, - { - "name": "pythainlp.spell.words_spelling_correction.FastTextEncoder.embedding_dim", - "scope": "public", - "parent_class": "FastTextEncoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 81 - }, - { - "name": "pythainlp.spell.words_spelling_correction.Words_Spelling_Correction.model_name", - "scope": "public", - "parent_class": "Words_Spelling_Correction", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 269 - }, - { - "name": "pythainlp.spell.words_spelling_correction.Words_Spelling_Correction.model_path", - "scope": "public", - "parent_class": "Words_Spelling_Correction", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 270 - }, - { - "name": "pythainlp.spell.words_spelling_correction.Words_Spelling_Correction.model_onnx", - "scope": "public", - "parent_class": "Words_Spelling_Correction", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 271 - }, - { - "name": "pythainlp.spell.words_spelling_correction.Words_Spelling_Correction.list_word", - "scope": "public", - "parent_class": "Words_Spelling_Correction", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/words_spelling_correction.py", - "line": 279 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk.corpus", - "scope": "public", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 81 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk._model_file_ctx", - "scope": "private", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 82 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk.tagger", - "scope": "public", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 86 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk._model_file_ctx", - "scope": "private", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 90 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk.xseq", - "scope": "public", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 95 - }, - { - "name": "pythainlp.tag.crfchunk.CRFchunk._model_file_ctx", - "scope": "private", - "parent_class": "CRFchunk", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/crfchunk.py", - "line": 112 - }, - { - "name": "pythainlp.tag.named_entity.NER.name_engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 66 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 67 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 73 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 77 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 83 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 87 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 95 - }, - { - "name": "pythainlp.tag.named_entity.NER.engine", - "scope": "public", - "parent_class": "NER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 102 - }, - { - "name": "pythainlp.tag.named_entity.NNER.engine", - "scope": "public", - "parent_class": "NNER", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 165 - }, - { - "name": "pythainlp.tag.thainer.ThaiNameTagger.pos_tag_name", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/thainer.py", - "line": 128 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.model_name", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 44 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.model_version", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 45 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.options", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 46 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.session", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 50 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.outputs_name", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 58 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.sp", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 59 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX._json", - "scope": "private", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 70 - }, - { - "name": "pythainlp.tag.wangchanberta_onnx.WngchanBerta_ONNX.id2tag", - "scope": "public", - "parent_class": "WngchanBerta_ONNX", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/wangchanberta_onnx.py", - "line": 71 - }, - { - "name": "pythainlp.tokenize.attacut.AttacutTokenizer._MODEL_NAME", - "scope": "private", - "parent_class": "AttacutTokenizer", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/attacut.py", - "line": 26 - }, - { - "name": "pythainlp.tokenize.core.Tokenizer.__trie_dict", - "scope": "private", - "parent_class": "Tokenizer", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py", - "line": 944 - }, - { - "name": "pythainlp.tokenize.core.Tokenizer.__trie_dict", - "scope": "private", - "parent_class": "Tokenizer", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py", - "line": 946 - }, - { - "name": "pythainlp.tokenize.core.Tokenizer.__engine", - "scope": "private", - "parent_class": "Tokenizer", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/core.py", - "line": 996 - }, - { - "name": "pythainlp.tokenize.multi_cut.LatticeString.unique", - "scope": "public", - "parent_class": "LatticeString", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py", - "line": 50 - }, - { - "name": "pythainlp.tokenize.multi_cut.LatticeString.multi", - "scope": "public", - "parent_class": "LatticeString", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tokenize/multi_cut.py", - "line": 52 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 77 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 81 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 85 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 89 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 93 - }, - { - "name": "pythainlp.translate.core.Translate.model", - "scope": "public", - "parent_class": "Translate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/core.py", - "line": 97 - }, - { - "name": "pythainlp.translate.en_th.EnThTranslator._model", - "scope": "private", - "parent_class": "EnThTranslator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/en_th.py", - "line": 91 - }, - { - "name": "pythainlp.translate.small100.Small100Translator.model", - "scope": "public", - "parent_class": "Small100Translator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/small100.py", - "line": 42 - }, - { - "name": "pythainlp.translate.th_fr.ThFrTranslator.model_thfr", - "scope": "public", - "parent_class": "ThFrTranslator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/th_fr.py", - "line": 56 - }, - { - "name": "pythainlp.translate.zh_th.ThZhTranslator.model_thzh", - "scope": "public", - "parent_class": "ThZhTranslator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/translate/zh_th.py", - "line": 50 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator.__model_filename", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 44 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._maxlength", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 51 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._char_to_ix", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 53 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._ix_to_char", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 54 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._target_char_to_ix", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 55 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._ix_to_target_char", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 56 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._encoder", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 60 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._decoder", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 64 - }, - { - "name": "pythainlp.transliterate.thai2rom.ThaiTransliterator._network", - "scope": "private", - "parent_class": "ThaiTransliterator", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 68 - }, - { - "name": "pythainlp.transliterate.thai2rom.Encoder.hidden_size", - "scope": "public", - "parent_class": "Encoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 133 - }, - { - "name": "pythainlp.transliterate.thai2rom.Encoder.character_embedding", - "scope": "public", - "parent_class": "Encoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 134 - }, - { - "name": "pythainlp.transliterate.thai2rom.Encoder.rnn", - "scope": "public", - "parent_class": "Encoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 137 - }, - { - "name": "pythainlp.transliterate.thai2rom.Encoder.dropout", - "scope": "public", - "parent_class": "Encoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 144 - }, - { - "name": "pythainlp.transliterate.thai2rom.Attn.method", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 204 - }, - { - "name": "pythainlp.transliterate.thai2rom.Attn.hidden_size", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 205 - }, - { - "name": "pythainlp.transliterate.thai2rom.Attn.attn", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 208 - }, - { - "name": "pythainlp.transliterate.thai2rom.Attn.attn", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 211 - }, - { - "name": "pythainlp.transliterate.thai2rom.Attn.other", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 212 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.vocabulary_size", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 271 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.hidden_size", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 272 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.character_embedding", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 273 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.rnn", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 276 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.attn", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 283 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.linear", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 284 - }, - { - "name": "pythainlp.transliterate.thai2rom.AttentionDecoder.dropout", - "scope": "public", - "parent_class": "AttentionDecoder", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thai2rom.py", - "line": 286 - }, - { - "name": "pythainlp.transliterate.thaig2p.Attn.attn", - "scope": "public", - "parent_class": "Attn", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/thaig2p.py", - "line": 229 - }, - { - "name": "pythainlp.transliterate.w2p.Thai_W2P.checkpoint", - "scope": "public", - "parent_class": "Thai_W2P", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py", - "line": 92 - }, - { - "name": "pythainlp.transliterate.w2p.Thai_W2P.word", - "scope": "public", - "parent_class": "Thai_W2P", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py", - "line": 222 - }, - { - "name": "pythainlp.transliterate.w2p.Thai_W2P.word", - "scope": "public", - "parent_class": "Thai_W2P", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/w2p.py", - "line": 223 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 128 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 129 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.system", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 130 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 132 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 133 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.system", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 134 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.jp_input", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 136 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.zh_sandhi", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 137 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.system", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 138 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.lang", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 143 - }, - { - "name": "pythainlp.transliterate.wunsen.WunsenTransliterate.thap_value", - "scope": "public", - "parent_class": "WunsenTransliterate", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/wunsen.py", - "line": 154 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.dataset_name", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 64 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.grouped_entities", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 65 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.classify_tokens", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 66 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 116 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 122 - }, - { - "name": "pythainlp.wangchanberta.core.ThaiNameTagger.sent_ner", - "scope": "public", - "parent_class": "ThaiNameTagger", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wangchanberta/core.py", - "line": 130 - }, - { - "name": "pythainlp.word_vector.core.WordVector.model_name", - "scope": "public", - "parent_class": "WordVector", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py", - "line": 60 - }, - { - "name": "pythainlp.word_vector.core.WordVector.model", - "scope": "public", - "parent_class": "WordVector", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py", - "line": 61 - }, - { - "name": "pythainlp.word_vector.core.WordVector.WV_DIM", - "scope": "public", - "parent_class": "WordVector", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py", - "line": 66 - }, - { - "name": "pythainlp.word_vector.core.WordVector.tokenize", - "scope": "public", - "parent_class": "WordVector", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py", - "line": 69 - }, - { - "name": "pythainlp.word_vector.core.WordVector.tokenize", - "scope": "public", - "parent_class": "WordVector", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/word_vector/core.py", - "line": 71 - }, - { - "name": "pythainlp.wsd.core._SentenceTransformersModel.device", - "scope": "public", - "parent_class": "_SentenceTransformersModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py", - "line": 49 - }, - { - "name": "pythainlp.wsd.core._SentenceTransformersModel.model", - "scope": "public", - "parent_class": "_SentenceTransformersModel", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py", - "line": 50 - } - ], - "module_variables_no_hints": [ - { - "name": "pythainlp.ancient.aksonhan.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py", - "line": 20 - }, - { - "name": "pythainlp.ancient.aksonhan.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py", - "line": 21 - }, - { - "name": "pythainlp.ancient.aksonhan.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/ancient/aksonhan.py", - "line": 22 - }, - { - "name": "pythainlp.cli.stdout", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/cli/__init__.py", - "line": 18 - }, - { - "name": "pythainlp.cli.stderr", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/cli/__init__.py", - "line": 19 - }, - { - "name": "pythainlp.spell.wanchanberta_thai_grammarly.tagging_model", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py", - "line": 60 - }, - { - "name": "pythainlp.spell.wanchanberta_thai_grammarly.mlm_model", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/spell/wanchanberta_thai_grammarly.py", - "line": 106 - }, - { - "name": "pythainlp.tag.named_entity.NEREngineType", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/tag/named_entity.py", - "line": 24 - }, - { - "name": "pythainlp.transliterate.royin._vowel_patterns", - "scope": "private", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py", - "line": 73 - }, - { - "name": "pythainlp.transliterate.royin._vowel_patterns", - "scope": "private", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py", - "line": 74 - }, - { - "name": "pythainlp.transliterate.royin._vowel_patterns", - "scope": "private", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/transliterate/royin.py", - "line": 75 - }, - { - "name": "pythainlp.util.morse.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py", - "line": 128 - }, - { - "name": "pythainlp.util.morse.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py", - "line": 132 - }, - { - "name": "pythainlp.util.morse.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/morse.py", - "line": 135 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 41 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 46 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 50 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 52 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 54 - }, - { - "name": "pythainlp.util.spell_words.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/spell_words.py", - "line": 56 - }, - { - "name": "pythainlp.util.syllable.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/util/syllable.py", - "line": 68 - }, - { - "name": "pythainlp.wsd.core.unknown", - "scope": "public", - "file": "/home/runner/work/pythainlp/pythainlp/pythainlp/wsd/core.py", - "line": 27 - } - ], - "type_aliases": [] -} \ No newline at end of file diff --git a/build_tools/analysis/type_hint_analyzer.py b/build_tools/analysis/type-analyzer.py similarity index 99% rename from build_tools/analysis/type_hint_analyzer.py rename to build_tools/analysis/type-analyzer.py index e1dce96fd..39b95aa9a 100644 --- a/build_tools/analysis/type_hint_analyzer.py +++ b/build_tools/analysis/type-analyzer.py @@ -3,16 +3,16 @@ # SPDX-FileCopyrightText: 2026 PyThaiNLP Project # SPDX-License-Identifier: Apache-2.0 """ -Type Hint Analyzer for PyThaiNLP +Type Annotation Analyzer for PyThaiNLP -This script scans the entire repository and analyzes type hint coverage +This script scans the entire repository and analyzes type annotation coverage for all functions and classes. Based on the type completeness information from https://typing.python.org/en/latest/guides/libraries.html#type-completeness Usage: - python type_hint_analyzer.py [--output-dir OUTPUT_DIR] + python type-analyzer.py [--output-dir OUTPUT_DIR] Options: --output-dir Directory to save output files (default: ./output) @@ -562,7 +562,7 @@ def main(): output_dir.mkdir(parents=True, exist_ok=True) print("=" * 80) - print("TYPE HINT COVERAGE ANALYSIS FOR PYTHAINLP") + print("TYPE ANNOTATION COVERAGE ANALYSIS FOR PYTHAINLP") print("=" * 80) print() print(f"Repository root: {repo_root}")