pyflexicon 4.2.0__tar.gz → 4.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/CHANGELOG.md +114 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/PKG-INFO +8 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/README.rst +5 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/__init__.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/BaseOperations.py +17 -4
- pyflexicon-4.3.0/flexicon/code/BaseOperations.pyi +67 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartClauseMarkerOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartMovedTextOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartRowOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartWordGroupOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/EnvironmentOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/EnvironmentOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/GramCatOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/GramCatOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/InflectionFeatureOperations.pyi +4 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/MorphRuleOperations.py +7 -7
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/MorphRuleOperations.pyi +8 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/NaturalClassOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/NaturalClassOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/POSOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/POSOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/PhonFeatureOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/PhonemeOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/PhonemeOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/PhonologicalRuleOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/PhonologicalRuleOperations.pyi +2 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/StratumOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/AllomorphOperations.py +1 -1
- {pyflexicon-4.2.0/flexicon/code/Grammar → pyflexicon-4.3.0/flexicon/code/Lexicon}/AllomorphOperations.pyi +2 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/EtymologyOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/EtymologyOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/ExampleOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/ExampleOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexEntryOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexEntryOperations.pyi +5 -4
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexReferenceOperations.py +4 -4
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexReferenceOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexSenseOperations.py +7 -4
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/LexSenseOperations.pyi +4 -3
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/MSAOperations.py +223 -6
- pyflexicon-4.3.0/flexicon/code/Lexicon/MSAOperations.pyi +38 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/PronunciationOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/PronunciationOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/SemanticDomainOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/SemanticDomainOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/VariantOperations.py +4 -4
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/VariantOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/AgentOperations.py +2 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/AgentOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/ConfidenceOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/OverlayOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/PossibilityListOperations.pyi +6 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/PublicationOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/PublicationOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/TranslationTypeOperations.py +19 -34
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/TranslationTypeOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/possibility_item_base.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/AnthropologyOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/AnthropologyOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/DataNotebookOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/DataNotebookOperations.pyi +5 -3
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/LocationOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/LocationOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/NoteOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/NoteOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/PersonOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/PersonOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Reversal/ReversalIndexEntryOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Reversal/ReversalIndexOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrBookOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrDraftOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrNoteOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrSectionOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrTxtParaOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/FilterOperations.py +2 -2
- {pyflexicon-4.2.0/flexicon/code/TextsWords → pyflexicon-4.3.0/flexicon/code/Shared}/FilterOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/MediaOperations.py +10 -6
- {pyflexicon-4.2.0/flexicon/code/TextsWords → pyflexicon-4.3.0/flexicon/code/Shared}/MediaOperations.pyi +3 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/wrapper_base.py +86 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/AnnotationDefOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/AnnotationDefOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/CheckOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/CheckOperations.pyi +6 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/CustomFieldOperations.pyi +6 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/ProjectSettingsOperations.pyi +4 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/WritingSystemOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/WritingSystemOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/DiscourseOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/DiscourseOperations.pyi +6 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/ParagraphOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/ParagraphOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/SegmentOperations.py +218 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/SegmentOperations.pyi +8 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/TextOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/TextOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiAnalysisOperations.py +1 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiAnalysisOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiGlossOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiGlossOperations.pyi +4 -3
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiMorphBundleOperations.py +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WfiMorphBundleOperations.pyi +2 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WordformOperations.py +6 -6
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/WordformOperations.pyi +4 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyflexicon.egg-info/PKG-INFO +8 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyflexicon.egg-info/SOURCES.txt +4 -3
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyflexicon.egg-info/requires.txt +2 -1
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyproject.toml +13 -2
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_wrappers.py +62 -0
- pyflexicon-4.2.0/flexicon/code/BaseOperations.pyi +0 -37
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/LICENSE.txt +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/MANIFEST.in +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/NOTICE +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/__init__.pyi +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartCellTagOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartMarkerOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/FLExGlobals.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/FLExInit.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/FLExLCM.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/FLExProject.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/FLExProject.pyi +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/InflectionFeatureOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/adhoc_prohibition.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/affix_template.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/affix_template_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/compound_rule.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/compound_rule_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/phonological_rule.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/prohibition_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Grammar/rule_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/allomorph.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/allomorph_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/morphosyntax_analysis.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lexicon/msa_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/ConfidenceOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/LocalizedListsOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/OverlayOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/PossibilityListOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Lists/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/annotation.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Notebook/annotation_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/PythonicWrapper.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Reversal/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/ScrAnnotationsOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Scripture/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/catalog.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/catalog_backed.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/lcm_constants.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/morph_type_utils.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/rule_patterns.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/smart_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Shared/string_utils.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/CustomFieldOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/ProjectSettingsOperations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/context_collection.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/System/phonological_context.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/TextsWords/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/__init__.pyi +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/_context_manager_base.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/_op_aliases.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/exceptions.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/lcm_casting.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/transaction.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/undoable_operation.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/examples/demo_lexicon.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/examples/demo_openproject.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/examples/demo_pos_operations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/examples/demo_writing_systems.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/py.typed +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/conflict_resolvers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/dependency_graph.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/dependency_resolver.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/diff.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/engine.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/export.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/hierarchical_importer.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/match_strategies.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/merge_ops.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/selective_import.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_base_operations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_dependency_graph.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_diff_engine.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_duplicate_operations.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_match_strategies.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_merge_ops.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_selective_import.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_sync_engine.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_sync_result.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/tests/test_validation.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/sync/validation.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/tests/test_CustomFields.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/tests/test_FLExInit.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/tests/test_FLExProject.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexlibs2/__init__.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyflexicon.egg-info/dependency_links.txt +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/pyflexicon.egg-info/top_level.txt +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/setup.cfg +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_affix_template_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_allomorph_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_annotation_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_catalog.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_collections.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_compound_rule_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_consolidation_coverage.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_context_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_custom_field_create_refusal.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_exception_handling.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_fixtures.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_flexproject_aliases.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_flexproject_discoverability.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_helpers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_homographs.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_itsstring_fix.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_lcm_api_real.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_lcm_api_usage.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_lcm_direct.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_lcm_method_verification.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_msa_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_normalize_match_key.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_normalize_ws_handle.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_operations_baseline.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_pattern_g_owner_of_class.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_pattern_writing_systems_enumeration.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_phoneme_duplicate_fix.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_phonological_rules_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_prohibition_wrappers.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_rule_patterns.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_segment_baseline_text.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_sense_lookups.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_validation_base.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_wfianalysis_agent_import.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_wrap_enumerable_pattern.py +0 -0
- {pyflexicon-4.2.0 → pyflexicon-4.3.0}/tests/test_write_enabled_fix.py +0 -0
|
@@ -15,6 +15,120 @@ _Nothing yet. Non-breaking fixes and breaking changes accumulate here until the
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
## [4.3.0] - 2026-07-22
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **`SegmentOperations` `AnalysesRS` write API**: new `SetAnalysis`,
|
|
22
|
+
`ReplaceAnalysis`, `InsertAnalysis`, `AppendAnalysis`, and `RemoveAnalysis`
|
|
23
|
+
methods on `ISegment.AnalysesRS`, bringing segment-level analysis-list
|
|
24
|
+
mutation in line with the existing `SetFreeTranslation` support (#215).
|
|
25
|
+
- **`project.MSA.RemoveOrphaned(entry=None, progress=None)`**: project-wide
|
|
26
|
+
`WfiMorphBundle`-aware MSA orphan cleanup. Returns a structured
|
|
27
|
+
`RemoveOrphanedResult` describing what was removed, scoped to a single
|
|
28
|
+
entry when `entry` is supplied (#206).
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
- **`LCMObjectWrapper` exposes `lcm_object` / `AsICmObject()`** so wrapper
|
|
32
|
+
objects returned by the API can be cast back to LCM interfaces from user
|
|
33
|
+
scripts; fixes a runtime crash that occurred when user code attempted to
|
|
34
|
+
cast a wrapper directly (#199).
|
|
35
|
+
- **`.pyi` stub `GetAll`/`GetAll*` return annotations** across ~40 Operations
|
|
36
|
+
stub files no longer collapse to a blanket `Iterator[Any]`. Each method is
|
|
37
|
+
now annotated with the concrete behavioral-collection shape it actually
|
|
38
|
+
returns per `docs/getall-contract.md`: `EnumerableWrapper[T]`, `list[T]`
|
|
39
|
+
(spelled `List[Any]` for stub compatibility), or a `SmartCollection[T]`
|
|
40
|
+
subtype (`RuleCollection`, `CompoundRuleCollection`,
|
|
41
|
+
`AffixTemplateCollection`, `AllomorphCollection`). `BaseOperations.pyi` now
|
|
42
|
+
declares `EnumerableWrapper` as a proper `Generic[T]` stub class with typed
|
|
43
|
+
`__iter__`/`__len__`/`__getitem__`/`Count`, instead of leaving it
|
|
44
|
+
unshadowed-but-untyped. `BaseOperations.GetAll`'s own declared return type
|
|
45
|
+
changed from `Iterator[Any]` to `Any` -- none of the three real shapes is
|
|
46
|
+
an `Iterator` (no `__next__`), so `Iterator[Any]` at the base would make
|
|
47
|
+
every subclass override an LSP violation under a strict checker.
|
|
48
|
+
- **Stale/orphaned `.pyi` paths.** `AllomorphOperations.pyi`,
|
|
49
|
+
`FilterOperations.pyi`, and `MediaOperations.pyi` were shadow-stubbed at
|
|
50
|
+
their pre-refactor locations (`Grammar/`, `TextsWords/`) which no longer
|
|
51
|
+
match the real modules (`Lexicon/`, `Shared/`); a type checker resolving
|
|
52
|
+
those modules got no stub coverage at all. Relocated to match the real
|
|
53
|
+
module paths.
|
|
54
|
+
- **Fabricated `GetAll`/`GetAll*` overrides removed or corrected** for
|
|
55
|
+
classes whose stub asserted a per-class `GetAll` override that does not
|
|
56
|
+
exist in the runtime implementation (`InflectionFeatureOperations`,
|
|
57
|
+
`ProjectSettingsOperations`, `PossibilityListOperations`,
|
|
58
|
+
`CheckOperations`, `CustomFieldOperations`, `DiscourseOperations`) --
|
|
59
|
+
these either inherit `GetAll` from a base class or only define a
|
|
60
|
+
`GetAll*`-named sibling method. Also dropped `LexEntryOperations.pyi`'s
|
|
61
|
+
fabricated `GetAllomorphs` stub method, which does not exist in
|
|
62
|
+
`LexEntryOperations.py`.
|
|
63
|
+
- **Missing `GetAll*` sibling methods added to stubs** (previously absent
|
|
64
|
+
entirely, so any call site fell through the class's blanket
|
|
65
|
+
`__getattr__ -> Any`): `GetAllCompoundRules`, `GetAllAffixTemplates`,
|
|
66
|
+
`GetAllAffixTemplatesForPOS`, `GetAllAdhocCoProhibitions`,
|
|
67
|
+
`GetAllByMorphType`, `GetAllSenses` (both `LexEntryOperations` and
|
|
68
|
+
`LexSenseOperations`), `GetAllTypes` (`LexReferenceOperations` and
|
|
69
|
+
`VariantOperations`), `GetAllLists`, `GetAllRecordTypes`,
|
|
70
|
+
`GetAllStatuses`, `GetAllCheckTypes`, `GetAllFields`, `GetAllCharts`,
|
|
71
|
+
`GetAllForms`, `GetAllWithStatus`, `GetAllUnapproved`, `GetAllByType`.
|
|
72
|
+
Each now has the real method's parameter signature (positional args and
|
|
73
|
+
defaults) instead of a blanket `*args: Any, **kwargs: Any`, resolving the
|
|
74
|
+
pre-existing signature drift noted as a prerequisite in the original T10
|
|
75
|
+
assessment.
|
|
76
|
+
- **`MediaOperations.GetAll`** now enumerates `ICmFileRepository` directly
|
|
77
|
+
instead of the incorrect `ICmObjectRepository` cast, and its docstring now
|
|
78
|
+
states the caveat that repository enumeration returns every `ICmFile` in
|
|
79
|
+
the database (pronunciation media, external-link files, orphans included),
|
|
80
|
+
which is broader than walking `LangProject.MediaOC`/`PicturesOC` folders.
|
|
81
|
+
- **`AgentOperations.GetAll`** now carries the `@OperationsMethod` decorator
|
|
82
|
+
it was missing, matching every other `GetAll` in the codebase.
|
|
83
|
+
- **`TranslationTypeOperations.GetSegmentsWithType`** now raises
|
|
84
|
+
`NotImplementedError` instead of silently returning `None`. `ISegment`
|
|
85
|
+
translations have no typed link to a translation-type possibility the way
|
|
86
|
+
text-level translations do, so the method could never do what its name
|
|
87
|
+
promised; it now fails loudly and points callers at `GetTextsWithType()`.
|
|
88
|
+
|
|
89
|
+
### Deferred (documented, not fixed in this pass)
|
|
90
|
+
- Three whole Operations packages (`Discourse/`, `Reversal/`, `Scripture/`)
|
|
91
|
+
have **no `.pyi` stubs at all** -- a pre-existing gap outside this issue's
|
|
92
|
+
scope (adding a new stub tree, not reconciling an existing one).
|
|
93
|
+
- The non-`GetAll` methods on every stub (`Find`, `Create`, `Delete`, etc.)
|
|
94
|
+
still use the blanket `*args: Any, **kwargs: Any -> Any`/`__getattr__`
|
|
95
|
+
pattern; only `GetAll`/`GetAll*` methods were reconciled in this pass, per
|
|
96
|
+
the issue's stated scope.
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
- **Build:** the package version is now a single source of truth. `pyproject.toml`
|
|
100
|
+
declares `dynamic = ["version"]` and reads it from the `flexicon.version`
|
|
101
|
+
attribute via `[tool.setuptools.dynamic]`, so the distribution version and the
|
|
102
|
+
runtime `flexicon.version` can no longer diverge (the root cause of the 4.2.0
|
|
103
|
+
stale-version issue). Requires `setuptools>=77` (already pinned in
|
|
104
|
+
`[build-system]`).
|
|
105
|
+
|
|
106
|
+
### Docs
|
|
107
|
+
- **`GetAll`/`GetAll*` collection-return contract**: standardized ~51
|
|
108
|
+
docstrings across ~50 `flexicon/code/**/*Operations.py` files to a
|
|
109
|
+
consistent `Returns:\n <ContainerType>[<Element>]: ...` form, dropping
|
|
110
|
+
`Yields:` generator-style wording (the `@wrap_enumerable` decorator always
|
|
111
|
+
converts generator bodies to a re-iterable `EnumerableWrapper` before the
|
|
112
|
+
caller sees them, so `Yields:` misdescribed the actual contract).
|
|
113
|
+
`BaseOperations.wrap_enumerable`'s docstring gains a "Behavioral
|
|
114
|
+
collection contract" paragraph explaining the three concrete return
|
|
115
|
+
shapes (`EnumerableWrapper[T]`, `list[T]`, `SmartCollection[T]`
|
|
116
|
+
subtypes) and the loop/`len()`/index/re-iterate guarantee they all
|
|
117
|
+
satisfy. New `docs/getall-contract.md` documents the full guarantee;
|
|
118
|
+
`README.rst` links to it.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## [4.2.1]
|
|
123
|
+
|
|
124
|
+
### Fixed
|
|
125
|
+
- **Runtime version string:** bumped the `flexicon.version` attribute in
|
|
126
|
+
`flexicon/__init__.py`, which was left at `4.1.2` during the 4.2.0 cut so
|
|
127
|
+
the published 4.2.0 wheel reported a stale runtime version. Now matches the
|
|
128
|
+
distribution version.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
18
132
|
## [4.2.0]
|
|
19
133
|
|
|
20
134
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyflexicon
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.0
|
|
4
4
|
Summary: flexicon: a user-centric Python library for FieldWorks Language Explorer (FLEx) projects via the SIL Language and Culture Model (LCM) API
|
|
5
5
|
Author-email: Matthew Lee <matthew_lee@sil.org>
|
|
6
6
|
Maintainer-email: Matthew Lee <matthew_lee@sil.org>
|
|
@@ -30,7 +30,8 @@ Requires-Dist: sphinx; extra == "docs"
|
|
|
30
30
|
Requires-Dist: ghp-import; extra == "docs"
|
|
31
31
|
Provides-Extra: build
|
|
32
32
|
Requires-Dist: build; extra == "build"
|
|
33
|
-
Requires-Dist: twine; extra == "build"
|
|
33
|
+
Requires-Dist: twine>=5.1; extra == "build"
|
|
34
|
+
Requires-Dist: pkginfo>=1.10; extra == "build"
|
|
34
35
|
Provides-Extra: dev
|
|
35
36
|
Requires-Dist: pyflexicon[build,docs,test]; extra == "dev"
|
|
36
37
|
Requires-Dist: pre-commit; extra == "dev"
|
|
@@ -86,6 +87,11 @@ Full API documentation is published at https://flexicon.langtech.cloud.
|
|
|
86
87
|
The rendered HTML API help is also bundled and accessible from Python via
|
|
87
88
|
``flexicon.APIHelpFile``.
|
|
88
89
|
|
|
90
|
+
Every ``GetAll`` returns a loop/``len()``/index/re-iterate-able collection
|
|
91
|
+
regardless of its concrete type (``EnumerableWrapper``, ``list``, or a
|
|
92
|
+
``SmartCollection`` subtype) -- see ``docs/getall-contract.md`` for the
|
|
93
|
+
full guarantee.
|
|
94
|
+
|
|
89
95
|
Usage
|
|
90
96
|
-----
|
|
91
97
|
|
|
@@ -48,6 +48,11 @@ Full API documentation is published at https://flexicon.langtech.cloud.
|
|
|
48
48
|
The rendered HTML API help is also bundled and accessible from Python via
|
|
49
49
|
``flexicon.APIHelpFile``.
|
|
50
50
|
|
|
51
|
+
Every ``GetAll`` returns a loop/``len()``/index/re-iterate-able collection
|
|
52
|
+
regardless of its concrete type (``EnumerableWrapper``, ``list``, or a
|
|
53
|
+
``SmartCollection`` subtype) -- see ``docs/getall-contract.md`` for the
|
|
54
|
+
full guarantee.
|
|
55
|
+
|
|
51
56
|
Usage
|
|
52
57
|
-----
|
|
53
58
|
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
|
|
14
14
|
# --- Imports ------------------------------------------------------------------
|
|
15
15
|
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
16
18
|
from .exceptions import (
|
|
17
19
|
FP_ReadOnlyError,
|
|
18
20
|
FP_NullParameterError,
|
|
@@ -193,6 +195,17 @@ class wrap_enumerable:
|
|
|
193
195
|
count = items.Count # Works!
|
|
194
196
|
first = items[0] # Works!
|
|
195
197
|
length = len(items) # Works!
|
|
198
|
+
|
|
199
|
+
Behavioral collection contract:
|
|
200
|
+
Every ``GetAll`` in flexicon returns a **behavioral collection**: you
|
|
201
|
+
can always loop it, ``len()`` it, index into it, and re-iterate it.
|
|
202
|
+
The concrete return type -- ``EnumerableWrapper`` (this decorator, for
|
|
203
|
+
large/lazily-materialized results), a plain ``list`` (already a
|
|
204
|
+
sequence, so wrapping is a no-op), or a ``SmartCollection`` subtype
|
|
205
|
+
(adds ``.filter()``/type-breakdown display on top of the same
|
|
206
|
+
sequence guarantees) -- is an implementation detail callers never
|
|
207
|
+
have to branch on. See ``docs/getall-contract.md`` for the full
|
|
208
|
+
guarantee and rationale.
|
|
196
209
|
"""
|
|
197
210
|
|
|
198
211
|
def __init__(self, func):
|
|
@@ -1824,7 +1837,7 @@ class BaseOperations:
|
|
|
1824
1837
|
|
|
1825
1838
|
return _NestingAwareTransaction(self.project, label)
|
|
1826
1839
|
|
|
1827
|
-
def _ValidateParam(self, param:
|
|
1840
|
+
def _ValidateParam(self, param: Any, param_name: str = "parameter") -> None:
|
|
1828
1841
|
"""
|
|
1829
1842
|
Validate that a parameter is not None and not a stale LCM object.
|
|
1830
1843
|
|
|
@@ -1886,7 +1899,7 @@ class BaseOperations:
|
|
|
1886
1899
|
f"{param_name} refers to a deleted or invalid LCM object"
|
|
1887
1900
|
)
|
|
1888
1901
|
|
|
1889
|
-
def _ValidateParamNotEmpty(self, param:
|
|
1902
|
+
def _ValidateParamNotEmpty(self, param: Any, param_name: str = "parameter") -> None:
|
|
1890
1903
|
"""
|
|
1891
1904
|
Validate that a parameter is not None and not empty.
|
|
1892
1905
|
|
|
@@ -1937,7 +1950,7 @@ class BaseOperations:
|
|
|
1937
1950
|
if len(param) == 0:
|
|
1938
1951
|
raise FP_ParameterError(f"{param_name} cannot be empty")
|
|
1939
1952
|
|
|
1940
|
-
def _ValidateInstanceOf(self, obj:
|
|
1953
|
+
def _ValidateInstanceOf(self, obj: Any, expected_type: type, param_name: str = "object") -> None:
|
|
1941
1954
|
"""
|
|
1942
1955
|
Validate that an object is an instance of expected type.
|
|
1943
1956
|
|
|
@@ -2102,7 +2115,7 @@ class BaseOperations:
|
|
|
2102
2115
|
if index >= max_count:
|
|
2103
2116
|
raise IndexError(f"{param_name} out of bounds: {index} >= {max_count} " f"(valid range: 0-{max_count - 1})")
|
|
2104
2117
|
|
|
2105
|
-
def _ValidateOwner(self, obj:
|
|
2118
|
+
def _ValidateOwner(self, obj: Any, expected_owner: Any, param_name: str = "object") -> None:
|
|
2106
2119
|
"""
|
|
2107
2120
|
Validate that an object has expected owner.
|
|
2108
2121
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#
|
|
2
|
+
# BaseOperations.pyi
|
|
3
|
+
#
|
|
4
|
+
# Type stubs for BaseOperations
|
|
5
|
+
# Base class for all Operations classes
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
from typing import Any, Optional, Iterator, List, Union, Generic, TypeVar, overload
|
|
9
|
+
|
|
10
|
+
T = TypeVar("T")
|
|
11
|
+
|
|
12
|
+
class EnumerableWrapper(Generic[T]):
|
|
13
|
+
"""
|
|
14
|
+
Behavioral-collection wrapper around a raw C# IEnumerable / Python
|
|
15
|
+
iterator or generator (see docs/getall-contract.md).
|
|
16
|
+
|
|
17
|
+
Materializes to a list on first access, then caches it, so it supports
|
|
18
|
+
re-iteration, len(), and indexing/slicing like a real Sequence -- unlike
|
|
19
|
+
the one-shot Iterator it wraps.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def __init__(self, enumerable: Any) -> None: ...
|
|
23
|
+
@property
|
|
24
|
+
def Count(self) -> int: ...
|
|
25
|
+
def __len__(self) -> int: ...
|
|
26
|
+
@overload
|
|
27
|
+
def __getitem__(self, index: int) -> T: ...
|
|
28
|
+
@overload
|
|
29
|
+
def __getitem__(self, index: slice) -> List[T]: ...
|
|
30
|
+
def __iter__(self) -> Iterator[T]: ...
|
|
31
|
+
def __contains__(self, item: Any) -> bool: ...
|
|
32
|
+
def __repr__(self) -> str: ...
|
|
33
|
+
|
|
34
|
+
class BaseOperations(Generic[T]):
|
|
35
|
+
"""Base class for all FLEx Operations"""
|
|
36
|
+
|
|
37
|
+
project: Any
|
|
38
|
+
|
|
39
|
+
def __init__(self, project: Any) -> None: ...
|
|
40
|
+
|
|
41
|
+
# Common CRUD methods (flexible signatures to accommodate various Operations classes)
|
|
42
|
+
#
|
|
43
|
+
# NOTE: GetAll returns Any (not Iterator[Any]) at this base-class level.
|
|
44
|
+
# Per docs/getall-contract.md, every GetAll/GetAll* subclass override
|
|
45
|
+
# actually returns one of EnumerableWrapper[T], list[T], or a
|
|
46
|
+
# SmartCollection[T] subtype -- never a one-shot Iterator. None of those
|
|
47
|
+
# three shapes is an Iterator (they lack __next__), so Iterator[Any]
|
|
48
|
+
# would make every subclass override an LSP violation under a strict
|
|
49
|
+
# checker. Subclasses declare the concrete shape they actually return.
|
|
50
|
+
def GetAll(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
51
|
+
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
52
|
+
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
53
|
+
def Create(self, *args: Any, **kwargs: Any) -> Any: ... # Signature varies by Operations class
|
|
54
|
+
def Delete(self, obj: Any) -> None: ...
|
|
55
|
+
def Duplicate(self, obj: Any, deep: bool = True) -> Any: ...
|
|
56
|
+
|
|
57
|
+
# Common property methods
|
|
58
|
+
def GetName(self, obj: T) -> Optional[str]: ...
|
|
59
|
+
def SetName(self, obj: T, name: str) -> None: ...
|
|
60
|
+
def GetAbbreviation(self, obj: T) -> Optional[str]: ...
|
|
61
|
+
def SetAbbreviation(self, obj: T, abbr: str) -> None: ...
|
|
62
|
+
def GetDescription(self, obj: T) -> Optional[str]: ...
|
|
63
|
+
def SetDescription(self, obj: T, desc: str) -> None: ...
|
|
64
|
+
def GetGUID(self, obj: T) -> Optional[str]: ...
|
|
65
|
+
|
|
66
|
+
# Type checking
|
|
67
|
+
def __getattr__(self, name: str) -> Any: ...
|
{pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartClauseMarkerOperations.py
RENAMED
|
@@ -224,7 +224,7 @@ class ConstChartClauseMarkerOperations(BaseOperations):
|
|
|
224
224
|
row_or_hvo: Either an IConstChartRow object or its HVO
|
|
225
225
|
|
|
226
226
|
Returns:
|
|
227
|
-
list: List of
|
|
227
|
+
list[IConstChartClauseMarker]: List of clause markers (empty list if none)
|
|
228
228
|
|
|
229
229
|
Raises:
|
|
230
230
|
FP_NullParameterError: If row_or_hvo is None
|
{pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartMovedTextOperations.py
RENAMED
|
@@ -212,7 +212,7 @@ class ConstChartMovedTextOperations(BaseOperations):
|
|
|
212
212
|
chart_or_hvo: Either an IDsConstChart object or its HVO
|
|
213
213
|
|
|
214
214
|
Returns:
|
|
215
|
-
list: List of
|
|
215
|
+
list[IConstChartMovedTextMarker]: List of moved text markers (empty list if none)
|
|
216
216
|
|
|
217
217
|
Raises:
|
|
218
218
|
FP_NullParameterError: If chart_or_hvo is None
|
|
@@ -85,8 +85,8 @@ class ConstChartOperations(BaseOperations):
|
|
|
85
85
|
This method returns an EnumerableWrapper (subscriptable, len()-able, lazily materialized) over all IDsConstChart objects in the
|
|
86
86
|
project database, allowing iteration over all discourse analysis charts.
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
IDsConstChart: Each constituent chart object in the project
|
|
88
|
+
Returns:
|
|
89
|
+
EnumerableWrapper[IDsConstChart]: Each constituent chart object in the project
|
|
90
90
|
|
|
91
91
|
Example:
|
|
92
92
|
>>> for chart in project.ConstCharts.GetAll():
|
|
@@ -230,7 +230,7 @@ class ConstChartRowOperations(BaseOperations):
|
|
|
230
230
|
chart_or_hvo: Either an IDsConstChart object or its HVO
|
|
231
231
|
|
|
232
232
|
Returns:
|
|
233
|
-
list: List of
|
|
233
|
+
list[IConstChartRow]: List of rows (empty list if none)
|
|
234
234
|
|
|
235
235
|
Raises:
|
|
236
236
|
FP_NullParameterError: If chart_or_hvo is None
|
{pyflexicon-4.2.0 → pyflexicon-4.3.0}/flexicon/code/Discourse/ConstChartWordGroupOperations.py
RENAMED
|
@@ -232,7 +232,7 @@ class ConstChartWordGroupOperations(BaseOperations):
|
|
|
232
232
|
row_or_hvo: Either an IConstChartRow object or its HVO
|
|
233
233
|
|
|
234
234
|
Returns:
|
|
235
|
-
list: List of
|
|
235
|
+
list[IConstChartWordGroup]: List of word groups (empty list if none)
|
|
236
236
|
|
|
237
237
|
Raises:
|
|
238
238
|
FP_NullParameterError: If row_or_hvo is None
|
|
@@ -82,8 +82,8 @@ class EnvironmentOperations(BaseOperations):
|
|
|
82
82
|
"""
|
|
83
83
|
Get all phonological environments in the project.
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
IPhEnvironment: Each environment object in the project's environment list.
|
|
85
|
+
Returns:
|
|
86
|
+
EnumerableWrapper[IPhEnvironment]: Each environment object in the project's environment list.
|
|
87
87
|
|
|
88
88
|
Example:
|
|
89
89
|
>>> envOps = EnvironmentOperations(project)
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
9
|
|
|
10
10
|
class EnvironmentOperations(BaseOperations[Any]):
|
|
11
11
|
"""EnvironmentOperations operations"""
|
|
12
12
|
|
|
13
|
-
def GetAll(self
|
|
13
|
+
def GetAll(self) -> EnumerableWrapper[Any]: ...
|
|
14
14
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
15
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
16
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -94,8 +94,8 @@ class GramCatOperations(BaseOperations):
|
|
|
94
94
|
yields only top-level categories and the caller must descend
|
|
95
95
|
via GetSubcategories.
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
ICmPossibility: Each grammatical category.
|
|
97
|
+
Returns:
|
|
98
|
+
EnumerableWrapper[ICmPossibility]: Each grammatical category.
|
|
99
99
|
|
|
100
100
|
Example:
|
|
101
101
|
>>> gramCatOps = GramCatOperations(project)
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
9
|
|
|
10
10
|
class GramCatOperations(BaseOperations[Any]):
|
|
11
11
|
"""GramCatOperations operations"""
|
|
12
12
|
|
|
13
|
-
def GetAll(self,
|
|
13
|
+
def GetAll(self, recursive: bool = True, **kwargs: Any) -> EnumerableWrapper[Any]: ...
|
|
14
14
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
15
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
16
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -10,7 +10,10 @@ from ..BaseOperations import BaseOperations
|
|
|
10
10
|
class InflectionFeatureOperations(BaseOperations[Any]):
|
|
11
11
|
"""InflectionFeatureOperations operations"""
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
# NOTE: this class does not define its own GetAll -- it inherits whatever
|
|
14
|
+
# BaseOperations provides (see BaseOperations.pyi). The previous
|
|
15
|
+
# `GetAll(...) -> Iterator[Any]` line here asserted an override that
|
|
16
|
+
# does not exist in the runtime implementation.
|
|
14
17
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
18
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
19
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -137,8 +137,8 @@ class MorphRuleOperations(BaseOperations):
|
|
|
137
137
|
Ad hoc co-prohibitions are NOT included (different property interface);
|
|
138
138
|
use GetAllAdhocCoProhibitions() separately.
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
Each compound rule or affix template object.
|
|
140
|
+
Returns:
|
|
141
|
+
EnumerableWrapper[IMoCompoundRule | IMoInflAffixTemplate]: Each compound rule or affix template object.
|
|
142
142
|
|
|
143
143
|
Example:
|
|
144
144
|
>>> ruleOps = MorphRuleOperations(project)
|
|
@@ -160,7 +160,7 @@ class MorphRuleOperations(BaseOperations):
|
|
|
160
160
|
Get all compound rules from MoMorphData.CompoundRulesOS.
|
|
161
161
|
|
|
162
162
|
Returns:
|
|
163
|
-
CompoundRuleCollection: Collection of CompoundRule wrapper objects
|
|
163
|
+
CompoundRuleCollection[CompoundRule]: Collection of CompoundRule wrapper objects
|
|
164
164
|
(MoEndoCompound or MoExoCompound).
|
|
165
165
|
|
|
166
166
|
Example:
|
|
@@ -194,7 +194,7 @@ class MorphRuleOperations(BaseOperations):
|
|
|
194
194
|
as a smart collection with filtering capabilities.
|
|
195
195
|
|
|
196
196
|
Returns:
|
|
197
|
-
AffixTemplateCollection: Collection of AffixTemplate wrapper objects
|
|
197
|
+
AffixTemplateCollection[AffixTemplate]: Collection of AffixTemplate wrapper objects
|
|
198
198
|
from all parts of speech.
|
|
199
199
|
|
|
200
200
|
Example:
|
|
@@ -232,7 +232,7 @@ class MorphRuleOperations(BaseOperations):
|
|
|
232
232
|
pos_or_hvo: The IPartOfSpeech object or HVO.
|
|
233
233
|
|
|
234
234
|
Returns:
|
|
235
|
-
AffixTemplateCollection: Collection of AffixTemplate wrapper objects
|
|
235
|
+
AffixTemplateCollection[AffixTemplate]: Collection of AffixTemplate wrapper objects
|
|
236
236
|
on the given POS.
|
|
237
237
|
|
|
238
238
|
Raises:
|
|
@@ -273,8 +273,8 @@ class MorphRuleOperations(BaseOperations):
|
|
|
273
273
|
determine the subtype: MoAdhocProhibGr, MoAdhocProhibMorph,
|
|
274
274
|
or MoAdhocProhibAllomorph.
|
|
275
275
|
|
|
276
|
-
|
|
277
|
-
IMoAdhocProhib: Each co-occurrence prohibition.
|
|
276
|
+
Returns:
|
|
277
|
+
EnumerableWrapper[IMoAdhocProhib]: Each co-occurrence prohibition.
|
|
278
278
|
|
|
279
279
|
Example:
|
|
280
280
|
>>> for prohib in ruleOps.GetAllAdhocCoProhibitions():
|
|
@@ -5,12 +5,18 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
|
+
from .compound_rule_collection import CompoundRuleCollection
|
|
10
|
+
from .affix_template_collection import AffixTemplateCollection
|
|
9
11
|
|
|
10
12
|
class MorphRuleOperations(BaseOperations[Any]):
|
|
11
13
|
"""MorphRuleOperations operations"""
|
|
12
14
|
|
|
13
|
-
def GetAll(self
|
|
15
|
+
def GetAll(self) -> EnumerableWrapper[Any]: ...
|
|
16
|
+
def GetAllCompoundRules(self) -> CompoundRuleCollection: ...
|
|
17
|
+
def GetAllAffixTemplates(self) -> AffixTemplateCollection: ...
|
|
18
|
+
def GetAllAffixTemplatesForPOS(self, pos_or_hvo: Any) -> AffixTemplateCollection: ...
|
|
19
|
+
def GetAllAdhocCoProhibitions(self) -> EnumerableWrapper[Any]: ...
|
|
14
20
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
21
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
22
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -158,8 +158,8 @@ class NaturalClassOperations(BaseOperations):
|
|
|
158
158
|
"""
|
|
159
159
|
Get all natural classes in the phonological inventory.
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
IPhNaturalClass: Each natural class in the project.
|
|
161
|
+
Returns:
|
|
162
|
+
EnumerableWrapper[IPhNaturalClass]: Each natural class in the project.
|
|
163
163
|
|
|
164
164
|
Example:
|
|
165
165
|
>>> for nc in project.NaturalClasses.GetAll():
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
9
|
|
|
10
10
|
class NaturalClassOperations(BaseOperations[Any]):
|
|
11
11
|
"""NaturalClassOperations operations"""
|
|
12
12
|
|
|
13
|
-
def GetAll(self
|
|
13
|
+
def GetAll(self) -> EnumerableWrapper[Any]: ...
|
|
14
14
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
15
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
16
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -112,8 +112,8 @@ class POSOperations(BaseOperations, CatalogBackedMixin):
|
|
|
112
112
|
yields only top-level POSs and the caller must descend via
|
|
113
113
|
GetSubcategories.
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
IPartOfSpeech: Each part of speech object.
|
|
115
|
+
Returns:
|
|
116
|
+
EnumerableWrapper[IPartOfSpeech]: Each part of speech object.
|
|
117
117
|
|
|
118
118
|
Example:
|
|
119
119
|
>>> posOps = POSOperations(project)
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
9
|
|
|
10
10
|
class POSOperations(BaseOperations[Any]):
|
|
11
11
|
"""Parts of Speech operations"""
|
|
12
12
|
|
|
13
|
-
def GetAll(self,
|
|
13
|
+
def GetAll(self, recursive: bool = True, **kwargs: Any) -> EnumerableWrapper[Any]: ...
|
|
14
14
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
15
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
16
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -142,8 +142,8 @@ class PhonFeatureOperations(BaseOperations, CatalogBackedMixin):
|
|
|
142
142
|
"""
|
|
143
143
|
Get all phonological features in the project.
|
|
144
144
|
|
|
145
|
-
|
|
146
|
-
IFsClosedFeature: Each feature in PhFeatureSystemOA.FeaturesOC.
|
|
145
|
+
Returns:
|
|
146
|
+
EnumerableWrapper[IFsClosedFeature]: Each feature in PhFeatureSystemOA.FeaturesOC.
|
|
147
147
|
|
|
148
148
|
Notes:
|
|
149
149
|
- ``FeaturesOC`` is typed as ``IFsFeatDefn`` in C#. Each yielded
|
|
@@ -115,8 +115,8 @@ class PhonemeOperations(BaseOperations):
|
|
|
115
115
|
"""
|
|
116
116
|
Get all phonemes in the project.
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
IPhPhoneme: Each phoneme object in the project's phoneme inventory.
|
|
118
|
+
Returns:
|
|
119
|
+
EnumerableWrapper[IPhPhoneme]: Each phoneme object in the project's phoneme inventory.
|
|
120
120
|
|
|
121
121
|
Example:
|
|
122
122
|
>>> phonemeOps = PhonemeOperations(project)
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
#
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
|
-
from ..BaseOperations import BaseOperations
|
|
8
|
+
from ..BaseOperations import BaseOperations, EnumerableWrapper
|
|
9
9
|
|
|
10
10
|
class PhonemeOperations(BaseOperations[Any]):
|
|
11
11
|
"""PhonemeOperations operations"""
|
|
12
12
|
|
|
13
|
-
def GetAll(self
|
|
13
|
+
def GetAll(self) -> EnumerableWrapper[Any]: ...
|
|
14
14
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
15
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
16
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -107,7 +107,7 @@ class PhonologicalRuleOperations(BaseOperations):
|
|
|
107
107
|
Get all phonological rules in the project.
|
|
108
108
|
|
|
109
109
|
Returns:
|
|
110
|
-
RuleCollection: Smart collection of PhonologicalRule wrapped objects.
|
|
110
|
+
RuleCollection[PhonologicalRule]: Smart collection of PhonologicalRule wrapped objects.
|
|
111
111
|
|
|
112
112
|
Example:
|
|
113
113
|
>>> phonRuleOps = PhonologicalRuleOperations(project)
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
from typing import Any, Optional, Iterator
|
|
8
8
|
from ..BaseOperations import BaseOperations
|
|
9
|
+
from .rule_collection import RuleCollection
|
|
9
10
|
|
|
10
11
|
class PhonologicalRuleOperations(BaseOperations[Any]):
|
|
11
12
|
"""PhonologicalRuleOperations operations"""
|
|
12
13
|
|
|
13
|
-
def GetAll(self
|
|
14
|
+
def GetAll(self) -> RuleCollection: ...
|
|
14
15
|
def Find(self, *args: Any, **kwargs: Any) -> Optional[Any]: ...
|
|
15
16
|
def Exists(self, *args: Any, **kwargs: Any) -> bool: ...
|
|
16
17
|
def Create(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
@@ -108,8 +108,8 @@ class StratumOperations(BaseOperations):
|
|
|
108
108
|
"""
|
|
109
109
|
Yield every stratum in ``MorphologicalDataOA.StrataOS``.
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
IMoStratum: Each stratum in declaration order.
|
|
111
|
+
Returns:
|
|
112
|
+
EnumerableWrapper[IMoStratum]: Each stratum in declaration order.
|
|
113
113
|
"""
|
|
114
114
|
morph_data = self.project.lp.MorphologicalDataOA
|
|
115
115
|
if morph_data is None:
|
|
@@ -112,7 +112,7 @@ class AllomorphOperations(BaseOperations):
|
|
|
112
112
|
in the entire project.
|
|
113
113
|
|
|
114
114
|
Returns:
|
|
115
|
-
AllomorphCollection: Smart collection of Allomorph wrapper objects
|
|
115
|
+
AllomorphCollection[Allomorph]: Smart collection of Allomorph wrapper objects
|
|
116
116
|
showing type breakdown and supporting filtered queries.
|
|
117
117
|
|
|
118
118
|
Example:
|