Compare commits

..

71 Commits

Author SHA1 Message Date
c0d0ec3502 pyproject.toml: bump version to v0.0.4 2023-02-23 14:48:54 +03:00
338b30396e Update requirements
Generated with poetry export:

    $ poetry export --without-hashes -f requirements.txt > requirements.txt
    $ poetry export --without-hashes --with dev -f requirements.txt > requirements-dev.txt
2023-02-23 14:43:25 +03:00
e0667821ea poetry.lock: run poetry update 2023-02-23 14:42:40 +03:00
541ad7ed6b README.md: Python 3.9 2023-02-23 14:41:57 +03:00
5ed93e9f30 pyproject.toml: update dependencies
Bump to latest csv-metadata-quality version and other dev deps to
keep them in line.
2023-02-23 14:40:09 +03:00
7a183010f1 pyproject.toml: bump python to 3.9
Same as the main project csv-metadata-quality.
2023-02-23 14:28:09 +03:00
1dbc58eaa6 runtime.txt: use Python 3.10.5
All checks were successful
continuous-integration/drone/push Build is passing
See: https://devcenter.heroku.com/articles/python-support
2022-07-02 15:46:21 +03:00
392b10fc9f .drone.yml: build on Python 3.10 too
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-02 11:44:48 +03:00
27a3917c8b Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2022-07-02 11:43:39 +03:00
c459526042 poetry.lock: run poetry update 2022-07-02 11:43:05 +03:00
974ae6c847 .github/workflows/python-app.yml: use Python 3.10
All checks were successful
continuous-integration/drone/push Build is passing
That's what I use for testing locally. Note that we need to quote
the version here because otherwise GitHub Actions will interpret it
as 3.1 due to how YAML works.
2022-01-30 13:46:17 +03:00
50f2832dfb .drone.yml: don't test on Python 3.7
Pandas 1.4.0 now requires Python 3.8 minimum.
2022-01-30 13:45:27 +03:00
6296fbc1af runtime.txt: use Python 3.10.2 on Heroku 2022-01-30 13:44:32 +03:00
1beaf436b6 poetry.lock: run poetry update 2022-01-30 13:44:09 +03:00
38a0afa048 README.md: update Python version requirement
Pandas 1.4.0 requires Python 3.8+.
2022-01-30 13:43:41 +03:00
f826d25ea1 Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2022-01-30 13:43:18 +03:00
19d78eb55d pyproject.toml: update dependencies
black is no longer beta, remove ipython because I can use the one
installed system wide and it doesn't like being in a virtual env
anyways. flake8 is a new major version.
2022-01-30 13:42:05 +03:00
070d19af82 pyproject.toml: update minimum Python version
The csv-metadata-quality project will currently pull in Pandas 1.4.0,
which has a minimum Python requirement of 3.8.
2022-01-30 13:36:55 +03:00
7e83c3b0a2 Update screenshot.png
New version taken in Epiphany with shadow added.
2022-01-30 13:35:51 +03:00
d2cf6ca7df Update requirements for deploy
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-08 20:53:05 +02:00
3ddbc1bb53 runtime.txt: use Python 3.9.9 2021-12-08 20:47:15 +02:00
491198b15c poetry.lock: run poetry update 2021-12-08 20:39:54 +02:00
92e95550a3 Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-12-08 20:39:31 +02:00
2c517717ed pyproject.toml: use Flask 2.0 2021-12-08 20:38:14 +02:00
b07cd71caf README.md: move screenshot lower 2021-12-08 20:35:27 +02:00
95d4d7aace README.md: add Heroku deploy instructions
This is for me!
2021-12-08 20:28:36 +02:00
a8446ae95b pyproject: minor version bump 2021-12-08 20:23:10 +02:00
117ee6b698 README.md: add usage instructions 2021-12-08 20:19:33 +02:00
ac2929e3e8 README.md: update intro
Make the layout of badges nicer and highlight the screenshot first.
2021-12-08 20:09:58 +02:00
1aa8285d56 Update screenshot.png 2021-12-08 20:09:34 +02:00
3a058fb50f Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-12-08 20:01:08 +02:00
5ce544125f poetry.lock: run poetry update 2021-12-08 19:57:47 +02:00
883ac1166a pyproject.toml: update csv-metadata-quality
Use the recently release v0.5.0.

See: https://github.com/ilri/csv-metadata-quality/releases/tag/v0.5.0
2021-12-08 19:56:52 +02:00
2235191c7b Regenerate static assets 2021-12-08 19:44:52 +02:00
de86295b81 package.json: fix typo 2021-12-08 19:44:30 +02:00
fea25f0c25 source/scss: update comment in bootstrap.scss 2021-12-08 19:43:58 +02:00
3d6cfa400a package-lock.json: run npm update 2021-12-08 19:43:43 +02:00
7602e2954c package.json: update dependencies 2021-12-08 19:43:27 +02:00
75ad04b9b0 runtime.txt: Update runtime
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-19 15:55:43 +03:00
5cd5a8df61 csv_metadata_quality_web: Regenerate static assets 2021-08-19 14:21:23 +03:00
00eefc3dab source/scss/bootstrap.scss: Update version in comment 2021-08-19 14:21:00 +03:00
54e446b65d package-lock.json: Run npm update 2021-08-19 14:20:36 +03:00
58cdd8a54c Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-08-19 14:20:18 +03:00
fc9297b879 poetry.lock: Run poetry update 2021-08-19 14:19:39 +03:00
6a1be3f328 Regenerate requirements
All checks were successful
continuous-integration/drone/push Build is passing
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-05-25 21:14:23 +03:00
377663ba95 poetry.lock: Run poetry update 2021-05-25 21:12:46 +03:00
31f0f26ffb Fix path to style.min.css
It is in the csv_metadata_quality_web package now.
2021-05-25 21:11:33 +03:00
f5835d6391 Bootstrap v5.0.1
Also update devDependencies and bootstrap.scss.
2021-05-25 21:07:34 +03:00
2a60888705 Add static/css/style.min.css 2021-05-25 21:03:41 +03:00
266e3c7373 package-lock.json: Run npm update
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-14 16:57:29 +03:00
0a601ab335 Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-04-14 16:56:51 +03:00
23f4359913 poetry.lock: Run poetry update 2021-04-14 16:56:17 +03:00
8bb90ed6b1 pyproject.toml: Update csv-metadata-quality version
Fixes some issues with Python deps.
2021-04-14 16:56:01 +03:00
6466287b0f source/scss/bootstrap.scss: Update comment
All checks were successful
continuous-integration/drone/push Build is passing
Bootstrap is now 5.0.0-beta3
2021-04-02 16:17:48 +03:00
d5f100fe42 package-lock.json: Run npm update 2021-04-02 16:17:23 +03:00
4352831b43 poetry.lock: Run poetry update 2021-04-02 16:17:06 +03:00
4bae262a97 Regenerate requirements
All checks were successful
continuous-integration/drone/push Build is passing
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-03-19 12:00:09 +02:00
c5138f8065 Update csv-metadata-quality version for Mojibake support 2021-03-19 11:59:21 +02:00
36a072b1fd pyproject.toml: Bump version to 0.0.2
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-17 10:10:01 +02:00
f6726ef210 Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-03-17 10:09:39 +02:00
a1243cf54a poetry.lock: Run poetry update 2021-03-17 10:09:14 +02:00
99cb76568f pyproject.toml: Use csv-metadata-quality v0.4.7
This includes some minor optimizations and the ability to check for
duplicate items.

See: https://github.com/ilri/csv-metadata-quality/releases/tag/v0.4.7
2021-03-17 10:08:06 +02:00
ca116284ca Use "unsafe" in quotes on frontpage
All checks were successful
continuous-integration/drone/push Build is passing
This was more me being cautious when I was writing the original tool
than a warning about it being actually unsafe. Now that this web fro
ntend will be used by less-technical users I should tone down the la
nguage.
2021-03-16 13:04:33 +02:00
2fcfc76ea5 csv_metadata_quality_web/main.py: Remove check for __main__
All checks were successful
continuous-integration/drone/push Build is passing
This is only needed if we are running directly in Python.
2021-03-14 22:05:04 +02:00
78f58b459c Create application for gunicorn
This is apparently what gunicorn looks for.
2021-03-14 22:03:15 +02:00
863a540225 Move csv_metadata_quality_web to a package
Eventually I will want to refactor so this will be necessary.
2021-03-14 22:01:45 +02:00
cc203b2842 Regenerate requirements
Generated using poetry:

  $ poetry export --without-hashes -f requirements.txt > requirements.txt
  $ poetry export --without-hashes --dev -f requirements.txt > requirements-dev.txt
2021-03-14 21:10:33 +02:00
de0703ceb2 poetry.lock: Run poetry update 2021-03-14 21:09:58 +02:00
2a852c9ed3 pyproject.toml: Pin new version of csv-metadata-quality
This version doesn't bother checking invalid multi-value separators.
Instead it just fixes them.
2021-03-14 21:09:07 +02:00
edd651317b templates/index.html: Change default selections
Enable AGROVOC lookup on dcterms.subject as well as the "unsafe"
fixes. For the AGROVOC lookup I just think that it  might not be
obvious to non-technical users that you have to check the box AND
enter a field name, despite the placeholder value. In any case, it
doesn't hurt to enable AGROVOC lookup by default because it won't
fail if the default dcterms.subject field is not present in the
user's CSV.
2021-03-14 20:54:50 +02:00
6f396f392f Revert "Move style.min.css to css/v1/style.min.css"
This reverts commit 8f6d337d2d.

We are using Heroku now so we don't need this phony version.
2021-03-14 20:40:33 +02:00
23 changed files with 987 additions and 936 deletions

View File

@ -1,3 +1,17 @@
---
kind: pipeline
type: docker
name: python310
steps:
- name: build
image: python:3.10-slim
commands:
- id
- python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config git
- pip install -r requirements-dev.txt
---
kind: pipeline
type: docker
@ -26,18 +40,4 @@ steps:
- apt update && apt install -y gcc g++ libicu-dev pkg-config git
- pip install -r requirements-dev.txt
---
kind: pipeline
type: docker
name: python37
steps:
- name: build
image: python:3.7-slim
commands:
- id
- python -V
- apt update && apt install -y gcc g++ libicu-dev pkg-config git
- pip install -r requirements-dev.txt
# vim: ts=2 sw=2 et

View File

@ -16,10 +16,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip

View File

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

View File

@ -1,5 +1,9 @@
# Online DSpace CSV Metadata Quality Checker ![GitHub Actions](https://github.com/ilri/csv-metadata-quality-web/workflows/Build/badge.svg)
Easy to use, web-based version of the [DSpace CSV Metadata Quality checker](https://github.com/ilri/csv-metadata-quality) application.
<h1 align="center">Online DSpace CSV Metadata Quality Checker</h1>
<p align="center">
<a href="https://github.com/ilri/csv-metadata-quality-web/actions"><img alt="Build Status" src="https://github.com/ilri/csv-metadata-quality-web/workflows/Build/badge.svg"></a>
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>
<p align="center">
<img width="600" alt="Screenshot of csv-metadata-quality-web on Heroku" src="screenshot.png">
@ -7,6 +11,24 @@ Easy to use, web-based version of the [DSpace CSV Metadata Quality checker](http
You can try [the hosted version](https://fierce-ocean-30836.herokuapp.com) or host it yourself (see below).
## Usage
Create a Python 3.9+ virtual environment and install the dependencies:
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
## Running Locally
$ gunicorn csv_metadata_quality_web.main
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
This work is licensed under the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html).

View File

View File

@ -15,7 +15,7 @@ from flask import (
)
from werkzeug.utils import secure_filename
app = Flask(__name__)
app = application = Flask(__name__)
app.config["MAX_CONTENT_LENGTH"] = 1024 * 1024
app.config["UPLOAD_EXTENSIONS"] = [".csv"]
# the only place we can write to on Google App Engine is /tmp
@ -127,7 +127,3 @@ def result_download(base64slug):
filename = secure_filename(os.path.splitext(filename)[0] + "-cleaned.csv")
return send_from_directory(app.config["UPLOAD_PATH"], filename, as_attachment=True)
if __name__ == "__main__":
app.run(host="127.0.0.1", port=8080, debug=True)

File diff suppressed because one or more lines are too long

View File

@ -4,5 +4,5 @@
<meta name="description" content="Simple web interface for the DSpace CSV Metadata Quality tool.">
<meta name="author" content="Alan Orth">
<title>DSpace CSV Metadata Quality Checker</title>
<link href="{{ url_for('static', filename='css/v1/style.min.css') }}" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.min.css') }}" rel="stylesheet">
</head>

View File

@ -24,16 +24,16 @@
<div class="input-group mb-3">
<div class="input-group-text">
Validate field(s) against AGROVOC&nbsp;
<input class="form-check-input" type="checkbox" id="agrovocFieldsCheckbox" name="agrovocCheckbox" aria-label="Checkbox for following text input">
<input class="form-check-input" type="checkbox" checked="true" id="agrovocFieldsCheckbox" name="agrovocCheckbox" aria-label="Checkbox for following text input">
</div>
<input type="text" class="form-control" placeholder="dcterms.subject" id="agrovocFieldsText" name="agrovocText" aria-label="Text input with checkbox">
<input type="text" class="form-control" value="dcterms.subject" id="agrovocFieldsText" name="agrovocText" aria-label="Text input with checkbox">
<div id="agrovocHelp" class="form-text">Optionally indicate fields to validate against <a href="https://agrovoc.uniroma2.it/agrovoc/agrovoc/en/" title="AGROVOC Multilingual Thesaurus">AGROVOC</a>. Separate multiple fields with a comma, for example: <code>dcterms.subject,cg.coverage.country</code>. Note: this can take an extra minute or more depending on your data. If you have a problem please try again and it will generally be faster the second time.</div>
</div>
<div class="mb-3 form-check form-switch">
<input class="form-check-input" type="checkbox" id="unsafeCheckbox" name="unsafe">
<label class="form-check-label" for="unsafeCheckbox" aria-describedby="unsafeHelp">Enable unsafe fixes</label>
<div id="unsafeHelp" class="form-text">This will remove newlines and perform <a href="https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html" title='When "Zoë" !== "Zoë". Or why you need to normalize Unicode strings'>normalization of Unicode characters</a>. Read more about these <a href="https://github.com/ilri/csv-metadata-quality#unsafe-fixes">unsafe fixes</a>.</div>
<input class="form-check-input" type="checkbox" checked="true" id="unsafeCheckbox" name="unsafe">
<label class="form-check-label" for="unsafeCheckbox" aria-describedby="unsafeHelp">Enable "unsafe" fixes</label>
<div id="unsafeHelp" class="form-text">This will remove newlines, perform <a href="https://withblue.ink/2019/03/11/why-you-need-to-normalize-unicode-strings.html" title='When "Zoë" !== "Zoë". Or why you need to normalize Unicode strings'>normalization of Unicode characters</a>, and attempt to fix <a href="https://en.wikipedia.org/wiki/Mojibake">mojibake</a> character encoding issues. Read more about these <a href="https://github.com/ilri/csv-metadata-quality#unsafe-fixes">unsafe fixes</a>.</div>
</div>
<div class="mb-3 form-check form-switch">

222
package-lock.json generated
View File

@ -5,18 +5,19 @@
"requires": true,
"packages": {
"": {
"name": "csv-metadata-quality-web",
"version": "0.0.1",
"license": "AGPL-3.0-only",
"devDependencies": {
"bootstrap": "^5.0.0-beta2",
"clean-css-cli": "^4.3.0",
"sass": "^1.32.7"
"bootstrap": "^5.0.1",
"clean-css-cli": "^5.3.0",
"sass": "^1.32.13"
}
},
"node_modules/@popperjs/core": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
"integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==",
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
"integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
"dev": true,
"peer": true,
"funding": {
@ -25,9 +26,9 @@
}
},
"node_modules/anymatch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
@ -38,9 +39,9 @@
}
},
"node_modules/balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/binary-extensions": {
@ -53,16 +54,16 @@
}
},
"node_modules/bootstrap": {
"version": "5.0.0-beta2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.0.0-beta2.tgz",
"integrity": "sha512-e+uPbPHqTQWKyCX435uVlOmgH9tUt0xtjvyOC7knhKgOS643BrQKuTo+KecGpPV7qlmOyZgCfaM4xxPWtDEN/g==",
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
},
"peerDependencies": {
"@popperjs/core": "^2.6.0"
"@popperjs/core": "^2.10.2"
}
},
"node_modules/brace-expansion": {
@ -88,60 +89,64 @@
}
},
"node_modules/chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
"integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.1",
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.0",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.5.0"
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"optionalDependencies": {
"fsevents": "~2.3.1"
"fsevents": "~2.3.2"
}
},
"node_modules/clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
"integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz",
"integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==",
"dev": true,
"dependencies": {
"source-map": "~0.6.0"
},
"engines": {
"node": ">= 4.0"
"node": ">= 10.0"
}
},
"node_modules/clean-css-cli": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-4.3.0.tgz",
"integrity": "sha512-8GHZfr+mG3zB/Lgqrr27qHBFsPSn0fyEI3f2rIZpxPxUbn2J6A8xyyeBRVTW8duDuXigN0s80vsXiXJOEFIO5Q==",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.5.0.tgz",
"integrity": "sha512-Vr9t8o59YaPcRw/4hyJjEh4zU/BlOtlJJ8465El6QMYWbkf5nN1mhAljX6FIb0bfpkGlYNFKPCyTz7oFCHOblQ==",
"dev": true,
"dependencies": {
"clean-css": "^4.2.1",
"commander": "2.x",
"glob": "7.x"
"chokidar": "^3.5.2",
"clean-css": "^5.2.2",
"commander": "7.x",
"glob": "^7.1.6"
},
"bin": {
"cleancss": "bin/cleancss"
},
"engines": {
"node": ">= 4.0"
"node": ">= 10.12.0"
}
},
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"engines": {
"node": ">= 10"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
@ -182,9 +187,9 @@
}
},
"node_modules/glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@ -213,6 +218,12 @@
"node": ">= 6"
}
},
"node_modules/immutable": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
"integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
"dev": true
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@ -251,9 +262,9 @@
}
},
"node_modules/is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
@ -311,9 +322,9 @@
}
},
"node_modules/picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
"dev": true,
"engines": {
"node": ">=8.6"
@ -323,9 +334,9 @@
}
},
"node_modules/readdirp": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"dependencies": {
"picomatch": "^2.2.1"
@ -335,12 +346,13 @@
}
},
"node_modules/sass": {
"version": "1.32.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz",
"integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==",
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.44.0.tgz",
"integrity": "sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==",
"dev": true,
"dependencies": {
"chokidar": ">=2.0.0 <4.0.0"
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0"
},
"bin": {
"sass": "sass.js"
@ -379,16 +391,16 @@
},
"dependencies": {
"@popperjs/core": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
"integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==",
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz",
"integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==",
"dev": true,
"peer": true
},
"anymatch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"requires": {
"normalize-path": "^3.0.0",
@ -396,9 +408,9 @@
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"binary-extensions": {
@ -408,9 +420,9 @@
"dev": true
},
"bootstrap": {
"version": "5.0.0-beta2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.0.0-beta2.tgz",
"integrity": "sha512-e+uPbPHqTQWKyCX435uVlOmgH9tUt0xtjvyOC7knhKgOS643BrQKuTo+KecGpPV7qlmOyZgCfaM4xxPWtDEN/g==",
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
"integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==",
"dev": true,
"requires": {}
},
@ -434,45 +446,46 @@
}
},
"chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
"integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
"dev": true,
"requires": {
"anymatch": "~3.1.1",
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"fsevents": "~2.3.1",
"glob-parent": "~5.1.0",
"fsevents": "~2.3.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.5.0"
"readdirp": "~3.6.0"
}
},
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
"integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz",
"integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==",
"dev": true,
"requires": {
"source-map": "~0.6.0"
}
},
"clean-css-cli": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-4.3.0.tgz",
"integrity": "sha512-8GHZfr+mG3zB/Lgqrr27qHBFsPSn0fyEI3f2rIZpxPxUbn2J6A8xyyeBRVTW8duDuXigN0s80vsXiXJOEFIO5Q==",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.5.0.tgz",
"integrity": "sha512-Vr9t8o59YaPcRw/4hyJjEh4zU/BlOtlJJ8465El6QMYWbkf5nN1mhAljX6FIb0bfpkGlYNFKPCyTz7oFCHOblQ==",
"dev": true,
"requires": {
"clean-css": "^4.2.1",
"commander": "2.x",
"glob": "7.x"
"chokidar": "^3.5.2",
"clean-css": "^5.2.2",
"commander": "7.x",
"glob": "^7.1.6"
}
},
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
},
"concat-map": {
@ -504,9 +517,9 @@
"optional": true
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@ -526,6 +539,12 @@
"is-glob": "^4.0.1"
}
},
"immutable": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
"integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@ -558,9 +577,9 @@
"dev": true
},
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
@ -603,27 +622,28 @@
"dev": true
},
"picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
"dev": true
},
"readdirp": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"requires": {
"picomatch": "^2.2.1"
}
},
"sass": {
"version": "1.32.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz",
"integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==",
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.44.0.tgz",
"integrity": "sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw==",
"dev": true,
"requires": {
"chokidar": ">=2.0.0 <4.0.0"
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0"
}
},
"source-map": {

View File

@ -5,13 +5,13 @@
"author": "Alan Orth",
"license": "AGPL-3.0-only",
"devDependencies": {
"bootstrap": "^5.0.0-beta2",
"clean-css-cli": "^4.3.0",
"sass": "^1.32.7"
"bootstrap": "^5.1.1",
"clean-css-cli": "^5.4.2",
"sass": "^1.44.0"
},
"scripts": {
"build:css": "sass --style expanded source/scss/style.scss static/css/v1/style.css.tmp && cleancss --level 1 static/css/v1/style.css.tmp -o static/css/v1/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",
"build": "npm run build:css && npm run clean",
"clean": "rm static/css/v1/style.css.tmp static/css/v1/style.css.tmp.map"
"clean": "rm csv_metadata_quality_web/static/css/style.css.tmp csv_metadata_quality_web/static/css/style.css.tmp.map"
}
}

1408
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -1,55 +1,47 @@
ansi2html==1.6.0; python_version >= "3.6"
appdirs==1.4.4; python_version >= "3.6"
appnope==0.1.2; sys_platform == "darwin" and python_version >= "3.7"
backcall==0.2.0; python_version >= "3.7"
black==20.8b1; python_version >= "3.6"
certifi==2020.12.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
chardet==4.0.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
click==7.1.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
colorama==0.4.4; 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 sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0")
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@0e9176f0a6f694e85d38bf15c6b80708402bfa8b ; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
decorator==4.4.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.7"
flake8==3.8.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
flask==1.1.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
gunicorn==20.0.4; python_version >= "3.4"
idna==2.10; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
importlib-metadata==3.7.2; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version < "3.8" and python_version >= "3.6"
ipython-genutils==0.2.0; python_version >= "3.7"
ipython==7.21.0; python_version >= "3.7"
isort==5.7.0; python_version >= "3.6" and python_version < "4.0"
itsdangerous==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
jedi==0.18.0; python_version >= "3.7"
jinja2==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
langid==1.1.6; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
markupsafe==1.1.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
mccabe==0.6.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
mypy-extensions==0.4.3; python_version >= "3.6"
numpy==1.20.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.7"
pandas==1.2.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
parso==0.8.1; python_version >= "3.7"
pathspec==0.8.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
pickleshare==0.7.5; python_version >= "3.7"
prompt-toolkit==3.0.17; python_full_version >= "3.6.1" and python_version >= "3.7"
ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.7"
pycodestyle==2.6.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
pycountry==19.8.18; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pyflakes==2.2.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
pygments==2.8.1; python_version >= "3.7"
python-dateutil==2.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
python-stdnum==1.16; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pytz==2021.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
regex==2020.11.13; python_version >= "3.6"
requests-cache==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests==2.25.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
six==1.15.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
spdx-license-list==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6"
traitlets==5.0.5; python_version >= "3.7"
typed-ast==1.4.2; python_version >= "3.6"
typing-extensions==3.7.4.3; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version < "3.8" and python_version >= "3.6"
urllib3==1.26.3; python_full_version >= "3.7.1" and python_version < "4" and python_full_version < "4.0.0"
wcwidth==0.2.5; python_full_version >= "3.6.1" and python_version >= "3.7"
werkzeug==1.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
xlrd==1.2.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
zipp==3.4.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version < "3.8" and python_version >= "3.6"
ansi2html==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4.0"
attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0"
black==23.1.0 ; python_version >= "3.9" and python_version < "4.0"
cattrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0"
certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4"
charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "4"
click==8.1.3 ; python_version >= "3.9" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.9" and python_version < "4.0"
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.6.1 ; python_version >= "3.9" and python_version < "4.0"
exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11"
flake8==6.0.0 ; python_version >= "3.9" and python_version < "4.0"
flask==2.2.3 ; python_version >= "3.9" and python_version < "4.0"
ftfy==6.1.1 ; python_version >= "3.9" and python_version < "4"
gunicorn==20.1.0 ; python_version >= "3.9" and python_version < "4.0"
idna==3.4 ; python_version >= "3.9" and python_version < "4"
importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10"
isort==5.12.0 ; python_version >= "3.9" and python_version < "4.0"
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0"
langid==1.1.6 ; python_version >= "3.9" and python_version < "4.0"
markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
mccabe==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4.0"
numpy==1.24.2 ; python_version < "4.0" and python_version >= "3.9"
packaging==23.0 ; python_version >= "3.9" and python_version < "4.0"
pandas==1.5.3 ; python_version >= "3.9" and python_version < "4.0"
pathspec==0.11.0 ; python_version >= "3.9" and python_version < "4.0"
platformdirs==3.0.0 ; python_version >= "3.9" and python_version < "4.0"
pycodestyle==2.10.0 ; python_version >= "3.9" and python_version < "4.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.9" and python_version < "4.0"
pyflakes==3.0.1 ; python_version >= "3.9" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
python-stdnum==1.18 ; python_version >= "3.9" and python_version < "4.0"
pytz==2022.7.1 ; python_version >= "3.9" and python_version < "4.0"
requests-cache==0.9.8 ; python_version >= "3.9" and python_version < "4.0"
requests==2.28.2 ; python_version >= "3.9" and python_version < "4"
setuptools==67.4.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.11"
typing-extensions==4.5.0 ; python_version >= "3.9" and python_version < "3.10"
url-normalize==1.4.3 ; python_version >= "3.9" and python_version < "4.0"
urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4"
wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "4"
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,26 +1,35 @@
ansi2html==1.6.0; python_version >= "3.6"
certifi==2020.12.5; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
chardet==4.0.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
click==7.1.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
colorama==0.4.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@0e9176f0a6f694e85d38bf15c6b80708402bfa8b ; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
flask==1.1.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
gunicorn==20.0.4; python_version >= "3.4"
idna==2.10; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
itsdangerous==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
jinja2==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
langid==1.1.6; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
markupsafe==1.1.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
numpy==1.20.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.7"
pandas==1.2.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pycountry==19.8.18; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
python-dateutil==2.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
python-stdnum==1.16; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
pytz==2021.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests-cache==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
requests==2.25.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
six==1.15.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
spdx-license-list==0.5.2; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
urllib3==1.26.3; python_full_version >= "3.7.1" and python_version < "4" and python_full_version < "4.0.0"
werkzeug==1.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
xlrd==1.2.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
ansi2html==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
appdirs==1.4.4 ; python_version >= "3.9" and python_version < "4.0"
attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0"
cattrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0"
certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4"
charset-normalizer==3.0.1 ; python_version >= "3.9" and python_version < "4"
click==8.1.3 ; python_version >= "3.9" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0"
country-converter @ git+https://github.com/alanorth/country_converter.git@myanmar-region ; python_version >= "3.9" and python_version < "4.0"
csv-metadata-quality @ git+https://github.com/ilri/csv-metadata-quality.git@v0.6.1 ; python_version >= "3.9" and python_version < "4.0"
exceptiongroup==1.1.0 ; python_version >= "3.9" and python_version < "3.11"
flask==2.2.3 ; python_version >= "3.9" and python_version < "4.0"
ftfy==6.1.1 ; python_version >= "3.9" and python_version < "4"
gunicorn==20.1.0 ; python_version >= "3.9" and python_version < "4.0"
idna==3.4 ; python_version >= "3.9" and python_version < "4"
importlib-metadata==6.0.0 ; python_version >= "3.9" and python_version < "3.10"
itsdangerous==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0"
langid==1.1.6 ; python_version >= "3.9" and python_version < "4.0"
markupsafe==2.1.2 ; python_version >= "3.9" and python_version < "4.0"
numpy==1.24.2 ; python_version < "4.0" and python_version >= "3.9"
pandas==1.5.3 ; python_version >= "3.9" and python_version < "4.0"
pycountry @ git+https://github.com/alanorth/pycountry@iso-codes-4.12.0 ; python_version >= "3.9" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
python-stdnum==1.18 ; python_version >= "3.9" and python_version < "4.0"
pytz==2022.7.1 ; python_version >= "3.9" and python_version < "4.0"
requests-cache==0.9.8 ; python_version >= "3.9" and python_version < "4.0"
requests==2.28.2 ; python_version >= "3.9" and python_version < "4"
setuptools==67.4.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
url-normalize==1.4.3 ; python_version >= "3.9" and python_version < "4.0"
urllib3==1.26.14 ; python_version >= "3.9" and python_version < "4"
wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "4"
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 +1 @@
python-3.9.2
python-3.10.5

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 164 KiB

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v5.0.0-beta2 (https://getbootstrap.com/)
* 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)
@ -42,6 +42,7 @@
//@import "../../node_modules/bootstrap/scss/popover";
//@import "../../node_modules/bootstrap/scss/carousel";
//@import "../../node_modules/bootstrap/scss/spinners";
@import "../../node_modules/bootstrap/scss/offcanvas";
// Helpers
@import "../../node_modules/bootstrap/scss/helpers";

6
static/css/style.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long