nameparser 2.8.1__tar.gz → 2.8.2__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.
- {nameparser-2.8.1/nameparser.egg-info → nameparser-2.8.2}/PKG-INFO +2 -2
- {nameparser-2.8.1 → nameparser-2.8.2}/README.rst +1 -1
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_config_shim.py +1 -1
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_lexicon.py +3 -3
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_version.py +1 -1
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/__init__.py +8 -7
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/_invariants.py +1 -1
- nameparser-2.8.2/nameparser/config/surnames.py +40 -0
- {nameparser-2.8.1 → nameparser-2.8.2/nameparser.egg-info}/PKG-INFO +2 -2
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser.egg-info/SOURCES.txt +1 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_contracts.py +6 -4
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_deprecations.py +3 -3
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_removals_2_8_1.py +28 -7
- {nameparser-2.8.1 → nameparser-2.8.2}/AUTHORS +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/LICENSE +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/MANIFEST.in +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/__main__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_facade.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_locale.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_parser.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_assemble.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_assign.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_classify.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_comma.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_extract.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_group.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_pieces.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_post_rules.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_script_segment.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_segment.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_state.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_tokenize.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_pipeline/_vocab.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_policy.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_render.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/_types.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/_compiled.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/_deprecated.py +0 -0
- /nameparser-2.8.1/nameparser/config/surnames.py → /nameparser-2.8.2/nameparser/config/_ko_surnames.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/_titles_2_6_0.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/bound_first_names.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/bound_given_names.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/capitalization.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/conjunctions.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/given_names.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/maiden_markers.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/particles.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/prefixes.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/regexes.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/suffixes.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/config/titles.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/locales/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/locales/ja.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/locales/ru.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/locales/tr_az.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/locales/zh.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/parser.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/py.typed +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/util.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ak.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/am.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ar.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/as.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/be.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/bg.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/bin.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/bn.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/bo.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/bs.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ca.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/cs.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/da.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/de.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/el.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/en.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/es.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/et.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/fa.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ff.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/fi.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/fil.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/fr.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ga.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/gd.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/gu.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ha.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/he.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/hi.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/hr.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/hu.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/hy.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/id.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/is.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/it.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ja.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ka.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/kk.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/km.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/kn.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ko.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/kok.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/lo.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/lt.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/lv.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/mi.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/mk.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ml.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/mn.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/mr.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ms.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/mul.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/my.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/nb.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ne.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/nl.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/nn.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/or.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/pa.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/pl.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/pt-BR.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/pt.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ro.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ru.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sd.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/shn.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/si.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sk.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sl.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sr.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sv.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/sw.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ta.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/te.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/th.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ti.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/tr.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/uk.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/und.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/ur.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/vi.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/yi.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/yo.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/zh.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser/vocab/zu.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser.egg-info/dependency_links.txt +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser.egg-info/requires.txt +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/nameparser.egg-info/top_level.txt +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/pyproject.toml +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/setup.cfg +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/base.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/conftest.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/removals.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_bound_given_names.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_brute_force.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_capitalization.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_comma_variants.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_conjunctions.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_constants.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_east_slavic_patronymic_order.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_first_name.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_initials.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_middle_name_as_last.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_nicknames.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_output_format.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_particles.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_python_api.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_suffixes.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_titles.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_turkic_patronymic_order.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/test_variations.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/_differential_fixtures.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/cases.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/conftest.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/design_docs.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/__init__.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_assemble.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_assign.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_classify.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_comma.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_extract.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_group.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_pieces.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_post_rules.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_script_segment.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_segment.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_state.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_tokenize.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/pipeline/test_vocab.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/rules_budget.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/rules_doc.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/rules_skeleton.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_benchmark.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_cases.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_cldr_agreement.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_cldr_corpus.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_cli.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_config_aliases.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_config_shim.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_corpora.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_corpus_build.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_design_docs.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_differential.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_doc_citations.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_doc_spellings.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_facade.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_facade_cases.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_gnd_corpus.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_layering.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_lexicon.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_local_agreement.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_local_corpora.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_local_jrc.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_local_orcid.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_local_patentsview.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_locale.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_locales.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_measure.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_name_usage_tool.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_order_correspondence.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_parser.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_policy.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_properties.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_regex_sync.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_render.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_reprs.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_rules_budget.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_rules_doc.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_rules_doc_grammar.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_rules_skeleton.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_snapshot.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_types.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_vocab.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_wikidata_corpus.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_wikidata_native_corpus.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_word_report.py +0 -0
- {nameparser-2.8.1 → nameparser-2.8.2}/tests/v2/test_zh_surnames_tool.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nameparser
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.2
|
|
4
4
|
Summary: A simple Python module for parsing human names into their individual components.
|
|
5
5
|
Author-email: Derek Gulbranson <derek73@gmail.com>
|
|
6
6
|
License-Expression: LGPL-2.1-or-later
|
|
@@ -40,7 +40,7 @@ composable, and locale packs are opt-in.
|
|
|
40
40
|
⚠️ **2.8.1 adds three more DeprecationWarnings** for things 3.0 changes:
|
|
41
41
|
configuring a ``Lexicon`` through its set fields
|
|
42
42
|
(``Lexicon.default().add(titles={"dean"})``), reading the vocabulary
|
|
43
|
-
constants in ``nameparser.config`` (``TITLES`` and the rest
|
|
43
|
+
constants in ``nameparser.config`` (``TITLES`` and the rest; 2.8.2 adds
|
|
44
44
|
``surnames``), and ``nameparser.config.regexes``. A test run that turns
|
|
45
45
|
warnings into errors (``-W error``, or pytest's ``filterwarnings =
|
|
46
46
|
error``) fails where your code does any of these; see the `migration
|
|
@@ -12,7 +12,7 @@ composable, and locale packs are opt-in.
|
|
|
12
12
|
⚠️ **2.8.1 adds three more DeprecationWarnings** for things 3.0 changes:
|
|
13
13
|
configuring a ``Lexicon`` through its set fields
|
|
14
14
|
(``Lexicon.default().add(titles={"dean"})``), reading the vocabulary
|
|
15
|
-
constants in ``nameparser.config`` (``TITLES`` and the rest
|
|
15
|
+
constants in ``nameparser.config`` (``TITLES`` and the rest; 2.8.2 adds
|
|
16
16
|
``surnames``), and ``nameparser.config.regexes``. A test run that turns
|
|
17
17
|
warnings into errors (``-W error``, or pytest's ``filterwarnings =
|
|
18
18
|
error``) fails where your code does any of these; see the `migration
|
|
@@ -1170,7 +1170,7 @@ class Constants:
|
|
|
1170
1170
|
from nameparser.config._compiled import MAIDEN_MARKERS
|
|
1171
1171
|
from nameparser.config._compiled import (
|
|
1172
1172
|
AGNOMENS, GLUED_HONORIFICS, SUFFIX_WORDS_AMBIGUOUS)
|
|
1173
|
-
from nameparser.config.
|
|
1173
|
+
from nameparser.config._ko_surnames import KOREAN_SURNAMES
|
|
1174
1174
|
from nameparser.config._titles_2_6_0 import TITLES_2_6_0
|
|
1175
1175
|
from nameparser.config._compiled import (
|
|
1176
1176
|
AFTER_GIVEN_TITLES, TITLE_MODIFIERS, TITLE_PHRASES, TITLE_STYLES,
|
|
@@ -799,7 +799,7 @@ class Lexicon:
|
|
|
799
799
|
#: written wholly in a script :attr:`Policy.segment_scripts
|
|
800
800
|
#: <nameparser.Policy.segment_scripts>` activates. The default
|
|
801
801
|
#: carries the Korean census list
|
|
802
|
-
#: (
|
|
802
|
+
#: (``nameparser/config/_ko_surnames.py``); Chinese
|
|
803
803
|
#: surnames ship in locales.ZH because Han segmentation is opt-in.
|
|
804
804
|
surnames: frozenset[str] = frozenset()
|
|
805
805
|
#: Honorifics, and credential, office and generational words, that
|
|
@@ -1209,7 +1209,7 @@ class Lexicon:
|
|
|
1209
1209
|
def _default_lexicon() -> Lexicon:
|
|
1210
1210
|
# The compiled vocabulary, read from _compiled rather than the public
|
|
1211
1211
|
# nameparser.config modules, whose constants warn at a caller's read
|
|
1212
|
-
# since 2.8.1 (#1007)
|
|
1212
|
+
# since 2.8.1 (#1007), and surnames.py's since 2.8.2.
|
|
1213
1213
|
from nameparser.config._compiled import BOUND_GIVEN_NAMES
|
|
1214
1214
|
from nameparser.config._compiled import GIVEN_NAME_ABBREVIATIONS
|
|
1215
1215
|
from nameparser.config._compiled import CAPITALIZATION_EXCEPTIONS
|
|
@@ -1221,7 +1221,7 @@ def _default_lexicon() -> Lexicon:
|
|
|
1221
1221
|
AGNOMENS, GLUED_HONORIFICS, SUFFIX_ACRONYMS, SUFFIX_ACRONYMS_AMBIGUOUS,
|
|
1222
1222
|
SUFFIX_WORDS, SUFFIX_WORDS_AMBIGUOUS,
|
|
1223
1223
|
)
|
|
1224
|
-
from nameparser.config.
|
|
1224
|
+
from nameparser.config._ko_surnames import KOREAN_SURNAMES
|
|
1225
1225
|
from nameparser.config._compiled import (
|
|
1226
1226
|
AFTER_GIVEN_TITLES, GIVEN_NAME_TITLES, TITLE_MODIFIERS, TITLE_PHRASES,
|
|
1227
1227
|
TITLE_STYLES, TITLES, TITLES_AMBIGUOUS)
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
#: cannot carry the dev marker, so `VERSION >= (2, 8, 1)` is already
|
|
8
8
|
#: true here while 2.8.1 is unreleased. Compare `__version__` instead
|
|
9
9
|
#: where that distinction matters.
|
|
10
|
-
VERSION = (2, 8,
|
|
10
|
+
VERSION = (2, 8, 2)
|
|
11
11
|
#: PEP 440 pre-release/dev segment appended to the numeric version, or
|
|
12
12
|
#: "" for a final release. Joined WITHOUT a dot ("2.0.0rc1", not
|
|
13
13
|
#: "2.0.0.rc1"); setuptools reads __version__ as the package version.
|
|
@@ -10,10 +10,11 @@ rest of the facade in 3.0. The vocabulary data modules beside them
|
|
|
10
10
|
...) hold the word lists the 2.x :class:`~nameparser.Lexicon` is built
|
|
11
11
|
from, named for its fields since 2.2 (#293); since 2.6 each (all but
|
|
12
12
|
``surnames.py``) re-exports sets compiled from the per-word TOML files
|
|
13
|
-
in ``nameparser/vocab/`` (#737). 3.0 removes them too,
|
|
14
|
-
``surnames
|
|
13
|
+
in ``nameparser/vocab/`` (#737). 3.0 removes them too, and makes
|
|
14
|
+
``surnames`` private; since 2.8.1 reading one of their constants warns,
|
|
15
15
|
naming what 3.0 offers in its place (#1007), as reading
|
|
16
|
-
``nameparser.config.regexes`` does (#1008).
|
|
16
|
+
``nameparser.config.regexes`` does (#1008), and since 2.8.2 reading
|
|
17
|
+
``surnames.KOREAN_SURNAMES`` does.
|
|
17
18
|
|
|
18
19
|
``RegexTupleManager`` is served from the shim purely for pickle
|
|
19
20
|
compatibility (through ``__getattr__`` since 2.8, so loading such a blob
|
|
@@ -25,10 +26,10 @@ blob raises ``AttributeError`` looking up the class, not a clean
|
|
|
25
26
|
compatibility failure.
|
|
26
27
|
"""
|
|
27
28
|
# Maintainer note, deliberately outside the docstring: 3.0 removes the
|
|
28
|
-
# five shim names below and the vocabulary DATA modules
|
|
29
|
-
# (#1007, #1008, superseding decisions/3-0-reevaluations's
|
|
30
|
-
# entry, which kept the modules); the modules warn per
|
|
31
|
-
# 2.8.1. Constants and CONSTANTS are imported eagerly -- Constants
|
|
29
|
+
# five shim names below and the vocabulary DATA modules, surnames made
|
|
30
|
+
# private (#1007, #1008, superseding decisions/3-0-reevaluations's
|
|
31
|
+
# 2026-10-28 entry, which kept the modules); the modules warn per
|
|
32
|
+
# constant since 2.8.1, surnames since 2.8.2. Constants and CONSTANTS are imported eagerly -- Constants
|
|
32
33
|
# warns at construction, the CONSTANTS singleton when mutated -- while
|
|
33
34
|
# the three managers resolve through __getattr__ so that each caller's
|
|
34
35
|
# read warns, at the caller's line, and nameparser's own reads (from
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Since the word lists moved to nameparser/vocab/*.toml, whose compiler
|
|
4
4
|
(tools/vocab/build.py) refuses an unnormalized spelling itself, the one
|
|
5
|
-
constant this module still checks is ``
|
|
5
|
+
constant this module still checks is ``_ko_surnames.KOREAN_SURNAMES``, a
|
|
6
6
|
segmentation list outside the per-word model.
|
|
7
7
|
|
|
8
8
|
A constant is looked up in normalized form, so a stray capital or a
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""The Korean census surnames the default lexicon segments unspaced
|
|
2
|
+
hangul on (#271), deprecated in 2.8.2: 3.0 makes the module private,
|
|
3
|
+
and ``Lexicon.default().surnames`` holds the same words in 2.x and 3.0
|
|
4
|
+
alike."""
|
|
5
|
+
# The list itself lives in _ko_surnames.py, which the library reads, so
|
|
6
|
+
# only a caller's read of this module's constant warns (#1007, as
|
|
7
|
+
# titles.py over _compiled).
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from nameparser.config import _ko_surnames
|
|
11
|
+
from nameparser.config._deprecated import alias_getattr
|
|
12
|
+
|
|
13
|
+
KOREAN_SURNAMES = _ko_surnames.KOREAN_SURNAMES
|
|
14
|
+
"""
|
|
15
|
+
Korean surnames (#271), used by the 2.0 API's unspaced-name
|
|
16
|
+
segmentation: a hangul token like "김민준" splits into surname + given
|
|
17
|
+
name by longest match. Ships as DEFAULT vocabulary because a hangul
|
|
18
|
+
entry can only ever match hangul text, and hangul text is unambiguously
|
|
19
|
+
Korean. Chinese surnames live in ``nameparser.locales.zh`` instead (Han
|
|
20
|
+
segmentation is opt-in; a zh list corrupts Japanese kanji names).
|
|
21
|
+
|
|
22
|
+
Deprecated since 2.8.2, and private in 3.0: read
|
|
23
|
+
``Lexicon.default().surnames``, which holds the same words, and extend
|
|
24
|
+
it with ``Lexicon.default() | Lexicon(surnames=frozenset({...}))``.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# outside the type checker's view, for the reason alias_getattr's
|
|
28
|
+
# docstring gives: a module __getattr__ mypy can see answers every
|
|
29
|
+
# missing attribute of the module
|
|
30
|
+
if not TYPE_CHECKING:
|
|
31
|
+
# 2.8.2: the constant is served by __getattr__ and warns at the line
|
|
32
|
+
# that reads it, naming the Lexicon field 3.0 keeps public
|
|
33
|
+
__getattr__, __dir__ = alias_getattr(__name__, {}, removed={
|
|
34
|
+
"KOREAN_SURNAMES": (
|
|
35
|
+
"Lexicon.default().surnames holds the same words, now and in 3.0"),
|
|
36
|
+
}, namespace=globals())
|
|
37
|
+
|
|
38
|
+
# star imports read __all__ and never the module __getattr__ -- see the
|
|
39
|
+
# note in prefixes.py
|
|
40
|
+
__all__ = ["KOREAN_SURNAMES"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nameparser
|
|
3
|
-
Version: 2.8.
|
|
3
|
+
Version: 2.8.2
|
|
4
4
|
Summary: A simple Python module for parsing human names into their individual components.
|
|
5
5
|
Author-email: Derek Gulbranson <derek73@gmail.com>
|
|
6
6
|
License-Expression: LGPL-2.1-or-later
|
|
@@ -40,7 +40,7 @@ composable, and locale packs are opt-in.
|
|
|
40
40
|
⚠️ **2.8.1 adds three more DeprecationWarnings** for things 3.0 changes:
|
|
41
41
|
configuring a ``Lexicon`` through its set fields
|
|
42
42
|
(``Lexicon.default().add(titles={"dean"})``), reading the vocabulary
|
|
43
|
-
constants in ``nameparser.config`` (``TITLES`` and the rest
|
|
43
|
+
constants in ``nameparser.config`` (``TITLES`` and the rest; 2.8.2 adds
|
|
44
44
|
``surnames``), and ``nameparser.config.regexes``. A test run that turns
|
|
45
45
|
warnings into errors (``-W error``, or pytest's ``filterwarnings =
|
|
46
46
|
error``) fails where your code does any of these; see the `migration
|
|
@@ -40,6 +40,7 @@ nameparser/config/__init__.py
|
|
|
40
40
|
nameparser/config/_compiled.py
|
|
41
41
|
nameparser/config/_deprecated.py
|
|
42
42
|
nameparser/config/_invariants.py
|
|
43
|
+
nameparser/config/_ko_surnames.py
|
|
43
44
|
nameparser/config/_titles_2_6_0.py
|
|
44
45
|
nameparser/config/bound_first_names.py
|
|
45
46
|
nameparser/config/bound_given_names.py
|
|
@@ -85,7 +85,8 @@ def test_every_guarded_config_module_is_imported() -> None:
|
|
|
85
85
|
|
|
86
86
|
Since the vocabulary moved to nameparser/vocab/*.toml, whose
|
|
87
87
|
compiler checks it (tests/v2/test_vocab.py), the asserts left are
|
|
88
|
-
on data still written in Python -- ``
|
|
88
|
+
on data still written in Python -- ``_ko_surnames`` today (the
|
|
89
|
+
Korean census list, ``surnames.py``'s until 2.8.2), which is
|
|
89
90
|
lazy (imported inside ``_snapshot``/``_default_lexicon``), so its
|
|
90
91
|
guard fires only incidentally, whenever some other test happens to
|
|
91
92
|
build a default Lexicon. Importing them all here makes every guard
|
|
@@ -101,11 +102,12 @@ def test_every_guarded_config_module_is_imported() -> None:
|
|
|
101
102
|
import nameparser.config
|
|
102
103
|
|
|
103
104
|
config_dir = pathlib.Path(nameparser.config.__file__).parent
|
|
104
|
-
#
|
|
105
|
-
#
|
|
105
|
+
# _invariants excluded: it DEFINES the guard (the substring hits its
|
|
106
|
+
# own def) and holds no vocabulary of its own. Private modules are
|
|
107
|
+
# read, since the data moved to one in 2.8.2
|
|
106
108
|
guarded = sorted(
|
|
107
109
|
p.stem for p in config_dir.glob("*.py")
|
|
108
|
-
if
|
|
110
|
+
if p.stem != "_invariants"
|
|
109
111
|
and "assert_normalized(" in p.read_text(encoding="utf-8"))
|
|
110
112
|
assert guarded, (
|
|
111
113
|
f"no guarded config module found in {config_dir} -- the "
|
|
@@ -434,10 +434,10 @@ def test_a_copy_leaves_the_once_per_line_registry_alone() -> None:
|
|
|
434
434
|
"from nameparser import HumanName",
|
|
435
435
|
"from nameparser.parser import HumanName",
|
|
436
436
|
"from nameparser.config import CONSTANTS, Constants",
|
|
437
|
-
# the
|
|
438
|
-
# asserted in test_removals_2_8_1.py
|
|
437
|
+
# the modules import quietly; their constants warn since 2.8.1
|
|
438
|
+
# (#1007), surnames' since 2.8.2, asserted in test_removals_2_8_1.py
|
|
439
439
|
"import nameparser.config.titles",
|
|
440
|
-
"
|
|
440
|
+
"import nameparser.config.surnames",
|
|
441
441
|
"from nameparser import parse; parse('John Smith')",
|
|
442
442
|
])
|
|
443
443
|
def test_imports_and_the_core_stay_quiet(code: str) -> None:
|
|
@@ -7,7 +7,9 @@ line and naming the 3.0 replacement and the migration guide:
|
|
|
7
7
|
``Lexicon(...)``, ``add()``, ``remove()`` or ``dataclasses.replace``;
|
|
8
8
|
* the constants of the eight ``nameparser.config`` vocabulary modules
|
|
9
9
|
3.0 deletes (#1007);
|
|
10
|
-
* ``nameparser.config.regexes`` (#1008)
|
|
10
|
+
* ``nameparser.config.regexes`` (#1008);
|
|
11
|
+
* and, since 2.8.2, ``nameparser.config.surnames``, which 3.0 makes
|
|
12
|
+
private (its words are ``Lexicon.default().surnames``).
|
|
11
13
|
|
|
12
14
|
The tables are written out literally rather than read from the modules,
|
|
13
15
|
for the reason tests/v2/test_config_aliases.py gives: imported, every
|
|
@@ -58,8 +60,8 @@ def _line_after() -> int:
|
|
|
58
60
|
# -- the vocabulary and regex modules (#1007, #1008) --------------------------
|
|
59
61
|
|
|
60
62
|
#: (module, constant, a phrase its replacement clause must hold). Every
|
|
61
|
-
#: public name of the
|
|
62
|
-
#: test_config_aliases.py asserts) aside.
|
|
63
|
+
#: public name of the ten modules, the 1.x aliases (which
|
|
64
|
+
#: test_config_aliases.py asserts) aside; surnames since 2.8.2.
|
|
63
65
|
REMOVED_CONSTANTS = [
|
|
64
66
|
("titles", "GIVEN_NAME_TITLES", 'words(kind="title", addresses="given")'),
|
|
65
67
|
("titles", "TITLES", 'words(kind="title")'),
|
|
@@ -89,6 +91,7 @@ REMOVED_CONSTANTS = [
|
|
|
89
91
|
("regexes", "re_bidi", "copy a pattern you reuse"),
|
|
90
92
|
("regexes", "EMPTY_REGEX", "copy a pattern you reuse"),
|
|
91
93
|
("regexes", "REGEXES", "copy a pattern you reuse"),
|
|
94
|
+
("surnames", "KOREAN_SURNAMES", "Lexicon.default().surnames"),
|
|
92
95
|
]
|
|
93
96
|
REMOVED_MODULES = sorted({m for m, _, _ in REMOVED_CONSTANTS})
|
|
94
97
|
|
|
@@ -124,7 +127,10 @@ def test_reading_a_removed_constant_warns_at_the_reading_line(
|
|
|
124
127
|
[w] = _deprecations(record)
|
|
125
128
|
_assert_removal(w, module_name, name, phrase, line)
|
|
126
129
|
# served unchanged: the library's own copy is the same object
|
|
127
|
-
if module_name
|
|
130
|
+
if module_name == "surnames":
|
|
131
|
+
from nameparser.config import _ko_surnames
|
|
132
|
+
assert value is _ko_surnames.KOREAN_SURNAMES
|
|
133
|
+
elif module_name != "regexes":
|
|
128
134
|
from nameparser.config import _compiled
|
|
129
135
|
assert value is getattr(_compiled, name)
|
|
130
136
|
|
|
@@ -151,13 +157,28 @@ def test_the_table_covers_every_public_name(module_name: str) -> None:
|
|
|
151
157
|
assert set(module.__all__) - aliases == listed
|
|
152
158
|
|
|
153
159
|
|
|
154
|
-
def
|
|
160
|
+
def test_the_modules_import_quietly() -> None:
|
|
155
161
|
with warnings.catch_warnings():
|
|
156
162
|
warnings.simplefilter("error")
|
|
157
163
|
for module_name in REMOVED_MODULES:
|
|
158
164
|
importlib.import_module(f"nameparser.config.{module_name}")
|
|
159
|
-
|
|
160
|
-
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def test_the_surnames_replacement_runs_quietly_and_holds_the_same_words(
|
|
168
|
+
) -> None:
|
|
169
|
+
# 2.8.2: the message offers Lexicon.default().surnames, the field
|
|
170
|
+
# 3.0 keeps public, as the code that replaces the read; run the
|
|
171
|
+
# code it names and hold it to the constant it replaces
|
|
172
|
+
from nameparser.config import surnames
|
|
173
|
+
with _caught() as record:
|
|
174
|
+
held = surnames.KOREAN_SURNAMES
|
|
175
|
+
[w] = _deprecations(record)
|
|
176
|
+
code = str(w.message).split("; ", 1)[1].split(" holds", 1)[0]
|
|
177
|
+
assert code == "Lexicon.default().surnames"
|
|
178
|
+
with warnings.catch_warnings():
|
|
179
|
+
warnings.simplefilter("error")
|
|
180
|
+
offered = eval(code, {"Lexicon": Lexicon}) # noqa: S307
|
|
181
|
+
assert offered == held
|
|
161
182
|
|
|
162
183
|
|
|
163
184
|
def test_an_alias_to_a_removed_constant_warns_once_naming_both() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|