1
0
mirror of https://github.com/ilri/csv-metadata-quality.git synced 2025-09-13 23:27:05 +02:00

1 Commits

Author SHA1 Message Date
0d719cf42a .drone.yml: add Python 3.11
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-25 10:47:16 +03:00
10 changed files with 410 additions and 658 deletions

View File

@@ -1,3 +1,33 @@
---
kind: pipeline
type: docker
name: python311
steps:
- name: test
image: python:3.11-slim
commands:
- id
- python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config
- pip install -r requirements-dev.txt
- pytest
- python setup.py install
# Basic test
- csv-metadata-quality -i data/test.csv -o /tmp/test.csv
# Basic test with unsafe fixes
- csv-metadata-quality -i data/test.csv -o /tmp/test.csv -u
# Geography test
- csv-metadata-quality -i data/test-geography.csv -o /tmp/test.csv
# Geography test with unsafe fixes
- csv-metadata-quality -i data/test-geography.csv -o /tmp/test.csv -u
# Test with experimental checks
- csv-metadata-quality -i data/test.csv -o /tmp/test.csv -e
# Test with AGROVOC validation
- csv-metadata-quality -i data/test.csv -o /tmp/test.csv --agrovoc-fields dcterms.subject
# Test with AGROVOC validation (and dropping invalid)
- csv-metadata-quality -i data/test.csv -o /tmp/test.csv --agrovoc-fields dcterms.subject -d
--- ---
kind: pipeline kind: pipeline
type: docker type: docker
@@ -9,7 +39,7 @@ steps:
commands: commands:
- id - id
- python -V - python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config git - apt update && apt install -y gcc g++ libicu-dev pkg-config
- pip install -r requirements-dev.txt - pip install -r requirements-dev.txt
- pytest - pytest
- python setup.py install - python setup.py install
@@ -39,7 +69,7 @@ steps:
commands: commands:
- id - id
- python -V - python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config git - apt update && apt install -y gcc g++ libicu-dev pkg-config
- pip install -r requirements-dev.txt - pip install -r requirements-dev.txt
- pytest - pytest
- python setup.py install - python setup.py install
@@ -69,7 +99,7 @@ steps:
commands: commands:
- id - id
- python -V - python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config git - apt update && apt install -y gcc g++ libicu-dev pkg-config
- pip install -r requirements-dev.txt - pip install -r requirements-dev.txt
- pytest - pytest
- python setup.py install - python setup.py install

View File

@@ -4,11 +4,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased ## [0.6.0] = 2022-09-02
### Fixed
- Missing region check should ignore subregion field, if it exists
## [0.6.0] - 2022-09-02
### Changed ### Changed
- Perform fix for "unnecessary" Unicode characters after we try to fix encoding - Perform fix for "unnecessary" Unicode characters after we try to fix encoding
issues with ftfy issues with ftfy

View File

@@ -512,9 +512,9 @@ def countries_match_regions(row, exclude):
if match is not None: if match is not None:
country_column_name = label country_column_name = label
# Find the name of the region column, but make sure it's not subregion! # Find the name of the region column
match = re.match(r"^.*?region.*$", label) match = re.match(r"^.*?region.*$", label)
if match is not None and "sub" not in label: if match is not None:
region_column_name = label region_column_name = label
# Find the name of the title column # Find the name of the title column
@@ -550,7 +550,7 @@ def countries_match_regions(row, exclude):
if un_region != "not found" and un_region not in regions: if un_region != "not found" and un_region not in regions:
print( print(
f"{Fore.YELLOW}Missing region ({country} → {un_region}): {Fore.RESET}{row[title_column_name]}" f"{Fore.YELLOW}Missing region ({un_region}): {Fore.RESET}{row[title_column_name]}"
) )
return return

View File

@@ -327,9 +327,9 @@ def countries_match_regions(row, exclude):
if match is not None: if match is not None:
country_column_name = label country_column_name = label
# Find the name of the region column, but make sure it's not subregion! # Find the name of the region column
match = re.match(r"^.*?region.*$", label) match = re.match(r"^.*?region.*$", label)
if match is not None and "sub" not in label: if match is not None:
region_column_name = label region_column_name = label
# Find the name of the title column # Find the name of the title column

View File

@@ -1,39 +1,38 @@
dc.title,dcterms.issued,dc.identifier.issn,dc.identifier.isbn,dcterms.language,dcterms.subject,cg.coverage.country,filename,dcterms.license,dcterms.type,dcterms.bibliographicCitation,cg.identifier.doi,cg.coverage.region,cg.coverage.subregion dc.title,dcterms.issued,dc.identifier.issn,dc.identifier.isbn,dcterms.language,dcterms.subject,cg.coverage.country,filename,dcterms.license,dcterms.type,dcterms.bibliographicCitation,cg.identifier.doi,cg.coverage.region
Leading space,2019-07-29,,,,,,,,,,,, Leading space,2019-07-29,,,,,,,,,,,
Trailing space ,2019-07-29,,,,,,,,,,,, Trailing space ,2019-07-29,,,,,,,,,,,
Excessive space,2019-07-29,,,,,,,,,,,, Excessive space,2019-07-29,,,,,,,,,,,
Miscellaenous ||whitespace | issues ,2019-07-29,,,,,,,,,,,, Miscellaenous ||whitespace | issues ,2019-07-29,,,,,,,,,,,
Duplicate||Duplicate,2019-07-29,,,,,,,,,,,, Duplicate||Duplicate,2019-07-29,,,,,,,,,,,
Invalid ISSN,2019-07-29,2321-2302,,,,,,,,,,, Invalid ISSN,2019-07-29,2321-2302,,,,,,,,,,
Invalid ISBN,2019-07-29,,978-0-306-40615-6,,,,,,,,,, Invalid ISBN,2019-07-29,,978-0-306-40615-6,,,,,,,,,
Multiple valid ISSNs,2019-07-29,0378-5955||0024-9319,,,,,,,,,,, Multiple valid ISSNs,2019-07-29,0378-5955||0024-9319,,,,,,,,,,
Multiple valid ISBNs,2019-07-29,,99921-58-10-7||978-0-306-40615-7,,,,,,,,,, Multiple valid ISBNs,2019-07-29,,99921-58-10-7||978-0-306-40615-7,,,,,,,,,
Invalid date,2019-07-260,,,,,,,,,,,, Invalid date,2019-07-260,,,,,,,,,,,
Multiple dates,2019-07-26||2019-01-10,,,,,,,,,,,, Multiple dates,2019-07-26||2019-01-10,,,,,,,,,,,
Invalid multi-value separator,2019-07-29,0378-5955|0024-9319,,,,,,,,,,, Invalid multi-value separator,2019-07-29,0378-5955|0024-9319,,,,,,,,,,
Unnecessary Unicode,2019-07-29,,,,,,,,,,,, Unnecessary Unicode,2019-07-29,,,,,,,,,,,
Suspicious character||foreˆt,2019-07-29,,,,,,,,,,,, Suspicious character||foreˆt,2019-07-29,,,,,,,,,,,
Invalid ISO 639-1 (alpha 2) language,2019-07-29,,,jp,,,,,,,,, Invalid ISO 639-1 (alpha 2) language,2019-07-29,,,jp,,,,,,,,
Invalid ISO 639-3 (alpha 3) language,2019-07-29,,,chi,,,,,,,,, Invalid ISO 639-3 (alpha 3) language,2019-07-29,,,chi,,,,,,,,
Invalid language,2019-07-29,,,Span,,,,,,,,, Invalid language,2019-07-29,,,Span,,,,,,,,
Invalid AGROVOC subject,2019-07-29,,,,LIVESTOCK||FOREST,,,,,,,, Invalid AGROVOC subject,2019-07-29,,,,LIVESTOCK||FOREST,,,,,,,
Newline (LF),2019-07-30,,,,"TANZA Newline (LF),2019-07-30,,,,"TANZA
NIA",,,,,,,, NIA",,,,,,,
Missing date,,,,,,,,,,,,, Missing date,,,,,,,,,,,,
Invalid country,2019-08-01,,,,,KENYAA,,,,,,, Invalid country,2019-08-01,,,,,KENYAA,,,,,,
Uncommon filename extension,2019-08-10,,,,,,file.pdf.lck,,,,,, Uncommon filename extension,2019-08-10,,,,,,file.pdf.lck,,,,,
Unneccesary unicode (U+002D + U+00AD),2019-08-10,,978-­92-­9043-­823-­6,,,,,,,,,, Unneccesary unicode (U+002D + U+00AD),2019-08-10,,978-­92-­9043-­823-­6,,,,,,,,,
"Missing space,after comma",2019-08-27,,,,,,,,,,,, "Missing space,after comma",2019-08-27,,,,,,,,,,,
Incorrect ISO 639-1 language,2019-09-26,,,es,,,,,,,,, Incorrect ISO 639-1 language,2019-09-26,,,es,,,,,,,,
Incorrect ISO 639-3 language,2019-09-26,,,spa,,,,,,,,, Incorrect ISO 639-3 language,2019-09-26,,,spa,,,,,,,,
Composéd Unicode,2020-01-14,,,,,,,,,,,, Composéd Unicode,2020-01-14,,,,,,,,,,,
Decomposéd Unicode,2020-01-14,,,,,,,,,,,, Decomposéd Unicode,2020-01-14,,,,,,,,,,,
Unnecessary multi-value separator,2021-01-03,0378-5955||,,,,,,,,,,, Unnecessary multi-value separator,2021-01-03,0378-5955||,,,,,,,,,,
Invalid SPDX license identifier,2021-03-11,,,,,,,CC-BY,,,,, Invalid SPDX license identifier,2021-03-11,,,,,,,CC-BY,,,,
Duplicate Title,2021-03-17,,,,,,,,Report,,,, Duplicate Title,2021-03-17,,,,,,,,Report,,,
Duplicate Title,2021-03-17,,,,,,,,Report,,,, Duplicate Title,2021-03-17,,,,,,,,Report,,,
Mojibake,2021-03-18,,,,Publicaçao CIAT,,,,Report,,,, Mojibake,2021-03-18,,,,Publicaçao CIAT,,,,Report,,,
"DOI in citation, but missing cg.identifier.doi",2021-10-06,,,,,,,,,"Orth, A. 2021. DOI in citation, but missing cg.identifier.doi. doi: 10.1186/1743-422X-9-218",,, "DOI in citation, but missing cg.identifier.doi",2021-10-06,,,,,,,,,"Orth, A. 2021. DOI in citation, but missing cg.identifier.doi. doi: 10.1186/1743-422X-9-218",,
Title missing from citation,2021-12-05,,,,,,,,,"Orth, A. 2021. Title missing f rom citation.",,, Title missing from citation,2021-12-05,,,,,,,,,"Orth, A. 2021. Title missing f rom citation.",,
Country missing region,2021-12-08,,,,,Kenya,,,,,,, Country missing region,2021-12-08,,,,,Kenya,,,,,,
Subregion field shouldnt trigger region checks,2022-12-07,,,,,Kenya,,,,,,Eastern Africa,Baringo
1 dc.title dcterms.issued dc.identifier.issn dc.identifier.isbn dcterms.language dcterms.subject cg.coverage.country filename dcterms.license dcterms.type dcterms.bibliographicCitation cg.identifier.doi cg.coverage.region cg.coverage.subregion
2 Leading space 2019-07-29
3 Trailing space 2019-07-29
4 Excessive space 2019-07-29
5 Miscellaenous ||whitespace | issues 2019-07-29
6 Duplicate||Duplicate 2019-07-29
7 Invalid ISSN 2019-07-29 2321-2302
8 Invalid ISBN 2019-07-29 978-0-306-40615-6
9 Multiple valid ISSNs 2019-07-29 0378-5955||0024-9319
10 Multiple valid ISBNs 2019-07-29 99921-58-10-7||978-0-306-40615-7
11 Invalid date 2019-07-260
12 Multiple dates 2019-07-26||2019-01-10
13 Invalid multi-value separator 2019-07-29 0378-5955|0024-9319
14 Unnecessary Unicode​ 2019-07-29
15 Suspicious character||foreˆt 2019-07-29
16 Invalid ISO 639-1 (alpha 2) language 2019-07-29 jp
17 Invalid ISO 639-3 (alpha 3) language 2019-07-29 chi
18 Invalid language 2019-07-29 Span
19 Invalid AGROVOC subject 2019-07-29 LIVESTOCK||FOREST
20 Newline (LF) 2019-07-30 TANZA NIA
21 Missing date
22 Invalid country 2019-08-01 KENYAA
23 Uncommon filename extension 2019-08-10 file.pdf.lck
24 Unneccesary unicode (U+002D + U+00AD) 2019-08-10 978-­92-­9043-­823-­6
25 Missing space,after comma 2019-08-27
26 Incorrect ISO 639-1 language 2019-09-26 es
27 Incorrect ISO 639-3 language 2019-09-26 spa
28 Composéd Unicode 2020-01-14
29 Decomposéd Unicode 2020-01-14
30 Unnecessary multi-value separator 2021-01-03 0378-5955||
31 Invalid SPDX license identifier 2021-03-11 CC-BY
32 Duplicate Title 2021-03-17 Report
33 Duplicate Title 2021-03-17 Report
34 Mojibake 2021-03-18 Publicaçao CIAT Report
35 DOI in citation, but missing cg.identifier.doi 2021-10-06 Orth, A. 2021. DOI in citation, but missing cg.identifier.doi. doi: 10.1186/1743-422X-9-218
36 Title missing from citation 2021-12-05 Orth, A. 2021. Title missing f rom citation.
37 Country missing region 2021-12-08 Kenya
38 Baringo

829
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,28 +12,25 @@ csv-metadata-quality = 'csv_metadata_quality.__main__:main'
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.8" python = "^3.8"
pandas = "^1.5.1" pandas = "^1.4.0"
python-stdnum = "^1.17" python-stdnum = "^1.13"
requests = "^2.28.1" requests = "^2.28.1"
requests-cache = "^0.9.7" requests-cache = "^0.9.6"
pycountry = "^22.3.5"
langid = "^1.1.6" langid = "^1.1.6"
colorama = "^0.4.5" colorama = "^0.4.5"
spdx-license-list = "^0.5.2" spdx-license-list = "^0.5.2"
ftfy = "^6.1.1" ftfy = "^6.1.1"
country-converter = {git = "https://github.com/alanorth/country_converter.git", rev = "myanmar-region"} country-converter = "^0.7.7"
pycountry = {git = "https://github.com/alanorth/pycountry", rev = "iso-codes-4.12.0"}
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pytest = "^7.2.0" pytest = "^7.1.3"
flake8 = "^5.0.4" flake8 = "^5.0.4"
pytest-clarity = "^1.0.1" pytest-clarity = "^1.0.1"
black = "^22.10.0" black = "^22.8.0"
isort = "^5.10.1" isort = "^5.10.1"
csvkit = "^1.0.7" csvkit = "^1.0.7"
[tool.poetry.group.dev.dependencies]
ipython = "^8.7.0"
[build-system] [build-system]
requires = ["poetry>=0.12"] requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api" build-backend = "poetry.masonry.api"

View File

@@ -3,80 +3,66 @@ agate-excel==0.2.5 ; python_version >= "3.8" and python_version < "4.0"
agate-sql==0.5.8 ; python_version >= "3.8" and python_version < "4.0" agate-sql==0.5.8 ; python_version >= "3.8" and python_version < "4.0"
agate==1.6.3 ; python_version >= "3.8" and python_version < "4.0" agate==1.6.3 ; python_version >= "3.8" and python_version < "4.0"
appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0" appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0"
appnope==0.1.3 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "darwin"
asttokens==2.1.0 ; python_version >= "3.8" and python_version < "4.0"
attrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0" attrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0"
babel==2.11.0 ; python_version >= "3.8" and python_version < "4.0" babel==2.10.3 ; python_version >= "3.8" and python_version < "4.0"
backcall==0.2.0 ; python_version >= "3.8" and python_version < "4.0" black==22.8.0 ; python_version >= "3.8" and python_version < "4.0"
black==22.10.0 ; python_version >= "3.8" and python_version < "4.0" cattrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0"
cattrs==22.2.0 ; python_version >= "3.8" and python_version < "4.0" certifi==2022.6.15 ; python_version >= "3.8" and python_version < "4"
certifi==2022.9.24 ; python_version >= "3.8" and python_version < "4"
charset-normalizer==2.1.1 ; python_version >= "3.8" and python_version < "4" charset-normalizer==2.1.1 ; python_version >= "3.8" and python_version < "4"
click==8.1.3 ; python_version >= "3.8" and python_version < "4.0" click==8.1.3 ; python_version >= "3.8" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" colorama==0.4.5 ; python_version >= "3.8" and python_version < "4.0"
commonmark==0.9.1 ; python_version >= "3.8" and python_version < "4.0" commonmark==0.9.1 ; python_version >= "3.8" and python_version < "4.0"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.8" and python_version < "4.0" country-converter==0.7.7 ; python_version >= "3.8" and python_version < "4.0"
csvkit==1.0.7 ; python_version >= "3.8" and python_version < "4.0" csvkit==1.0.7 ; python_version >= "3.8" and python_version < "4.0"
dbfread==2.0.7 ; python_version >= "3.8" and python_version < "4.0" dbfread==2.0.7 ; python_version >= "3.8" and python_version < "4.0"
decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0"
et-xmlfile==1.1.0 ; python_version >= "3.8" and python_version < "4.0" et-xmlfile==1.1.0 ; python_version >= "3.8" and python_version < "4.0"
exceptiongroup==1.0.4 ; python_version >= "3.8" and python_version < "3.11" exceptiongroup==1.0.0rc9 ; python_version >= "3.8" and python_version <= "3.10"
executing==1.2.0 ; python_version >= "3.8" and python_version < "4.0"
flake8==5.0.4 ; python_version >= "3.8" and python_version < "4.0" flake8==5.0.4 ; python_version >= "3.8" and python_version < "4.0"
ftfy==6.1.1 ; python_version >= "3.8" and python_version < "4" ftfy==6.1.1 ; python_version >= "3.8" and python_version < "4"
future==0.18.2 ; python_version >= "3.8" and python_version < "4.0" future==0.18.2 ; python_version >= "3.8" and python_version < "4.0"
greenlet==2.0.1 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" greenlet==1.1.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0"
idna==3.4 ; python_version >= "3.8" and python_version < "4" idna==3.3 ; python_version >= "3.8" and python_version < "4"
iniconfig==1.1.1 ; python_version >= "3.8" and python_version < "4.0" iniconfig==1.1.1 ; python_version >= "3.8" and python_version < "4.0"
ipython==8.7.0 ; python_version >= "3.8" and python_version < "4.0"
isodate==0.6.1 ; python_version >= "3.8" and python_version < "4.0" isodate==0.6.1 ; python_version >= "3.8" and python_version < "4.0"
isort==5.10.1 ; python_version >= "3.8" and python_version < "4.0" isort==5.10.1 ; python_version >= "3.8" and python_version < "4.0"
jedi==0.18.2 ; python_version >= "3.8" and python_version < "4.0"
langid==1.1.6 ; python_version >= "3.8" and python_version < "4.0" langid==1.1.6 ; python_version >= "3.8" and python_version < "4.0"
leather==0.3.4 ; python_version >= "3.8" and python_version < "4.0" leather==0.3.4 ; python_version >= "3.8" and python_version < "4.0"
matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "4.0"
mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0" mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0"
mypy-extensions==0.4.3 ; python_version >= "3.8" and python_version < "4.0" mypy-extensions==0.4.3 ; python_version >= "3.8" and python_version < "4.0"
numpy==1.23.5 ; python_version < "4.0" and python_version >= "3.8" numpy==1.23.2 ; python_version < "4.0" and python_version >= "3.8"
olefile==0.46 ; python_version >= "3.8" and python_version < "4.0" olefile==0.46 ; python_version >= "3.8" and python_version < "4.0"
openpyxl==3.0.10 ; python_version >= "3.8" and python_version < "4.0" openpyxl==3.0.10 ; python_version >= "3.8" and python_version < "4.0"
packaging==21.3 ; python_version >= "3.8" and python_version < "4.0" packaging==21.3 ; python_version >= "3.8" and python_version < "4.0"
pandas==1.5.2 ; python_version >= "3.8" and python_version < "4.0" pandas==1.4.4 ; python_version >= "3.8" and python_version < "4.0"
parsedatetime==2.4 ; python_version >= "3.8" and python_version < "4.0" parsedatetime==2.4 ; python_version >= "3.8" and python_version < "4.0"
parso==0.8.3 ; python_version >= "3.8" and python_version < "4.0" pathspec==0.10.1 ; python_version >= "3.8" and python_version < "4.0"
pathspec==0.10.2 ; python_version >= "3.8" and python_version < "4.0" platformdirs==2.5.2 ; python_version >= "3.8" and python_version < "4.0"
pexpect==4.8.0 ; python_version >= "3.8" and python_version < "4.0" and sys_platform != "win32"
pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "4.0"
platformdirs==2.5.4 ; python_version >= "3.8" and python_version < "4.0"
pluggy==1.0.0 ; python_version >= "3.8" and python_version < "4.0" pluggy==1.0.0 ; python_version >= "3.8" and python_version < "4.0"
pprintpp==0.4.0 ; python_version >= "3.8" and python_version < "4.0" pprintpp==0.4.0 ; python_version >= "3.8" and python_version < "4.0"
prompt-toolkit==3.0.33 ; python_version >= "3.8" and python_version < "4.0" py==1.11.0 ; python_version >= "3.8" and python_version < "4.0"
ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "4.0" and sys_platform != "win32"
pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "4.0"
pycodestyle==2.9.1 ; python_version >= "3.8" and python_version < "4.0" pycodestyle==2.9.1 ; python_version >= "3.8" and python_version < "4.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.8" and python_version < "4.0" pycountry==22.3.5 ; python_version >= "3.8" and python_version < "4"
pyflakes==2.5.0 ; python_version >= "3.8" and python_version < "4.0" pyflakes==2.5.0 ; python_version >= "3.8" and python_version < "4.0"
pygments==2.13.0 ; python_version >= "3.8" and python_version < "4.0" pygments==2.13.0 ; python_version >= "3.8" and python_version < "4.0"
pyparsing==3.0.9 ; python_version >= "3.8" and python_version < "4.0" pyparsing==3.0.9 ; python_version >= "3.8" and python_version < "4.0"
pytest-clarity==1.0.1 ; python_version >= "3.8" and python_version < "4.0" pytest-clarity==1.0.1 ; python_version >= "3.8" and python_version < "4.0"
pytest==7.2.0 ; python_version >= "3.8" and python_version < "4.0" pytest==7.1.3 ; python_version >= "3.8" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0"
python-slugify==7.0.0 ; python_version >= "3.8" and python_version < "4.0" python-slugify==6.1.2 ; python_version >= "3.8" and python_version < "4.0"
python-stdnum==1.18 ; python_version >= "3.8" and python_version < "4.0" python-stdnum==1.17 ; python_version >= "3.8" and python_version < "4.0"
pytimeparse==1.1.8 ; python_version >= "3.8" and python_version < "4.0" pytimeparse==1.1.8 ; python_version >= "3.8" and python_version < "4.0"
pytz==2022.6 ; python_version >= "3.8" and python_version < "4.0" pytz==2022.2.1 ; python_version >= "3.8" and python_version < "4.0"
requests-cache==0.9.7 ; python_version >= "3.8" and python_version < "4.0" requests-cache==0.9.6 ; python_version >= "3.8" and python_version < "4.0"
requests==2.28.1 ; python_version >= "3.8" and python_version < "4" requests==2.28.1 ; python_version >= "3.8" and python_version < "4"
rich==12.6.0 ; python_version >= "3.8" and python_version < "4.0" rich==12.5.1 ; python_version >= "3.8" and python_version < "4.0"
setuptools==65.3.0 ; python_version >= "3.8" and python_version < "4"
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
spdx-license-list==0.5.2 ; python_version >= "3.8" and python_version < "4.0" spdx-license-list==0.5.2 ; python_version >= "3.8" and python_version < "4.0"
sqlalchemy==1.4.44 ; python_version >= "3.8" and python_version < "4.0" sqlalchemy==1.4.40 ; python_version >= "3.8" and python_version < "4.0"
stack-data==0.6.2 ; python_version >= "3.8" and python_version < "4.0"
text-unidecode==1.3 ; python_version >= "3.8" and python_version < "4.0" text-unidecode==1.3 ; python_version >= "3.8" and python_version < "4.0"
tomli==2.0.1 ; python_version >= "3.8" and python_full_version < "3.11.0a7" tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0"
traitlets==5.5.0 ; python_version >= "3.8" and python_version < "4.0" typing-extensions==4.3.0 ; python_version >= "3.8" and python_version < "3.10"
typing-extensions==4.4.0 ; python_version >= "3.8" and python_version < "3.10"
url-normalize==1.4.3 ; python_version >= "3.8" and python_version < "4.0" url-normalize==1.4.3 ; python_version >= "3.8" and python_version < "4.0"
urllib3==1.26.13 ; python_version >= "3.8" and python_version < "4" urllib3==1.26.12 ; python_version >= "3.8" and python_version < "4"
wcwidth==0.2.5 ; python_version >= "3.8" and python_version < "4" wcwidth==0.2.5 ; python_version >= "3.8" and python_version < "4"
xlrd==2.0.1 ; python_version >= "3.8" and python_version < "4.0" xlrd==2.0.1 ; python_version >= "3.8" and python_version < "4.0"

View File

@@ -1,24 +1,25 @@
appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0" appdirs==1.4.4 ; python_version >= "3.8" and python_version < "4.0"
attrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0" attrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0"
cattrs==22.2.0 ; python_version >= "3.8" and python_version < "4.0" cattrs==22.1.0 ; python_version >= "3.8" and python_version < "4.0"
certifi==2022.9.24 ; python_version >= "3.8" and python_version < "4" certifi==2022.6.15 ; python_version >= "3.8" and python_version < "4"
charset-normalizer==2.1.1 ; python_version >= "3.8" and python_version < "4" charset-normalizer==2.1.1 ; python_version >= "3.8" and python_version < "4"
colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" colorama==0.4.5 ; python_version >= "3.8" and python_version < "4.0"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.8" and python_version < "4.0" country-converter==0.7.7 ; python_version >= "3.8" and python_version < "4.0"
exceptiongroup==1.0.4 ; python_version >= "3.8" and python_version < "3.11" exceptiongroup==1.0.0rc9 ; python_version >= "3.8" and python_version <= "3.10"
ftfy==6.1.1 ; python_version >= "3.8" and python_version < "4" ftfy==6.1.1 ; python_version >= "3.8" and python_version < "4"
idna==3.4 ; python_version >= "3.8" and python_version < "4" idna==3.3 ; python_version >= "3.8" and python_version < "4"
langid==1.1.6 ; python_version >= "3.8" and python_version < "4.0" langid==1.1.6 ; python_version >= "3.8" and python_version < "4.0"
numpy==1.23.5 ; python_version < "4.0" and python_version >= "3.8" numpy==1.23.2 ; python_version < "4.0" and python_version >= "3.8"
pandas==1.5.2 ; python_version >= "3.8" and python_version < "4.0" pandas==1.4.4 ; python_version >= "3.8" and python_version < "4.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.8" and python_version < "4.0" pycountry==22.3.5 ; python_version >= "3.8" and python_version < "4"
python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0"
python-stdnum==1.18 ; python_version >= "3.8" and python_version < "4.0" python-stdnum==1.17 ; python_version >= "3.8" and python_version < "4.0"
pytz==2022.6 ; python_version >= "3.8" and python_version < "4.0" pytz==2022.2.1 ; python_version >= "3.8" and python_version < "4.0"
requests-cache==0.9.7 ; python_version >= "3.8" and python_version < "4.0" requests-cache==0.9.6 ; python_version >= "3.8" and python_version < "4.0"
requests==2.28.1 ; python_version >= "3.8" and python_version < "4" requests==2.28.1 ; python_version >= "3.8" and python_version < "4"
setuptools==65.3.0 ; python_version >= "3.8" and python_version < "4"
six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" six==1.16.0 ; python_version >= "3.8" and python_version < "4.0"
spdx-license-list==0.5.2 ; python_version >= "3.8" and python_version < "4.0" spdx-license-list==0.5.2 ; python_version >= "3.8" and python_version < "4.0"
url-normalize==1.4.3 ; python_version >= "3.8" and python_version < "4.0" url-normalize==1.4.3 ; python_version >= "3.8" and python_version < "4.0"
urllib3==1.26.13 ; python_version >= "3.8" and python_version < "4" urllib3==1.26.12 ; python_version >= "3.8" and python_version < "4"
wcwidth==0.2.5 ; python_version >= "3.8" and python_version < "4" wcwidth==0.2.5 ; python_version >= "3.8" and python_version < "4"

View File

@@ -510,5 +510,5 @@ def test_country_not_matching_region(capsys):
captured = capsys.readouterr() captured = capsys.readouterr()
assert ( assert (
captured.out captured.out
== f"{Fore.YELLOW}Missing region ({country} → {missing_region}): {Fore.RESET}{title}\n" == f"{Fore.YELLOW}Missing region ({missing_region}): {Fore.RESET}{title}\n"
) )