Compare commits

..

No commits in common. "56e319b5d0a50213a6171097a328d1b91ea73026" and "1dbc58eaa6dfc089bc9eac4bfe8d67fdb0ecc6f3" have entirely different histories.

11 changed files with 668 additions and 748 deletions

1
Procfile Normal file
View File

@ -0,0 +1 @@
web: gunicorn csv_metadata_quality_web.main --log-file -

View File

@ -9,8 +9,10 @@
<img width="600" alt="Screenshot of csv-metadata-quality-web on Heroku" src="screenshot.png"> <img width="600" alt="Screenshot of csv-metadata-quality-web on Heroku" src="screenshot.png">
</p> </p>
You can try [the hosted version](https://fierce-ocean-30836.herokuapp.com) or host it yourself (see below).
## Usage ## Usage
Create a Python 3.9+ virtual environment and install the dependencies: Create a Python 3.8+ virtual environment and install the dependencies:
$ python3 -m venv venv $ python3 -m venv venv
$ source venv/bin/activate $ source venv/bin/activate
@ -22,6 +24,11 @@ Create a Python 3.9+ virtual environment and install the dependencies:
And then visit http://localhost:8000/ in your browser. And then visit http://localhost:8000/ in your browser.
## Deploying to Heroku
Install the heroku command line tools, add a heroku git remote, and push:
$ git push heroku
## License ## License
This work is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html). This work is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html).

File diff suppressed because one or more lines are too long

105
package-lock.json generated
View File

@ -9,15 +9,15 @@
"version": "0.0.1", "version": "0.0.1",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"devDependencies": { "devDependencies": {
"bootstrap": "^5.2.3", "bootstrap": "^5.0.1",
"clean-css-cli": "^5.6.1", "clean-css-cli": "^5.3.0",
"sass": "^1.55.0" "sass": "^1.32.13"
} }
}, },
"node_modules/@popperjs/core": { "node_modules/@popperjs/core": {
"version": "2.11.6", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
"dev": true, "dev": true,
"peer": true, "peer": true,
"funding": { "funding": {
@ -54,22 +54,16 @@
} }
}, },
"node_modules/bootstrap": { "node_modules/bootstrap": {
"version": "5.2.3", "version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true, "dev": true,
"funding": [ "funding": {
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/bootstrap" "url": "https://opencollective.com/bootstrap"
} },
],
"peerDependencies": { "peerDependencies": {
"@popperjs/core": "^2.11.6" "@popperjs/core": "^2.10.2"
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
@ -116,9 +110,9 @@
} }
}, },
"node_modules/clean-css": { "node_modules/clean-css": {
"version": "5.3.2", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz",
"integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"source-map": "~0.6.0" "source-map": "~0.6.0"
@ -128,13 +122,13 @@
} }
}, },
"node_modules/clean-css-cli": { "node_modules/clean-css-cli": {
"version": "5.6.2", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.2.tgz", "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.5.0.tgz",
"integrity": "sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==", "integrity": "sha512-Vr9t8o59YaPcRw/4hyJjEh4zU/BlOtlJJ8465El6QMYWbkf5nN1mhAljX6FIb0bfpkGlYNFKPCyTz7oFCHOblQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"clean-css": "^5.3.2", "clean-css": "^5.2.2",
"commander": "7.x", "commander": "7.x",
"glob": "^7.1.6" "glob": "^7.1.6"
}, },
@ -352,20 +346,19 @@
} }
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.58.3", "version": "1.44.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.44.0.tgz",
"integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==", "integrity": "sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0", "immutable": "^4.0.0"
"source-map-js": ">=0.6.2 <2.0.0"
}, },
"bin": { "bin": {
"sass": "sass.js" "sass": "sass.js"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=8.9.0"
} }
}, },
"node_modules/source-map": { "node_modules/source-map": {
@ -377,15 +370,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/to-regex-range": { "node_modules/to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -407,9 +391,9 @@
}, },
"dependencies": { "dependencies": {
"@popperjs/core": { "@popperjs/core": {
"version": "2.11.6", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
"dev": true, "dev": true,
"peer": true "peer": true
}, },
@ -436,9 +420,9 @@
"dev": true "dev": true
}, },
"bootstrap": { "bootstrap": {
"version": "5.2.3", "version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
@ -478,22 +462,22 @@
} }
}, },
"clean-css": { "clean-css": {
"version": "5.3.2", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz",
"integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==",
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "~0.6.0" "source-map": "~0.6.0"
} }
}, },
"clean-css-cli": { "clean-css-cli": {
"version": "5.6.2", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.6.2.tgz", "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.5.0.tgz",
"integrity": "sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==", "integrity": "sha512-Vr9t8o59YaPcRw/4hyJjEh4zU/BlOtlJJ8465El6QMYWbkf5nN1mhAljX6FIb0bfpkGlYNFKPCyTz7oFCHOblQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"clean-css": "^5.3.2", "clean-css": "^5.2.2",
"commander": "7.x", "commander": "7.x",
"glob": "^7.1.6" "glob": "^7.1.6"
} }
@ -653,14 +637,13 @@
} }
}, },
"sass": { "sass": {
"version": "1.58.3", "version": "1.44.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.58.3.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.44.0.tgz",
"integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==", "integrity": "sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0", "immutable": "^4.0.0"
"source-map-js": ">=0.6.2 <2.0.0"
} }
}, },
"source-map": { "source-map": {
@ -669,12 +652,6 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
}, },
"source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true
},
"to-regex-range": { "to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",

View File

@ -5,9 +5,9 @@
"author": "Alan Orth", "author": "Alan Orth",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"devDependencies": { "devDependencies": {
"bootstrap": "^5.2.3", "bootstrap": "^5.1.1",
"clean-css-cli": "^5.6.1", "clean-css-cli": "^5.4.2",
"sass": "^1.55.0" "sass": "^1.44.0"
}, },
"scripts": { "scripts": {
"build:css": "sass --style expanded source/scss/style.scss csv_metadata_quality_web/static/css/style.css.tmp && cleancss -O1 --format breakWith=lf --with-rebase csv_metadata_quality_web/static/css/style.css.tmp -o csv_metadata_quality_web/static/css/style.min.css", "build:css": "sass --style expanded source/scss/style.scss csv_metadata_quality_web/static/css/style.css.tmp && cleancss -O1 --format breakWith=lf --with-rebase csv_metadata_quality_web/static/css/style.css.tmp -o csv_metadata_quality_web/static/css/style.min.css",

1092
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
[tool.poetry] [tool.poetry]
name = "csv-metadata-quality-web" name = "csv-metadata-quality-web"
version = "0.0.4" version = "0.0.3"
description = "Simple web interface for the DSpace CSV Metadata Quality tool." description = "Simple web interface for the DSpace CSV Metadata Quality tool."
authors = ["Alan Orth <alan.orth@gmail.com>"] authors = ["Alan Orth <alan.orth@gmail.com>"]
license = "AGPL-3.0-only" license = "AGPL-3.0-only"
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.9" python = "^3.8"
csv-metadata-quality = {git = "https://github.com/ilri/csv-metadata-quality.git", tag = "v0.6.1"} csv-metadata-quality = {git = "https://github.com/ilri/csv-metadata-quality.git", tag = "v0.5.0"}
Flask = "^2.2.3" Flask = "^2.0.2"
ansi2html = "^1.8.0" ansi2html = "^1.6.0"
gunicorn = "^20.1.0" gunicorn = "^20.0.4"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
black = "^23.1.0" black = "^22.1.0"
flake8 = "^6.0.0" flake8 = "^4.0.1"
isort = "^5.12.0" isort = "^5.7.0"
[build-system] [build-system]
requires = ["poetry-core>=1.0.0"] requires = ["poetry-core>=1.0.0"]

View File

@ -1,47 +1,45 @@
ansi2html==1.8.0 ; python_version >= "3.9" and python_version < "4.0" ansi2html==1.7.0; python_version >= "3.6"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4.0" black==22.6.0; python_full_version >= "3.6.2"
attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" certifi==2022.6.15; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
black==23.1.0 ; python_version >= "3.9" and python_version < "4.0" charset-normalizer==2.1.0; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
cattrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" click==8.1.3; python_version >= "3.7" and python_full_version >= "3.6.2"
certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4" colorama==0.4.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and platform_system == "Windows" and python_version >= "3.7"
charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "4" country-converter==0.7.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
click==8.1.3 ; python_version >= "3.9" and python_version < "4.0" csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" flake8==4.0.1; python_version >= "3.6"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.9" and python_version < "4.0" flask==2.1.2; python_version >= "3.7"
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.6.1 ; python_version >= "3.9" and python_version < "4.0" ftfy==5.9; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5"
exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11" greenlet==1.1.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3"
flake8==6.0.0 ; python_version >= "3.9" and python_version < "4.0" gunicorn==20.1.0; python_version >= "3.5"
flask==2.2.3 ; python_version >= "3.9" and python_version < "4.0" idna==3.3; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
ftfy==6.1.1 ; python_version >= "3.9" and python_version < "4" importlib-metadata==4.12.0; python_version < "3.10" and python_version >= "3.7"
gunicorn==20.1.0 ; python_version >= "3.9" and python_version < "4.0" isort==5.10.1; python_full_version >= "3.6.1" and python_version < "4.0"
idna==3.4 ; python_version >= "3.9" and python_version < "4" itsdangerous==2.1.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.7"
importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10" jinja2==3.1.2; python_version >= "3.7"
isort==5.12.0 ; python_version >= "3.9" and python_version < "4.0" langid==1.1.6; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0" markupsafe==2.1.1; python_version >= "3.7"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0" mccabe==0.6.1; python_version >= "3.6"
langid==1.1.6 ; python_version >= "3.9" and python_version < "4.0" mypy-extensions==0.4.3; python_full_version >= "3.6.2"
markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0" numpy==1.23.0
mccabe==0.7.0 ; python_version >= "3.9" and python_version < "4.0" pandas==1.4.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4.0" pathspec==0.9.0; python_full_version >= "3.6.2"
numpy==1.24.2 ; python_version < "4.0" and python_version >= "3.9" platformdirs==2.5.2; python_version >= "3.7" and python_full_version >= "3.6.2"
packaging==23.0 ; python_version >= "3.9" and python_version < "4.0" pycodestyle==2.8.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pandas==1.5.3 ; python_version >= "3.9" and python_version < "4.0" pycountry==19.8.18; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pathspec==0.11.0 ; python_version >= "3.9" and python_version < "4.0" pyflakes==2.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
platformdirs==3.0.0 ; python_version >= "3.9" and python_version < "4.0" python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
pycodestyle==2.10.0 ; python_version >= "3.9" and python_version < "4.0" python-stdnum==1.17; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.9" and python_version < "4.0" pytz==2022.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
pyflakes==3.0.1 ; python_version >= "3.9" and python_version < "4.0" requests-cache==0.6.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0" requests==2.28.1; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
python-stdnum==1.18 ; python_version >= "3.9" and python_version < "4.0" six==1.16.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
pytz==2022.7.1 ; python_version >= "3.9" and python_version < "4.0" spdx-license-list==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests-cache==0.9.8 ; python_version >= "3.9" and python_version < "4.0" sqlalchemy==1.4.22; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests==2.28.2 ; python_version >= "3.9" and python_version < "4" tomli==2.0.1; python_full_version < "3.11.0a7" and python_full_version >= "3.6.2" and python_version >= "3.7"
setuptools==67.4.0 ; python_version >= "3.9" and python_version < "4.0" typing-extensions==4.3.0; python_version < "3.10" and python_full_version >= "3.6.2" and python_version >= "3.7"
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0" url-normalize==1.4.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11" urllib3==1.26.9; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.7" and python_full_version < "4.0.0"
typing-extensions==4.5.0 ; python_version >= "3.9" and python_version < "3.10" wcwidth==0.2.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5"
url-normalize==1.4.3 ; python_version >= "3.9" and python_version < "4.0" werkzeug==2.1.2; python_version >= "3.7"
urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4" xlrd==1.2.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "4" zipp==3.8.0; python_version < "3.10" and python_version >= "3.7"
werkzeug==2.2.3 ; python_version >= "3.9" and python_version < "4.0"
zipp==3.14.0 ; python_version >= "3.9" and python_version < "3.10"

View File

@ -1,35 +1,34 @@
ansi2html==1.8.0 ; python_version >= "3.9" and python_version < "4.0" ansi2html==1.7.0; python_version >= "3.6"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4.0" certifi==2022.6.15; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" charset-normalizer==2.1.0; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
cattrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" click==8.1.3; python_version >= "3.7"
certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4" colorama==0.4.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.5.0")
charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "4" country-converter==0.7.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
click==8.1.3 ; python_version >= "3.9" and python_version < "4.0" csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.5.0 ; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" flask==2.1.2; python_version >= "3.7"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.9" and python_version < "4.0" ftfy==5.9; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5"
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.6.1 ; python_version >= "3.9" and python_version < "4.0" greenlet==1.1.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3"
exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11" gunicorn==20.1.0; python_version >= "3.5"
flask==2.2.3 ; python_version >= "3.9" and python_version < "4.0" idna==3.3; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
ftfy==6.1.1 ; python_version >= "3.9" and python_version < "4" importlib-metadata==4.12.0; python_version < "3.10" and python_version >= "3.7"
gunicorn==20.1.0 ; python_version >= "3.9" and python_version < "4.0" itsdangerous==2.1.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.7"
idna==3.4 ; python_version >= "3.9" and python_version < "4" jinja2==3.1.2; python_version >= "3.7"
importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10" langid==1.1.6; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0" markupsafe==2.1.1; python_version >= "3.7"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0" numpy==1.23.0
langid==1.1.6 ; python_version >= "3.9" and python_version < "4.0" pandas==1.4.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0" pycountry==19.8.18; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
numpy==1.24.2 ; python_version < "4.0" and python_version >= "3.9" python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
pandas==1.5.3 ; python_version >= "3.9" and python_version < "4.0" python-stdnum==1.17; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.9" and python_version < "4.0" pytz==2022.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0" requests-cache==0.6.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
python-stdnum==1.18 ; python_version >= "3.9" and python_version < "4.0" requests==2.28.1; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pytz==2022.7.1 ; python_version >= "3.9" and python_version < "4.0" six==1.16.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
requests-cache==0.9.8 ; python_version >= "3.9" and python_version < "4.0" spdx-license-list==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests==2.28.2 ; python_version >= "3.9" and python_version < "4" sqlalchemy==1.4.22; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
setuptools==67.4.0 ; python_version >= "3.9" and python_version < "4.0" url-normalize==1.4.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0" urllib3==1.26.9; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.7" and python_full_version < "4.0.0"
url-normalize==1.4.3 ; python_version >= "3.9" and python_version < "4.0" wcwidth==0.2.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5"
urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4" werkzeug==2.1.2; python_version >= "3.7"
wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "4" xlrd==1.2.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
werkzeug==2.2.3 ; python_version >= "3.9" and python_version < "4.0" zipp==3.8.0; python_version < "3.10" and python_version >= "3.7"
zipp==3.14.0 ; python_version >= "3.9" and python_version < "3.10"

1
runtime.txt Normal file
View File

@ -0,0 +1 @@
python-3.10.5

View File

@ -1,12 +1,14 @@
@import "../../node_modules/bootstrap/scss/mixins/banner"; /*!
@include bsBanner(""); * Bootstrap v5.1.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
// scss-docs-start import-stack // scss-docs-start import-stack
// Configuration // Configuration
@import "../../node_modules/bootstrap/scss/functions"; @import "../../node_modules/bootstrap/scss/functions";
@import "../../node_modules/bootstrap/scss/variables"; @import "../../node_modules/bootstrap/scss/variables";
@import "../../node_modules/bootstrap/scss/maps";
@import "../../node_modules/bootstrap/scss/mixins"; @import "../../node_modules/bootstrap/scss/mixins";
@import "../../node_modules/bootstrap/scss/utilities"; @import "../../node_modules/bootstrap/scss/utilities";
@ -41,7 +43,6 @@
//@import "../../node_modules/bootstrap/scss/carousel"; //@import "../../node_modules/bootstrap/scss/carousel";
//@import "../../node_modules/bootstrap/scss/spinners"; //@import "../../node_modules/bootstrap/scss/spinners";
@import "../../node_modules/bootstrap/scss/offcanvas"; @import "../../node_modules/bootstrap/scss/offcanvas";
//@import "../../node_modules/bootstrap/scss/placeholders";
// Helpers // Helpers
@import "../../node_modules/bootstrap/scss/helpers"; @import "../../node_modules/bootstrap/scss/helpers";