diff options
-rw-r--r-- | .buildpacks | 2 | ||||
-rw-r--r-- | .gitignore | 8 | ||||
-rw-r--r-- | Pipfile | 34 | ||||
-rw-r--r-- | Pipfile.lock | 504 | ||||
-rw-r--r-- | Procfile | 2 | ||||
-rw-r--r-- | README.md | 23 | ||||
-rw-r--r-- | app.json | 79 | ||||
-rw-r--r-- | install.sh | 24 | ||||
-rw-r--r-- | newspipe/bootstrap.py (renamed from src/bootstrap.py) | 0 | ||||
-rw-r--r-- | newspipe/conf.py (renamed from src/conf.py) | 0 | ||||
-rw-r--r-- | newspipe/conf/conf.cfg-sample (renamed from src/conf/conf.cfg-sample) | 0 | ||||
-rw-r--r-- | newspipe/crawler/default_crawler.py (renamed from src/crawler/default_crawler.py) | 0 | ||||
-rw-r--r-- | newspipe/lib/__init__.py (renamed from src/lib/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/lib/article_utils.py (renamed from src/lib/article_utils.py) | 0 | ||||
-rw-r--r-- | newspipe/lib/data.py (renamed from src/lib/data.py) | 0 | ||||
-rw-r--r-- | newspipe/lib/feed_utils.py (renamed from src/lib/feed_utils.py) | 0 | ||||
-rwxr-xr-x | newspipe/lib/misc_utils.py (renamed from src/lib/misc_utils.py) | 0 | ||||
-rw-r--r-- | newspipe/lib/utils.py (renamed from src/lib/utils.py) | 0 | ||||
-rwxr-xr-x | newspipe/manager.py (renamed from src/manager.py) | 0 | ||||
-rw-r--r-- | newspipe/notifications/emails.py (renamed from src/notifications/emails.py) | 0 | ||||
-rw-r--r-- | newspipe/notifications/notifications.py (renamed from src/notifications/notifications.py) | 0 | ||||
-rwxr-xr-x | newspipe/runserver.py (renamed from src/runserver.py) | 0 | ||||
-rw-r--r-- | newspipe/web/__init__.py (renamed from src/web/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/__init__.py (renamed from src/web/controllers/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/abstract.py (renamed from src/web/controllers/abstract.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/article.py (renamed from src/web/controllers/article.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/bookmark.py (renamed from src/web/controllers/bookmark.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/category.py (renamed from src/web/controllers/category.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/feed.py (renamed from src/web/controllers/feed.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/icon.py (renamed from src/web/controllers/icon.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/tag.py (renamed from src/web/controllers/tag.py) | 0 | ||||
-rw-r--r-- | newspipe/web/controllers/user.py (renamed from src/web/controllers/user.py) | 0 | ||||
-rw-r--r-- | newspipe/web/decorators.py (renamed from src/web/decorators.py) | 0 | ||||
-rw-r--r-- | newspipe/web/forms.py (renamed from src/web/forms.py) | 0 | ||||
-rw-r--r-- | newspipe/web/js/actions/MenuActions.js (renamed from src/web/js/actions/MenuActions.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/actions/MiddlePanelActions.js (renamed from src/web/js/actions/MiddlePanelActions.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/actions/RightPanelActions.js (renamed from src/web/js/actions/RightPanelActions.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/app.js (renamed from src/web/js/app.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/MainApp.react.js (renamed from src/web/js/components/MainApp.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/Menu.react.js (renamed from src/web/js/components/Menu.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/MiddlePanel.react.js (renamed from src/web/js/components/MiddlePanel.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/Navbar.react.js (renamed from src/web/js/components/Navbar.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/RightPanel.react.js (renamed from src/web/js/components/RightPanel.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/components/time.react.js (renamed from src/web/js/components/time.react.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/constants/JarrConstants.js (renamed from src/web/js/constants/JarrConstants.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/dispatcher/JarrDispatcher.js (renamed from src/web/js/dispatcher/JarrDispatcher.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/dispatcher/__tests__/AppDispatcher-test.js (renamed from src/web/js/dispatcher/__tests__/AppDispatcher-test.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/stores/MenuStore.js (renamed from src/web/js/stores/MenuStore.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/stores/MiddlePanelStore.js (renamed from src/web/js/stores/MiddlePanelStore.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/stores/RightPanelStore.js (renamed from src/web/js/stores/RightPanelStore.js) | 0 | ||||
-rw-r--r-- | newspipe/web/js/stores/__tests__/TodoStore-test.js (renamed from src/web/js/stores/__tests__/TodoStore-test.js) | 0 | ||||
-rw-r--r-- | newspipe/web/lib/__init__.py (renamed from src/web/lib/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/lib/user_utils.py (renamed from src/web/lib/user_utils.py) | 0 | ||||
-rw-r--r-- | newspipe/web/lib/view_utils.py (renamed from src/web/lib/view_utils.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/__init__.py (renamed from src/web/models/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/article.py (renamed from src/web/models/article.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/bookmark.py (renamed from src/web/models/bookmark.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/category.py (renamed from src/web/models/category.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/feed.py (renamed from src/web/models/feed.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/icon.py (renamed from src/web/models/icon.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/right_mixin.py (renamed from src/web/models/right_mixin.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/role.py (renamed from src/web/models/role.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/tag.py (renamed from src/web/models/tag.py) | 0 | ||||
-rw-r--r-- | newspipe/web/models/user.py (renamed from src/web/models/user.py) | 0 | ||||
l--------- | newspipe/web/static/css/bootstrap-theme.min.css (renamed from src/web/static/css/bootstrap-theme.min.css) | 0 | ||||
l--------- | newspipe/web/static/css/bootstrap-theme.min.css.map (renamed from src/web/static/css/bootstrap-theme.min.css.map) | 0 | ||||
l--------- | newspipe/web/static/css/bootstrap.min.css (renamed from src/web/static/css/bootstrap.min.css) | 0 | ||||
l--------- | newspipe/web/static/css/bootstrap.min.css.map (renamed from src/web/static/css/bootstrap.min.css.map) | 0 | ||||
-rw-r--r-- | newspipe/web/static/css/customized-bootstrap.css (renamed from src/web/static/css/customized-bootstrap.css) | 0 | ||||
-rw-r--r-- | newspipe/web/static/css/one-page-app.css (renamed from src/web/static/css/one-page-app.css) | 0 | ||||
l--------- | newspipe/web/static/fonts (renamed from src/web/static/fonts) | 0 | ||||
-rw-r--r-- | newspipe/web/static/img/favicon.ico (renamed from src/web/static/img/favicon.ico) | bin | 1150 -> 1150 bytes | |||
-rw-r--r-- | newspipe/web/static/img/newspipe.png (renamed from src/web/static/img/newspipe.png) | bin | 1547 -> 1547 bytes | |||
-rw-r--r-- | newspipe/web/static/img/newspipe.svg (renamed from src/web/static/img/newspipe.svg) | 0 | ||||
-rw-r--r-- | newspipe/web/static/img/pinboard.png (renamed from src/web/static/img/pinboard.png) | bin | 597 -> 597 bytes | |||
-rwxr-xr-x | newspipe/web/static/img/reddit.png (renamed from src/web/static/img/reddit.png) | bin | 525 -> 525 bytes | |||
-rw-r--r-- | newspipe/web/static/img/twitter.png (renamed from src/web/static/img/twitter.png) | bin | 640 -> 640 bytes | |||
-rw-r--r-- | newspipe/web/static/js/articles.js (renamed from src/web/static/js/articles.js) | 0 | ||||
-rw-r--r-- | newspipe/web/static/js/feed.js (renamed from src/web/static/js/feed.js) | 0 | ||||
-rw-r--r-- | newspipe/web/static/js/jquery.js (renamed from src/web/static/js/jquery.js) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/about.html (renamed from src/web/templates/about.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/about_more.html (renamed from src/web/templates/about_more.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/admin/create_user.html (renamed from src/web/templates/admin/create_user.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/admin/dashboard.html (renamed from src/web/templates/admin/dashboard.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/article.html (renamed from src/web/templates/article.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/article_pub.html (renamed from src/web/templates/article_pub.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/bookmarks.html (renamed from src/web/templates/bookmarks.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/categories.html (renamed from src/web/templates/categories.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/duplicates.html (renamed from src/web/templates/duplicates.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/edit_bookmark.html (renamed from src/web/templates/edit_bookmark.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/edit_category.html (renamed from src/web/templates/edit_category.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/edit_feed.html (renamed from src/web/templates/edit_feed.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/emails/account_activation.txt (renamed from src/web/templates/emails/account_activation.txt) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/emails/new_password.txt (renamed from src/web/templates/emails/new_password.txt) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/errors/404.html (renamed from src/web/templates/errors/404.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/errors/500.html (renamed from src/web/templates/errors/500.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/feed.html (renamed from src/web/templates/feed.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/feed_list.html (renamed from src/web/templates/feed_list.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/feed_list_per_categories.html (renamed from src/web/templates/feed_list_per_categories.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/feed_list_simple.html (renamed from src/web/templates/feed_list_simple.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/feeds.html (renamed from src/web/templates/feeds.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/history.html (renamed from src/web/templates/history.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/home.html (renamed from src/web/templates/home.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/inactives.html (renamed from src/web/templates/inactives.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/layout.html (renamed from src/web/templates/layout.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/login.html (renamed from src/web/templates/login.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/management.html (renamed from src/web/templates/management.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/opml.xml (renamed from src/web/templates/opml.xml) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/popular.html (renamed from src/web/templates/popular.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/profile.html (renamed from src/web/templates/profile.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/profile_public.html (renamed from src/web/templates/profile_public.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/signup.html (renamed from src/web/templates/signup.html) | 0 | ||||
-rw-r--r-- | newspipe/web/templates/user_stream.html (renamed from src/web/templates/user_stream.html) | 0 | ||||
-rw-r--r-- | newspipe/web/translations/babel.cfg (renamed from src/web/translations/babel.cfg) | 0 | ||||
-rw-r--r-- | newspipe/web/translations/fr/LC_MESSAGES/messages.mo (renamed from src/web/translations/fr/LC_MESSAGES/messages.mo) | bin | 19672 -> 19672 bytes | |||
-rw-r--r-- | newspipe/web/translations/fr/LC_MESSAGES/messages.po (renamed from src/web/translations/fr/LC_MESSAGES/messages.po) | 0 | ||||
-rwxr-xr-x | newspipe/web/translations/internationalization.sh (renamed from src/web/translations/internationalization.sh) | 0 | ||||
-rw-r--r-- | newspipe/web/translations/messages.pot (renamed from src/web/translations/messages.pot) | 0 | ||||
-rw-r--r-- | newspipe/web/views/__init__.py (renamed from src/web/views/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/admin.py (renamed from src/web/views/admin.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/__init__.py (renamed from src/web/views/api/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v2/__init__.py (renamed from src/web/views/api/v2/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v2/article.py (renamed from src/web/views/api/v2/article.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v2/category.py (renamed from src/web/views/api/v2/category.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v2/common.py (renamed from src/web/views/api/v2/common.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v2/feed.py (renamed from src/web/views/api/v2/feed.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v3/__init__.py (renamed from src/web/views/api/v3/__init__.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v3/article.py (renamed from src/web/views/api/v3/article.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v3/common.py (renamed from src/web/views/api/v3/common.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/api/v3/feed.py (renamed from src/web/views/api/v3/feed.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/article.py (renamed from src/web/views/article.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/bookmark.py (renamed from src/web/views/bookmark.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/category.py (renamed from src/web/views/category.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/common.py (renamed from src/web/views/common.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/feed.py (renamed from src/web/views/feed.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/home.py (renamed from src/web/views/home.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/icon.py (renamed from src/web/views/icon.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/session_mgmt.py (renamed from src/web/views/session_mgmt.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/user.py (renamed from src/web/views/user.py) | 0 | ||||
-rw-r--r-- | newspipe/web/views/views.py (renamed from src/web/views/views.py) | 0 | ||||
-rw-r--r-- | poetry.lock | 923 | ||||
-rw-r--r-- | pyproject.toml | 44 | ||||
-rw-r--r-- | runtime.txt | 1 |
143 files changed, 992 insertions, 652 deletions
diff --git a/.buildpacks b/.buildpacks deleted file mode 100644 index f1de1de6..00000000 --- a/.buildpacks +++ /dev/null @@ -1,2 +0,0 @@ -https://github.com/heroku/heroku-buildpack-nodejs -https://github.com/ejholmes/heroku-buildpack-bower @@ -22,10 +22,12 @@ eproject.cfg venv build -src/conf/conf.cfg +newspipe.egg-info/ + +newspipe/conf/conf.cfg .coverage # js and node files node_modules -src/web/static/bower_components/ -src/web/static/js/bundle.min.js +newspipe/web/static/bower_components/ +newspipe/web/static/js/bundle.min.js diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 588235ee..00000000 --- a/Pipfile +++ /dev/null @@ -1,34 +0,0 @@ -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -aiohttp = "*" -requests = "*" -chardet = "*" -requests-futures = "*" -feedparser = "*" -"beautifulsoup4" = "*" -lxml = "*" -opml = "*" -SQLAlchemy = "*" -alembic = "*" -Flask = "*" -Flask-SQLAlchemy = "*" -Flask-Login = "*" -Flask-Principal = "*" -Flask-WTF = "*" -Flask-RESTful = "*" -Flask-Restless = "*" -Flask-paginate = "*" -Flask-Babel = "*" -Flask-SSLify = "*" -Flask-Migrate = "*" -Flask-Script = "*" -WTForms = "*" -sendgrid = "*" -python-dateutil = "*" -psycopg2-binary = "*" - -[dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index f9b9dff8..00000000 --- a/Pipfile.lock +++ /dev/null @@ -1,504 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "6b30dc177331d8eda5e9c7531c9871b33a650c1610b0eddbad9345bad862c7f4" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "aiohttp": { - "hashes": [ - "sha256:1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e", - "sha256:259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326", - "sha256:2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a", - "sha256:32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654", - "sha256:344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a", - "sha256:460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4", - "sha256:4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17", - "sha256:50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec", - "sha256:6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd", - "sha256:65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48", - "sha256:ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59", - "sha256:b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965" - ], - "index": "pypi", - "version": "==3.6.2" - }, - "alembic": { - "hashes": [ - "sha256:2df2519a5b002f881517693b95626905a39c5faf4b5a1f94de4f1441095d1d26" - ], - "index": "pypi", - "version": "==1.4.0" - }, - "aniso8601": { - "hashes": [ - "sha256:529dcb1f5f26ee0df6c0a1ee84b7b27197c3c50fc3a6321d66c544689237d072", - "sha256:c033f63d028b9a58e3ab0c2c7d0532ab4bfa7452bfc788fbfe3ddabd327b181a" - ], - "version": "==8.0.0" - }, - "async-timeout": { - "hashes": [ - "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f", - "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3" - ], - "version": "==3.0.1" - }, - "attrs": { - "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" - ], - "version": "==19.3.0" - }, - "babel": { - "hashes": [ - "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38", - "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4" - ], - "version": "==2.8.0" - }, - "beautifulsoup4": { - "hashes": [ - "sha256:05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a", - "sha256:9fbb4d6e48ecd30bcacc5b63b94088192dcda178513b2ae3c394229f8911b887", - "sha256:e1505eeed31b0f4ce2dbb3bc8eb256c04cc2b3b72af7d551a4ab6efd5cbe5dae" - ], - "index": "pypi", - "version": "==4.8.2" - }, - "blinker": { - "hashes": [ - "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" - ], - "version": "==1.4" - }, - "certifi": { - "hashes": [ - "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3", - "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f" - ], - "version": "==2019.11.28" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "index": "pypi", - "version": "==3.0.4" - }, - "click": { - "hashes": [ - "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", - "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" - ], - "version": "==7.0" - }, - "feedparser": { - "hashes": [ - "sha256:bd030652c2d08532c034c27fcd7c85868e7fa3cb2b17f230a44a6bbc92519bf9", - "sha256:cd2485472e41471632ed3029d44033ee420ad0b57111db95c240c9160a85831c", - "sha256:ce875495c90ebd74b179855449040003a1beb40cd13d5f037a0654251e260b02" - ], - "index": "pypi", - "version": "==5.2.1" - }, - "flask": { - "hashes": [ - "sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52", - "sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6" - ], - "index": "pypi", - "version": "==1.1.1" - }, - "flask-babel": { - "hashes": [ - "sha256:247f4ec34cf605d03781f480bccb1a5acb719df1d1a2a743c091ab3db5d5fde2", - "sha256:d6a70468f9a8919d59fba2a291a003da3a05ff884275dddbd965f3b98b09ab3e" - ], - "index": "pypi", - "version": "==1.0.0" - }, - "flask-login": { - "hashes": [ - "sha256:6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b", - "sha256:7451b5001e17837ba58945aead261ba425fdf7b4f0448777e597ddab39f4fba0" - ], - "index": "pypi", - "version": "==0.5.0" - }, - "flask-migrate": { - "hashes": [ - "sha256:6fb038be63d4c60727d5dfa5f581a6189af5b4e2925bc378697b4f0a40cfb4e1", - "sha256:a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502" - ], - "index": "pypi", - "version": "==2.5.2" - }, - "flask-paginate": { - "hashes": [ - "sha256:d2aa07b4ef27f56f973482aaa06a0d93dc769a3e4d3e9c382a305ab72ac38ad9" - ], - "index": "pypi", - "version": "==0.5.5" - }, - "flask-principal": { - "hashes": [ - "sha256:f5d6134b5caebfdbb86f32d56d18ee44b080876a27269560a96ea35f75c99453" - ], - "index": "pypi", - "version": "==0.4.0" - }, - "flask-restful": { - "hashes": [ - "sha256:5ea9a5991abf2cb69b4aac19793faac6c032300505b325687d7c305ffaa76915", - "sha256:d891118b951921f1cec80cabb4db98ea6058a35e6404788f9e70d5b243813ec2" - ], - "index": "pypi", - "version": "==0.3.8" - }, - "flask-restless": { - "hashes": [ - "sha256:1de47fe80abd47239c9a1804e0ba5da1d23b9f40cfc26202d16bed37f178c2b6" - ], - "index": "pypi", - "version": "==0.17.0" - }, - "flask-script": { - "hashes": [ - "sha256:6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65" - ], - "index": "pypi", - "version": "==2.0.6" - }, - "flask-sqlalchemy": { - "hashes": [ - "sha256:0078d8663330dc05a74bc72b3b6ddc441b9a744e2f56fe60af1a5bfc81334327", - "sha256:6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d" - ], - "index": "pypi", - "version": "==2.4.1" - }, - "flask-sslify": { - "hashes": [ - "sha256:d33e1d3c09cd95154176aa8a7319418e52129fc482dd56d8a8ad7c24500d543e" - ], - "index": "pypi", - "version": "==0.1.5" - }, - "flask-wtf": { - "hashes": [ - "sha256:57b3faf6fe5d6168bda0c36b0df1d05770f8e205e18332d0376ddb954d17aef2", - "sha256:d417e3a0008b5ba583da1763e4db0f55a1269d9dd91dcc3eb3c026d3c5dbd720" - ], - "index": "pypi", - "version": "==0.14.3" - }, - "idna": { - "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" - ], - "version": "==2.9" - }, - "itsdangerous": { - "hashes": [ - "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", - "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" - ], - "version": "==1.1.0" - }, - "jinja2": { - "hashes": [ - "sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250", - "sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49" - ], - "version": "==2.11.1" - }, - "lxml": { - "hashes": [ - "sha256:06d4e0bbb1d62e38ae6118406d7cdb4693a3fa34ee3762238bcb96c9e36a93cd", - "sha256:0701f7965903a1c3f6f09328c1278ac0eee8f56f244e66af79cb224b7ef3801c", - "sha256:1f2c4ec372bf1c4a2c7e4bb20845e8bcf8050365189d86806bad1e3ae473d081", - "sha256:4235bc124fdcf611d02047d7034164897ade13046bda967768836629bc62784f", - "sha256:5828c7f3e615f3975d48f40d4fe66e8a7b25f16b5e5705ffe1d22e43fb1f6261", - "sha256:585c0869f75577ac7a8ff38d08f7aac9033da2c41c11352ebf86a04652758b7a", - "sha256:5d467ce9c5d35b3bcc7172c06320dddb275fea6ac2037f72f0a4d7472035cea9", - "sha256:63dbc21efd7e822c11d5ddbedbbb08cd11a41e0032e382a0fd59b0b08e405a3a", - "sha256:7bc1b221e7867f2e7ff1933165c0cec7153dce93d0cdba6554b42a8beb687bdb", - "sha256:8620ce80f50d023d414183bf90cc2576c2837b88e00bea3f33ad2630133bbb60", - "sha256:8a0ebda56ebca1a83eb2d1ac266649b80af8dd4b4a3502b2c1e09ac2f88fe128", - "sha256:90ed0e36455a81b25b7034038e40880189169c308a3df360861ad74da7b68c1a", - "sha256:95e67224815ef86924fbc2b71a9dbd1f7262384bca4bc4793645794ac4200717", - "sha256:afdb34b715daf814d1abea0317b6d672476b498472f1e5aacbadc34ebbc26e89", - "sha256:b4b2c63cc7963aedd08a5f5a454c9f67251b1ac9e22fd9d72836206c42dc2a72", - "sha256:d068f55bda3c2c3fcaec24bd083d9e2eede32c583faf084d6e4b9daaea77dde8", - "sha256:d5b3c4b7edd2e770375a01139be11307f04341ec709cf724e0f26ebb1eef12c3", - "sha256:deadf4df349d1dcd7b2853a2c8796593cc346600726eff680ed8ed11812382a7", - "sha256:df533af6f88080419c5a604d0d63b2c33b1c0c4409aba7d0cb6de305147ea8c8", - "sha256:e4aa948eb15018a657702fee0b9db47e908491c64d36b4a90f59a64741516e77", - "sha256:e5d842c73e4ef6ed8c1bd77806bf84a7cb535f9c0cf9b2c74d02ebda310070e1", - "sha256:ebec08091a22c2be870890913bdadd86fcd8e9f0f22bcb398abd3af914690c15", - "sha256:edc15fcfd77395e24543be48871c251f38132bb834d9fdfdad756adb6ea37679", - "sha256:f2b74784ed7e0bc2d02bd53e48ad6ba523c9b36c194260b7a5045071abbb1012", - "sha256:fa071559f14bd1e92077b1b5f6c22cf09756c6de7139370249eb372854ce51e6", - "sha256:fd52e796fee7171c4361d441796b64df1acfceb51f29e545e812f16d023c4bbc", - "sha256:fe976a0f1ef09b3638778024ab9fb8cde3118f203364212c198f71341c0715ca" - ], - "index": "pypi", - "version": "==4.5.0" - }, - "mako": { - "hashes": [ - "sha256:2984a6733e1d472796ceef37ad48c26f4a984bb18119bb2dbc37a44d8f6e75a4" - ], - "version": "==1.1.1" - }, - "markupsafe": { - "hashes": [ - "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", - "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", - "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", - "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", - "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", - "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", - "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", - "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", - "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", - "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", - "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", - "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", - "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", - "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", - "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", - "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", - "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", - "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", - "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", - "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", - "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", - "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", - "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", - "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", - "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", - "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", - "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", - "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", - "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", - "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", - "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" - ], - "version": "==1.1.1" - }, - "mimerender": { - "hashes": [ - "sha256:e7f1377efee18c3f562cee54907a3329223c824332889fb74b745ddfd0a9b1c6" - ], - "version": "==0.6.0" - }, - "multidict": { - "hashes": [ - "sha256:317f96bc0950d249e96d8d29ab556d01dd38888fbe68324f46fd834b430169f1", - "sha256:42f56542166040b4474c0c608ed051732033cd821126493cf25b6c276df7dd35", - "sha256:4b7df040fb5fe826d689204f9b544af469593fb3ff3a069a6ad3409f742f5928", - "sha256:544fae9261232a97102e27a926019100a9db75bec7b37feedd74b3aa82f29969", - "sha256:620b37c3fea181dab09267cd5a84b0f23fa043beb8bc50d8474dd9694de1fa6e", - "sha256:6e6fef114741c4d7ca46da8449038ec8b1e880bbe68674c01ceeb1ac8a648e78", - "sha256:7774e9f6c9af3f12f296131453f7b81dabb7ebdb948483362f5afcaac8a826f1", - "sha256:85cb26c38c96f76b7ff38b86c9d560dea10cf3459bb5f4caf72fc1bb932c7136", - "sha256:a326f4240123a2ac66bb163eeba99578e9d63a8654a59f4688a79198f9aa10f8", - "sha256:ae402f43604e3b2bc41e8ea8b8526c7fa7139ed76b0d64fc48e28125925275b2", - "sha256:aee283c49601fa4c13adc64c09c978838a7e812f85377ae130a24d7198c0331e", - "sha256:b51249fdd2923739cd3efc95a3d6c363b67bbf779208e9f37fd5e68540d1a4d4", - "sha256:bb519becc46275c594410c6c28a8a0adc66fe24fef154a9addea54c1adb006f5", - "sha256:c2c37185fb0af79d5c117b8d2764f4321eeb12ba8c141a95d0aa8c2c1d0a11dd", - "sha256:dc561313279f9d05a3d0ffa89cd15ae477528ea37aa9795c4654588a3287a9ab", - "sha256:e439c9a10a95cb32abd708bb8be83b2134fa93790a4fb0535ca36db3dda94d20", - "sha256:fc3b4adc2ee8474cb3cd2a155305d5f8eda0a9c91320f83e55748e1fcb68f8e3" - ], - "version": "==4.7.5" - }, - "opml": { - "hashes": [ - "sha256:db1eef2a251b8af33e2eabb62baf922006dbd8c66c742931090e331a0362a770" - ], - "index": "pypi", - "version": "==0.5" - }, - "psycopg2-binary": { - "hashes": [ - "sha256:040234f8a4a8dfd692662a8308d78f63f31a97e1c42d2480e5e6810c48966a29", - "sha256:086f7e89ec85a6704db51f68f0dcae432eff9300809723a6e8782c41c2f48e03", - "sha256:18ca813fdb17bc1db73fe61b196b05dd1ca2165b884dd5ec5568877cabf9b039", - "sha256:19dc39616850342a2a6db70559af55b22955f86667b5f652f40c0e99253d9881", - "sha256:2166e770cb98f02ed5ee2b0b569d40db26788e0bf2ec3ae1a0d864ea6f1d8309", - "sha256:3a2522b1d9178575acee4adf8fd9f979f9c0449b00b4164bb63c3475ea6528ed", - "sha256:3aa773580f85a28ffdf6f862e59cb5a3cc7ef6885121f2de3fca8d6ada4dbf3b", - "sha256:3b5deaa3ee7180585a296af33e14c9b18c218d148e735c7accf78130765a47e3", - "sha256:407af6d7e46593415f216c7f56ba087a9a42bd6dc2ecb86028760aa45b802bd7", - "sha256:4c3c09fb674401f630626310bcaf6cd6285daf0d5e4c26d6e55ca26a2734e39b", - "sha256:4c6717962247445b4f9e21c962ea61d2e884fc17df5ddf5e35863b016f8a1f03", - "sha256:50446fae5681fc99f87e505d4e77c9407e683ab60c555ec302f9ac9bffa61103", - "sha256:5057669b6a66aa9ca118a2a860159f0ee3acf837eda937bdd2a64f3431361a2d", - "sha256:5dd90c5438b4f935c9d01fcbad3620253da89d19c1f5fca9158646407ed7df35", - "sha256:659c815b5b8e2a55193ede2795c1e2349b8011497310bb936da7d4745652823b", - "sha256:69b13fdf12878b10dc6003acc8d0abf3ad93e79813fd5f3812497c1c9fb9be49", - "sha256:7a1cb80e35e1ccea3e11a48afe65d38744a0e0bde88795cc56a4d05b6e4f9d70", - "sha256:7e6e3c52e6732c219c07bd97fff6c088f8df4dae3b79752ee3a817e6f32e177e", - "sha256:7f42a8490c4fe854325504ce7a6e4796b207960dabb2cbafe3c3959cb00d1d7e", - "sha256:84156313f258eafff716b2961644a4483a9be44a5d43551d554844d15d4d224e", - "sha256:8578d6b8192e4c805e85f187bc530d0f52ba86c39172e61cd51f68fddd648103", - "sha256:890167d5091279a27e2505ff0e1fb273f8c48c41d35c5b92adbf4af80e6b2ed6", - "sha256:98e10634792ac0e9e7a92a76b4991b44c2325d3e7798270a808407355e7bb0a1", - "sha256:9aadff9032e967865f9778485571e93908d27dab21d0fdfdec0ca779bb6f8ad9", - "sha256:9f24f383a298a0c0f9b3113b982e21751a8ecde6615494a3f1470eb4a9d70e9e", - "sha256:a73021b44813b5c84eda4a3af5826dd72356a900bac9bd9dd1f0f81ee1c22c2f", - "sha256:afd96845e12638d2c44d213d4810a08f4dc4a563f9a98204b7428e567014b1cd", - "sha256:b73ddf033d8cd4cc9dfed6324b1ad2a89ba52c410ef6877998422fcb9c23e3a8", - "sha256:b8f490f5fad1767a1331df1259763b3bad7d7af12a75b950c2843ba319b2415f", - "sha256:dbc5cd56fff1a6152ca59445178652756f4e509f672e49ccdf3d79c1043113a4", - "sha256:eac8a3499754790187bb00574ab980df13e754777d346f85e0ff6df929bcd964", - "sha256:eaed1c65f461a959284649e37b5051224f4db6ebdc84e40b5e65f2986f101a08" - ], - "index": "pypi", - "version": "==2.8.4" - }, - "python-dateutil": { - "hashes": [ - "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", - "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" - ], - "index": "pypi", - "version": "==2.8.1" - }, - "python-editor": { - "hashes": [ - "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", - "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", - "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8" - ], - "version": "==1.0.4" - }, - "python-http-client": { - "hashes": [ - "sha256:10bfbc7ecd25e55215680ce2827b1a3bf4e06ba4a59758039d047d6104b6f169" - ], - "version": "==3.2.5" - }, - "python-mimeparse": { - "hashes": [ - "sha256:76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78", - "sha256:a295f03ff20341491bfe4717a39cd0a8cc9afad619ba44b77e86b0ab8a2b8282" - ], - "version": "==1.6.0" - }, - "pytz": { - "hashes": [ - "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", - "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be" - ], - "version": "==2019.3" - }, - "requests": { - "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" - ], - "index": "pypi", - "version": "==2.23.0" - }, - "requests-futures": { - "hashes": [ - "sha256:35547502bf1958044716a03a2f47092a89efe8f9789ab0c4c528d9c9c30bc148" - ], - "index": "pypi", - "version": "==1.0.0" - }, - "sendgrid": { - "hashes": [ - "sha256:8112a3e2edd4cef208ed46335f058d2782397b395b96a472dcfd5e2618cf621b", - "sha256:e2b8bd90522f22a22d2557aee9cb77d0c372a8c4ca35e65d062b4ecaf0b9a4bd" - ], - "index": "pypi", - "version": "==6.1.2" - }, - "six": { - "hashes": [ - "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", - "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" - ], - "version": "==1.14.0" - }, - "soupsieve": { - "hashes": [ - "sha256:e914534802d7ffd233242b785229d5ba0766a7f487385e3f714446a07bf540ae", - "sha256:fcd71e08c0aee99aca1b73f45478549ee7e7fc006d51b37bec9e9def7dc22b69" - ], - "version": "==2.0" - }, - "sqlalchemy": { - "hashes": [ - "sha256:64a7b71846db6423807e96820993fa12a03b89127d278290ca25c0b11ed7b4fb" - ], - "index": "pypi", - "version": "==1.3.13" - }, - "urllib3": { - "hashes": [ - "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", - "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" - ], - "version": "==1.25.8" - }, - "werkzeug": { - "hashes": [ - "sha256:169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096", - "sha256:6dc65cf9091cf750012f56f2cad759fa9e879f511b5ff8685e456b4e3bf90d16" - ], - "version": "==1.0.0" - }, - "wtforms": { - "hashes": [ - "sha256:0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61", - "sha256:e3ee092c827582c50877cdbd49e9ce6d2c5c1f6561f849b3b068c1b8029626f1" - ], - "index": "pypi", - "version": "==2.2.1" - }, - "yarl": { - "hashes": [ - "sha256:0c2ab325d33f1b824734b3ef51d4d54a54e0e7a23d13b86974507602334c2cce", - "sha256:0ca2f395591bbd85ddd50a82eb1fde9c1066fafe888c5c7cc1d810cf03fd3cc6", - "sha256:2098a4b4b9d75ee352807a95cdf5f10180db903bc5b7270715c6bbe2551f64ce", - "sha256:25e66e5e2007c7a39541ca13b559cd8ebc2ad8fe00ea94a2aad28a9b1e44e5ae", - "sha256:26d7c90cb04dee1665282a5d1a998defc1a9e012fdca0f33396f81508f49696d", - "sha256:308b98b0c8cd1dfef1a0311dc5e38ae8f9b58349226aa0533f15a16717ad702f", - "sha256:3ce3d4f7c6b69c4e4f0704b32eca8123b9c58ae91af740481aa57d7857b5e41b", - "sha256:58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b", - "sha256:5b10eb0e7f044cf0b035112446b26a3a2946bca9d7d7edb5e54a2ad2f6652abb", - "sha256:6faa19d3824c21bcbfdfce5171e193c8b4ddafdf0ac3f129ccf0cdfcb083e462", - "sha256:944494be42fa630134bf907714d40207e646fd5a94423c90d5b514f7b0713fea", - "sha256:a161de7e50224e8e3de6e184707476b5a989037dcb24292b391a3d66ff158e70", - "sha256:a4844ebb2be14768f7994f2017f70aca39d658a96c786211be5ddbe1c68794c1", - "sha256:c2b509ac3d4b988ae8769901c66345425e361d518aecbe4acbfc2567e416626a", - "sha256:c9959d49a77b0e07559e579f38b2f3711c2b8716b8410b320bf9713013215a1b", - "sha256:d8cdee92bc930d8b09d8bd2043cedd544d9c8bd7436a77678dd602467a993080", - "sha256:e15199cdb423316e15f108f51249e44eb156ae5dba232cb73be555324a1d49c2" - ], - "version": "==1.4.2" - } - }, - "develop": {} -} diff --git a/Procfile b/Procfile deleted file mode 100644 index 7c8bf856..00000000 --- a/Procfile +++ /dev/null @@ -1,2 +0,0 @@ -web: python src/runserver.py -init: python src/manager.py db_create @@ -10,14 +10,14 @@ https://todo.sr.ht/~cedric/newspipe ## Main features -* can be easily deployed on Heroku or on your server; +* easy to deploy; * multiple users can use a Newspipe instance; * a RESTful API to manage your articles (or connect your own crawler); * data liberation: export and import all your account with a JSON file; * export and import feeds with OPML files; * favorite articles; * detection of inactive feeds; -* Pinboard and reddit; +* share on Pinboard and reddit; * personal management of bookmarks (with import from Pinboard). The core technologies are [Flask](http://flask.pocoo.org), @@ -32,13 +32,6 @@ A documentation is available [here](https://newspipe.readthedocs.io) and provides different ways to [install Newspipe](https://newspipe.readthedocs.io/en/latest/deployment.html). -Test Newspipe on Heroku: - -[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://builds.sr.ht/~cedric/Stegano) - -It is important to specify an application name and the URL of your instance -(*PLATFORM_URL*) through the Heroku form. - ## Deployment @@ -51,15 +44,15 @@ $ sudo apt-get install postgresql npm ## Configure and install the application ```bash -$ git clone https://git.sr.ht/~cedric/Newspipe +$ git clone https://git.sr.ht/~cedric/newspipe $ cd newspipe/ -$ pipenv install +$ poetry install ✨🍰✨ $ npm install -$ cp src/conf/conf.cfg-sample src/conf/conf.cfg -$ pipenv shell -$ python src/manager.py db_create -$ python src/runserver.py +$ cp newspipe/conf/conf.cfg-sample newspipe/conf/conf.cfg +$ poetry shell +$ python newspipe/manager.py db_create +$ python newspipe/runserver.py * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) ``` diff --git a/app.json b/app.json deleted file mode 100644 index 48e1b6e5..00000000 --- a/app.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "Newspipe", - "description": "A news aggregator that can be deployed on Heroku.", - "keywords": [ - "aggregator", - "news", - "RSS" - ], - "website": "https://git.sr.ht/~cedric/Newspipe", - "repository": "https://git.sr.ht/~cedric/Newspipe", - "logo": "https://git.sr.ht/~cedric/Newspipe/blob/master/src/web/static/img/newspipe.png", - "scripts": { - "postdeploy": "python src/manager.py db_create" - }, - "addons": [ - "heroku-postgresql:hobby-dev", - "scheduler:standard" - ], - "buildpacks": [ - { - "url": "https://github.com/heroku/heroku-buildpack-nodejs" - }, - { - "url": "https://github.com/ejholmes/heroku-buildpack-bower" - }, - { - "url": "heroku/python" - } - ], - "env": { - "PLATFORM_URL": { - "description": "Address of your Newspipe instance (for example: https://YOUR-APPLICATION-NAME.herokuapp.com/)", - "required": true, - "value": "" - }, - "ADMIN_EMAIL": { - "description": "Administrator email address.", - "required": true, - "value": "" - }, - "ADMIN_PASSWORD": { - "description": "Your password.", - "required": true, - "value": "" - }, - "SECRET_KEY": { - "description": "A secret token in order to use sessions.", - "required": true, - "value": "iYtWRvAl!S7+Gz8kabK3@CBvr" - }, - "SELF_REGISTRATION": { - "description": "If set to True, users will be able to create new accounts.", - "required": true, - "value": "false" - }, - "SECURITY_PASSWORD_SALT": { - "description": "A secret to confirm account creation with a link in an email.", - "required": true, - "value": "^HEpK@L&cP5dMR^kiz8IIZj8q" - }, - "TOKEN_VALIDITY_PERIOD": { - "description": "Validity period (in seconds) of the account confirmation link sent by email.", - "required": true, - "value": "3600" - }, - "HEROKU": "1", - "CDN_ADDRESS": "https://cdn.cedricbonhomme.org/", - "NOTIFICATION_EMAIL": "newspipe@no-reply.com", - "SENDGRID_API_KEY": "REDACTED", - "CRAWLER_RESOLV": { - "description": "Specify if the crawler should try to resolve link of articles behind proxies.", - "value": "false" - }, - "FEED_REFRESH_INTERVAL": { - "description": "Feeds refresh interval (in minutes) for the crawler.", - "value": "120" - } - } -} @@ -9,13 +9,13 @@ sudo apt-get install npm -pipenv install +poetry install npm install -cp src/conf/conf.cfg-sample src/conf/conf.cfg +cp newspipe/conf/conf.cfg-sample newspipe/conf/conf.cfg # Delete default database configuration -sed -i '/database/d' src/conf/conf.cfg -sed -i '/database_url/d' src/conf/conf.cfg +sed -i '/database/d' newspipe/conf/conf.cfg +sed -i '/database_url/d' newspipe/conf/conf.cfg # Configuration of the database if [ "$1" == postgres ]; then @@ -30,21 +30,21 @@ if [ "$1" == postgres ]; then echo "GRANT ALL PRIVILEGES ON DATABASE aggregator TO pgsqluser;" | sudo -u postgres psql # Add configuration lines for PostgreSQL - echo '[database]' >> src/conf/conf.cfg - echo 'database_url = postgres://pgsqluser:pgsqlpwd@127.0.0.1:5433/aggregator' >> src/conf/conf.cfg + echo '[database]' >> newspipe/conf/conf.cfg + echo 'database_url = postgres://pgsqluser:pgsqlpwd@127.0.0.1:5433/aggregator' >> newspipe/conf/conf.cfg elif [ "$1" == sqlite ]; then # Add configuration lines for SQLite echo "Configuring the SQLite database..." - echo '[database]' >> src/conf/conf.cfg - echo 'database_url = sqlite:///newspipe.db' >> src/conf/conf.cfg + echo '[database]' >> newspipe/conf/conf.cfg + echo 'database_url = sqlite:///newspipe.db' >> newspipe/conf/conf.cfg fi -pipenv shell +poetry shell echo "Initialization of the database..." -python src/manager.py db_empty -python src/manager.py db_create +python newspipe/manager.py db_empty +python newspipe/manager.py db_create echo "Launching Newspipe..." -python src/runserver.py +python newspipe/runserver.py diff --git a/src/bootstrap.py b/newspipe/bootstrap.py index 8e5413e0..8e5413e0 100644 --- a/src/bootstrap.py +++ b/newspipe/bootstrap.py diff --git a/src/conf.py b/newspipe/conf.py index ced602ca..ced602ca 100644 --- a/src/conf.py +++ b/newspipe/conf.py diff --git a/src/conf/conf.cfg-sample b/newspipe/conf/conf.cfg-sample index ed14a4d9..ed14a4d9 100644 --- a/src/conf/conf.cfg-sample +++ b/newspipe/conf/conf.cfg-sample diff --git a/src/crawler/default_crawler.py b/newspipe/crawler/default_crawler.py index 79a746b5..79a746b5 100644 --- a/src/crawler/default_crawler.py +++ b/newspipe/crawler/default_crawler.py diff --git a/src/lib/__init__.py b/newspipe/lib/__init__.py index e69de29b..e69de29b 100644 --- a/src/lib/__init__.py +++ b/newspipe/lib/__init__.py diff --git a/src/lib/article_utils.py b/newspipe/lib/article_utils.py index 9891e29f..9891e29f 100644 --- a/src/lib/article_utils.py +++ b/newspipe/lib/article_utils.py diff --git a/src/lib/data.py b/newspipe/lib/data.py index 067a0a04..067a0a04 100644 --- a/src/lib/data.py +++ b/newspipe/lib/data.py diff --git a/src/lib/feed_utils.py b/newspipe/lib/feed_utils.py index c2d4ca6e..c2d4ca6e 100644 --- a/src/lib/feed_utils.py +++ b/newspipe/lib/feed_utils.py diff --git a/src/lib/misc_utils.py b/newspipe/lib/misc_utils.py index 8fb2d284..8fb2d284 100755 --- a/src/lib/misc_utils.py +++ b/newspipe/lib/misc_utils.py diff --git a/src/lib/utils.py b/newspipe/lib/utils.py index d206b769..d206b769 100644 --- a/src/lib/utils.py +++ b/newspipe/lib/utils.py diff --git a/src/manager.py b/newspipe/manager.py index 9535ac59..9535ac59 100755 --- a/src/manager.py +++ b/newspipe/manager.py diff --git a/src/notifications/emails.py b/newspipe/notifications/emails.py index 098c29bf..098c29bf 100644 --- a/src/notifications/emails.py +++ b/newspipe/notifications/emails.py diff --git a/src/notifications/notifications.py b/newspipe/notifications/notifications.py index e775f4b9..e775f4b9 100644 --- a/src/notifications/notifications.py +++ b/newspipe/notifications/notifications.py diff --git a/src/runserver.py b/newspipe/runserver.py index 287a52f8..287a52f8 100755 --- a/src/runserver.py +++ b/newspipe/runserver.py diff --git a/src/web/__init__.py b/newspipe/web/__init__.py index ca5ddbe1..ca5ddbe1 100644 --- a/src/web/__init__.py +++ b/newspipe/web/__init__.py diff --git a/src/web/controllers/__init__.py b/newspipe/web/controllers/__init__.py index 5fbc2619..5fbc2619 100644 --- a/src/web/controllers/__init__.py +++ b/newspipe/web/controllers/__init__.py diff --git a/src/web/controllers/abstract.py b/newspipe/web/controllers/abstract.py index 764ff305..764ff305 100644 --- a/src/web/controllers/abstract.py +++ b/newspipe/web/controllers/abstract.py diff --git a/src/web/controllers/article.py b/newspipe/web/controllers/article.py index d7058229..d7058229 100644 --- a/src/web/controllers/article.py +++ b/newspipe/web/controllers/article.py diff --git a/src/web/controllers/bookmark.py b/newspipe/web/controllers/bookmark.py index b5413243..b5413243 100644 --- a/src/web/controllers/bookmark.py +++ b/newspipe/web/controllers/bookmark.py diff --git a/src/web/controllers/category.py b/newspipe/web/controllers/category.py index fef5ca81..fef5ca81 100644 --- a/src/web/controllers/category.py +++ b/newspipe/web/controllers/category.py diff --git a/src/web/controllers/feed.py b/newspipe/web/controllers/feed.py index d75cd994..d75cd994 100644 --- a/src/web/controllers/feed.py +++ b/newspipe/web/controllers/feed.py diff --git a/src/web/controllers/icon.py b/newspipe/web/controllers/icon.py index 07c4a4ef..07c4a4ef 100644 --- a/src/web/controllers/icon.py +++ b/newspipe/web/controllers/icon.py diff --git a/src/web/controllers/tag.py b/newspipe/web/controllers/tag.py index 35fd5613..35fd5613 100644 --- a/src/web/controllers/tag.py +++ b/newspipe/web/controllers/tag.py diff --git a/src/web/controllers/user.py b/newspipe/web/controllers/user.py index 6ab04d44..6ab04d44 100644 --- a/src/web/controllers/user.py +++ b/newspipe/web/controllers/user.py diff --git a/src/web/decorators.py b/newspipe/web/decorators.py index 3835f646..3835f646 100644 --- a/src/web/decorators.py +++ b/newspipe/web/decorators.py diff --git a/src/web/forms.py b/newspipe/web/forms.py index 7b1893e2..7b1893e2 100644 --- a/src/web/forms.py +++ b/newspipe/web/forms.py diff --git a/src/web/js/actions/MenuActions.js b/newspipe/web/js/actions/MenuActions.js index 824610d8..824610d8 100644 --- a/src/web/js/actions/MenuActions.js +++ b/newspipe/web/js/actions/MenuActions.js diff --git a/src/web/js/actions/MiddlePanelActions.js b/newspipe/web/js/actions/MiddlePanelActions.js index 700814d4..700814d4 100644 --- a/src/web/js/actions/MiddlePanelActions.js +++ b/newspipe/web/js/actions/MiddlePanelActions.js diff --git a/src/web/js/actions/RightPanelActions.js b/newspipe/web/js/actions/RightPanelActions.js index 5d78e001..5d78e001 100644 --- a/src/web/js/actions/RightPanelActions.js +++ b/newspipe/web/js/actions/RightPanelActions.js diff --git a/src/web/js/app.js b/newspipe/web/js/app.js index 7837e6ae..7837e6ae 100644 --- a/src/web/js/app.js +++ b/newspipe/web/js/app.js diff --git a/src/web/js/components/MainApp.react.js b/newspipe/web/js/components/MainApp.react.js index 32bb663e..32bb663e 100644 --- a/src/web/js/components/MainApp.react.js +++ b/newspipe/web/js/components/MainApp.react.js diff --git a/src/web/js/components/Menu.react.js b/newspipe/web/js/components/Menu.react.js index 64672240..64672240 100644 --- a/src/web/js/components/Menu.react.js +++ b/newspipe/web/js/components/Menu.react.js diff --git a/src/web/js/components/MiddlePanel.react.js b/newspipe/web/js/components/MiddlePanel.react.js index fc7c763a..fc7c763a 100644 --- a/src/web/js/components/MiddlePanel.react.js +++ b/newspipe/web/js/components/MiddlePanel.react.js diff --git a/src/web/js/components/Navbar.react.js b/newspipe/web/js/components/Navbar.react.js index 83f3c72c..83f3c72c 100644 --- a/src/web/js/components/Navbar.react.js +++ b/newspipe/web/js/components/Navbar.react.js diff --git a/src/web/js/components/RightPanel.react.js b/newspipe/web/js/components/RightPanel.react.js index 6384cdfe..6384cdfe 100644 --- a/src/web/js/components/RightPanel.react.js +++ b/newspipe/web/js/components/RightPanel.react.js diff --git a/src/web/js/components/time.react.js b/newspipe/web/js/components/time.react.js index 07e1fbdf..07e1fbdf 100644 --- a/src/web/js/components/time.react.js +++ b/newspipe/web/js/components/time.react.js diff --git a/src/web/js/constants/JarrConstants.js b/newspipe/web/js/constants/JarrConstants.js index 78e8bf04..78e8bf04 100644 --- a/src/web/js/constants/JarrConstants.js +++ b/newspipe/web/js/constants/JarrConstants.js diff --git a/src/web/js/dispatcher/JarrDispatcher.js b/newspipe/web/js/dispatcher/JarrDispatcher.js index 56da186f..56da186f 100644 --- a/src/web/js/dispatcher/JarrDispatcher.js +++ b/newspipe/web/js/dispatcher/JarrDispatcher.js diff --git a/src/web/js/dispatcher/__tests__/AppDispatcher-test.js b/newspipe/web/js/dispatcher/__tests__/AppDispatcher-test.js index d3a35fc5..d3a35fc5 100644 --- a/src/web/js/dispatcher/__tests__/AppDispatcher-test.js +++ b/newspipe/web/js/dispatcher/__tests__/AppDispatcher-test.js diff --git a/src/web/js/stores/MenuStore.js b/newspipe/web/js/stores/MenuStore.js index 770bc501..770bc501 100644 --- a/src/web/js/stores/MenuStore.js +++ b/newspipe/web/js/stores/MenuStore.js diff --git a/src/web/js/stores/MiddlePanelStore.js b/newspipe/web/js/stores/MiddlePanelStore.js index c554f929..c554f929 100644 --- a/src/web/js/stores/MiddlePanelStore.js +++ b/newspipe/web/js/stores/MiddlePanelStore.js diff --git a/src/web/js/stores/RightPanelStore.js b/newspipe/web/js/stores/RightPanelStore.js index 6c268dfd..6c268dfd 100644 --- a/src/web/js/stores/RightPanelStore.js +++ b/newspipe/web/js/stores/RightPanelStore.js diff --git a/src/web/js/stores/__tests__/TodoStore-test.js b/newspipe/web/js/stores/__tests__/TodoStore-test.js index 6da6cd3c..6da6cd3c 100644 --- a/src/web/js/stores/__tests__/TodoStore-test.js +++ b/newspipe/web/js/stores/__tests__/TodoStore-test.js diff --git a/src/web/lib/__init__.py b/newspipe/web/lib/__init__.py index e69de29b..e69de29b 100644 --- a/src/web/lib/__init__.py +++ b/newspipe/web/lib/__init__.py diff --git a/src/web/lib/user_utils.py b/newspipe/web/lib/user_utils.py index f78a6ed6..f78a6ed6 100644 --- a/src/web/lib/user_utils.py +++ b/newspipe/web/lib/user_utils.py diff --git a/src/web/lib/view_utils.py b/newspipe/web/lib/view_utils.py index 1d8c6aed..1d8c6aed 100644 --- a/src/web/lib/view_utils.py +++ b/newspipe/web/lib/view_utils.py diff --git a/src/web/models/__init__.py b/newspipe/web/models/__init__.py index bfb1368c..bfb1368c 100644 --- a/src/web/models/__init__.py +++ b/newspipe/web/models/__init__.py diff --git a/src/web/models/article.py b/newspipe/web/models/article.py index d55e59c1..d55e59c1 100644 --- a/src/web/models/article.py +++ b/newspipe/web/models/article.py diff --git a/src/web/models/bookmark.py b/newspipe/web/models/bookmark.py index eb6b73e3..eb6b73e3 100644 --- a/src/web/models/bookmark.py +++ b/newspipe/web/models/bookmark.py diff --git a/src/web/models/category.py b/newspipe/web/models/category.py index 2da7809a..2da7809a 100644 --- a/src/web/models/category.py +++ b/newspipe/web/models/category.py diff --git a/src/web/models/feed.py b/newspipe/web/models/feed.py index fc0b64cb..fc0b64cb 100644 --- a/src/web/models/feed.py +++ b/newspipe/web/models/feed.py diff --git a/src/web/models/icon.py b/newspipe/web/models/icon.py index adc9cf69..adc9cf69 100644 --- a/src/web/models/icon.py +++ b/newspipe/web/models/icon.py diff --git a/src/web/models/right_mixin.py b/newspipe/web/models/right_mixin.py index 1c316f95..1c316f95 100644 --- a/src/web/models/right_mixin.py +++ b/newspipe/web/models/right_mixin.py diff --git a/src/web/models/role.py b/newspipe/web/models/role.py index 0a2ecd4a..0a2ecd4a 100644 --- a/src/web/models/role.py +++ b/newspipe/web/models/role.py diff --git a/src/web/models/tag.py b/newspipe/web/models/tag.py index 76467c0b..76467c0b 100644 --- a/src/web/models/tag.py +++ b/newspipe/web/models/tag.py diff --git a/src/web/models/user.py b/newspipe/web/models/user.py index 4d65c3c5..4d65c3c5 100644 --- a/src/web/models/user.py +++ b/newspipe/web/models/user.py diff --git a/src/web/static/css/bootstrap-theme.min.css b/newspipe/web/static/css/bootstrap-theme.min.css index 06469c8d..06469c8d 120000 --- a/src/web/static/css/bootstrap-theme.min.css +++ b/newspipe/web/static/css/bootstrap-theme.min.css diff --git a/src/web/static/css/bootstrap-theme.min.css.map b/newspipe/web/static/css/bootstrap-theme.min.css.map index 0448a4a0..0448a4a0 120000 --- a/src/web/static/css/bootstrap-theme.min.css.map +++ b/newspipe/web/static/css/bootstrap-theme.min.css.map diff --git a/src/web/static/css/bootstrap.min.css b/newspipe/web/static/css/bootstrap.min.css index 30c399cb..30c399cb 120000 --- a/src/web/static/css/bootstrap.min.css +++ b/newspipe/web/static/css/bootstrap.min.css diff --git a/src/web/static/css/bootstrap.min.css.map b/newspipe/web/static/css/bootstrap.min.css.map index 146f88dd..146f88dd 120000 --- a/src/web/static/css/bootstrap.min.css.map +++ b/newspipe/web/static/css/bootstrap.min.css.map diff --git a/src/web/static/css/customized-bootstrap.css b/newspipe/web/static/css/customized-bootstrap.css index c385c908..c385c908 100644 --- a/src/web/static/css/customized-bootstrap.css +++ b/newspipe/web/static/css/customized-bootstrap.css diff --git a/src/web/static/css/one-page-app.css b/newspipe/web/static/css/one-page-app.css index f8c443c3..f8c443c3 100644 --- a/src/web/static/css/one-page-app.css +++ b/newspipe/web/static/css/one-page-app.css diff --git a/src/web/static/fonts b/newspipe/web/static/fonts index 4097ea8b..4097ea8b 120000 --- a/src/web/static/fonts +++ b/newspipe/web/static/fonts diff --git a/src/web/static/img/favicon.ico b/newspipe/web/static/img/favicon.ico Binary files differindex 5b056c1e..5b056c1e 100644 --- a/src/web/static/img/favicon.ico +++ b/newspipe/web/static/img/favicon.ico diff --git a/src/web/static/img/newspipe.png b/newspipe/web/static/img/newspipe.png Binary files differindex c3ba5029..c3ba5029 100644 --- a/src/web/static/img/newspipe.png +++ b/newspipe/web/static/img/newspipe.png diff --git a/src/web/static/img/newspipe.svg b/newspipe/web/static/img/newspipe.svg index be22ae42..be22ae42 100644 --- a/src/web/static/img/newspipe.svg +++ b/newspipe/web/static/img/newspipe.svg diff --git a/src/web/static/img/pinboard.png b/newspipe/web/static/img/pinboard.png Binary files differindex 6dddc10b..6dddc10b 100644 --- a/src/web/static/img/pinboard.png +++ b/newspipe/web/static/img/pinboard.png diff --git a/src/web/static/img/reddit.png b/newspipe/web/static/img/reddit.png Binary files differindex 2d615f2a..2d615f2a 100755 --- a/src/web/static/img/reddit.png +++ b/newspipe/web/static/img/reddit.png diff --git a/src/web/static/img/twitter.png b/newspipe/web/static/img/twitter.png Binary files differindex fc11c4ce..fc11c4ce 100644 --- a/src/web/static/img/twitter.png +++ b/newspipe/web/static/img/twitter.png diff --git a/src/web/static/js/articles.js b/newspipe/web/static/js/articles.js index 350723a4..350723a4 100644 --- a/src/web/static/js/articles.js +++ b/newspipe/web/static/js/articles.js diff --git a/src/web/static/js/feed.js b/newspipe/web/static/js/feed.js index ceef58fc..ceef58fc 100644 --- a/src/web/static/js/feed.js +++ b/newspipe/web/static/js/feed.js diff --git a/src/web/static/js/jquery.js b/newspipe/web/static/js/jquery.js index e5ace116..e5ace116 100644 --- a/src/web/static/js/jquery.js +++ b/newspipe/web/static/js/jquery.js diff --git a/src/web/templates/about.html b/newspipe/web/templates/about.html index 4cfafb79..4cfafb79 100644 --- a/src/web/templates/about.html +++ b/newspipe/web/templates/about.html diff --git a/src/web/templates/about_more.html b/newspipe/web/templates/about_more.html index d4353a15..d4353a15 100644 --- a/src/web/templates/about_more.html +++ b/newspipe/web/templates/about_more.html diff --git a/src/web/templates/admin/create_user.html b/newspipe/web/templates/admin/create_user.html index 40aad468..40aad468 100644 --- a/src/web/templates/admin/create_user.html +++ b/newspipe/web/templates/admin/create_user.html diff --git a/src/web/templates/admin/dashboard.html b/newspipe/web/templates/admin/dashboard.html index 350a2e47..350a2e47 100644 --- a/src/web/templates/admin/dashboard.html +++ b/newspipe/web/templates/admin/dashboard.html diff --git a/src/web/templates/article.html b/newspipe/web/templates/article.html index a95d86d9..a95d86d9 100644 --- a/src/web/templates/article.html +++ b/newspipe/web/templates/article.html diff --git a/src/web/templates/article_pub.html b/newspipe/web/templates/article_pub.html index e810d18f..e810d18f 100644 --- a/src/web/templates/article_pub.html +++ b/newspipe/web/templates/article_pub.html diff --git a/src/web/templates/bookmarks.html b/newspipe/web/templates/bookmarks.html index a3ec4580..a3ec4580 100644 --- a/src/web/templates/bookmarks.html +++ b/newspipe/web/templates/bookmarks.html diff --git a/src/web/templates/categories.html b/newspipe/web/templates/categories.html index 4985e0ca..4985e0ca 100644 --- a/src/web/templates/categories.html +++ b/newspipe/web/templates/categories.html diff --git a/src/web/templates/duplicates.html b/newspipe/web/templates/duplicates.html index d944a1a5..d944a1a5 100644 --- a/src/web/templates/duplicates.html +++ b/newspipe/web/templates/duplicates.html diff --git a/src/web/templates/edit_bookmark.html b/newspipe/web/templates/edit_bookmark.html index efd9d775..efd9d775 100644 --- a/src/web/templates/edit_bookmark.html +++ b/newspipe/web/templates/edit_bookmark.html diff --git a/src/web/templates/edit_category.html b/newspipe/web/templates/edit_category.html index 93c952d6..93c952d6 100644 --- a/src/web/templates/edit_category.html +++ b/newspipe/web/templates/edit_category.html diff --git a/src/web/templates/edit_feed.html b/newspipe/web/templates/edit_feed.html index 9c773204..9c773204 100644 --- a/src/web/templates/edit_feed.html +++ b/newspipe/web/templates/edit_feed.html diff --git a/src/web/templates/emails/account_activation.txt b/newspipe/web/templates/emails/account_activation.txt index c7d9c52e..c7d9c52e 100644 --- a/src/web/templates/emails/account_activation.txt +++ b/newspipe/web/templates/emails/account_activation.txt diff --git a/src/web/templates/emails/new_password.txt b/newspipe/web/templates/emails/new_password.txt index 1a04a36d..1a04a36d 100644 --- a/src/web/templates/emails/new_password.txt +++ b/newspipe/web/templates/emails/new_password.txt diff --git a/src/web/templates/errors/404.html b/newspipe/web/templates/errors/404.html index c64a2be8..c64a2be8 100644 --- a/src/web/templates/errors/404.html +++ b/newspipe/web/templates/errors/404.html diff --git a/src/web/templates/errors/500.html b/newspipe/web/templates/errors/500.html index 417fc0c7..417fc0c7 100644 --- a/src/web/templates/errors/500.html +++ b/newspipe/web/templates/errors/500.html diff --git a/src/web/templates/feed.html b/newspipe/web/templates/feed.html index 31db94a5..31db94a5 100644 --- a/src/web/templates/feed.html +++ b/newspipe/web/templates/feed.html diff --git a/src/web/templates/feed_list.html b/newspipe/web/templates/feed_list.html index 8c258c3c..8c258c3c 100644 --- a/src/web/templates/feed_list.html +++ b/newspipe/web/templates/feed_list.html diff --git a/src/web/templates/feed_list_per_categories.html b/newspipe/web/templates/feed_list_per_categories.html index 34d10ddd..34d10ddd 100644 --- a/src/web/templates/feed_list_per_categories.html +++ b/newspipe/web/templates/feed_list_per_categories.html diff --git a/src/web/templates/feed_list_simple.html b/newspipe/web/templates/feed_list_simple.html index 5f692a53..5f692a53 100644 --- a/src/web/templates/feed_list_simple.html +++ b/newspipe/web/templates/feed_list_simple.html diff --git a/src/web/templates/feeds.html b/newspipe/web/templates/feeds.html index 805e1b74..805e1b74 100644 --- a/src/web/templates/feeds.html +++ b/newspipe/web/templates/feeds.html diff --git a/src/web/templates/history.html b/newspipe/web/templates/history.html index d9ee9538..d9ee9538 100644 --- a/src/web/templates/history.html +++ b/newspipe/web/templates/history.html diff --git a/src/web/templates/home.html b/newspipe/web/templates/home.html index bc38d189..bc38d189 100644 --- a/src/web/templates/home.html +++ b/newspipe/web/templates/home.html diff --git a/src/web/templates/inactives.html b/newspipe/web/templates/inactives.html index e89a5fe1..e89a5fe1 100644 --- a/src/web/templates/inactives.html +++ b/newspipe/web/templates/inactives.html diff --git a/src/web/templates/layout.html b/newspipe/web/templates/layout.html index 29d4470f..29d4470f 100644 --- a/src/web/templates/layout.html +++ b/newspipe/web/templates/layout.html diff --git a/src/web/templates/login.html b/newspipe/web/templates/login.html index d2724ac3..d2724ac3 100644 --- a/src/web/templates/login.html +++ b/newspipe/web/templates/login.html diff --git a/src/web/templates/management.html b/newspipe/web/templates/management.html index 4d7c2da3..4d7c2da3 100644 --- a/src/web/templates/management.html +++ b/newspipe/web/templates/management.html diff --git a/src/web/templates/opml.xml b/newspipe/web/templates/opml.xml index 7159e279..7159e279 100644 --- a/src/web/templates/opml.xml +++ b/newspipe/web/templates/opml.xml diff --git a/src/web/templates/popular.html b/newspipe/web/templates/popular.html index 4b207903..4b207903 100644 --- a/src/web/templates/popular.html +++ b/newspipe/web/templates/popular.html diff --git a/src/web/templates/profile.html b/newspipe/web/templates/profile.html index 523e7c3c..523e7c3c 100644 --- a/src/web/templates/profile.html +++ b/newspipe/web/templates/profile.html diff --git a/src/web/templates/profile_public.html b/newspipe/web/templates/profile_public.html index e933a04b..e933a04b 100644 --- a/src/web/templates/profile_public.html +++ b/newspipe/web/templates/profile_public.html diff --git a/src/web/templates/signup.html b/newspipe/web/templates/signup.html index 8d34b3bf..8d34b3bf 100644 --- a/src/web/templates/signup.html +++ b/newspipe/web/templates/signup.html diff --git a/src/web/templates/user_stream.html b/newspipe/web/templates/user_stream.html index b05376a8..b05376a8 100644 --- a/src/web/templates/user_stream.html +++ b/newspipe/web/templates/user_stream.html diff --git a/src/web/translations/babel.cfg b/newspipe/web/translations/babel.cfg index f0234b32..f0234b32 100644 --- a/src/web/translations/babel.cfg +++ b/newspipe/web/translations/babel.cfg diff --git a/src/web/translations/fr/LC_MESSAGES/messages.mo b/newspipe/web/translations/fr/LC_MESSAGES/messages.mo Binary files differindex 87b48bb3..87b48bb3 100644 --- a/src/web/translations/fr/LC_MESSAGES/messages.mo +++ b/newspipe/web/translations/fr/LC_MESSAGES/messages.mo diff --git a/src/web/translations/fr/LC_MESSAGES/messages.po b/newspipe/web/translations/fr/LC_MESSAGES/messages.po index be948d2e..be948d2e 100644 --- a/src/web/translations/fr/LC_MESSAGES/messages.po +++ b/newspipe/web/translations/fr/LC_MESSAGES/messages.po diff --git a/src/web/translations/internationalization.sh b/newspipe/web/translations/internationalization.sh index 51efa840..51efa840 100755 --- a/src/web/translations/internationalization.sh +++ b/newspipe/web/translations/internationalization.sh diff --git a/src/web/translations/messages.pot b/newspipe/web/translations/messages.pot index 871417c8..871417c8 100644 --- a/src/web/translations/messages.pot +++ b/newspipe/web/translations/messages.pot diff --git a/src/web/views/__init__.py b/newspipe/web/views/__init__.py index 41bb52f3..41bb52f3 100644 --- a/src/web/views/__init__.py +++ b/newspipe/web/views/__init__.py diff --git a/src/web/views/admin.py b/newspipe/web/views/admin.py index 73b2b668..73b2b668 100644 --- a/src/web/views/admin.py +++ b/newspipe/web/views/admin.py diff --git a/src/web/views/api/__init__.py b/newspipe/web/views/api/__init__.py index e69de29b..e69de29b 100644 --- a/src/web/views/api/__init__.py +++ b/newspipe/web/views/api/__init__.py diff --git a/src/web/views/api/v2/__init__.py b/newspipe/web/views/api/v2/__init__.py index 46760261..46760261 100644 --- a/src/web/views/api/v2/__init__.py +++ b/newspipe/web/views/api/v2/__init__.py diff --git a/src/web/views/api/v2/article.py b/newspipe/web/views/api/v2/article.py index 2be286c6..2be286c6 100644 --- a/src/web/views/api/v2/article.py +++ b/newspipe/web/views/api/v2/article.py diff --git a/src/web/views/api/v2/category.py b/newspipe/web/views/api/v2/category.py index 70fda1ea..70fda1ea 100644 --- a/src/web/views/api/v2/category.py +++ b/newspipe/web/views/api/v2/category.py diff --git a/src/web/views/api/v2/common.py b/newspipe/web/views/api/v2/common.py index 8a53d7e6..8a53d7e6 100644 --- a/src/web/views/api/v2/common.py +++ b/newspipe/web/views/api/v2/common.py diff --git a/src/web/views/api/v2/feed.py b/newspipe/web/views/api/v2/feed.py index a0691277..a0691277 100644 --- a/src/web/views/api/v2/feed.py +++ b/newspipe/web/views/api/v2/feed.py diff --git a/src/web/views/api/v3/__init__.py b/newspipe/web/views/api/v3/__init__.py index 76aa1f19..76aa1f19 100644 --- a/src/web/views/api/v3/__init__.py +++ b/newspipe/web/views/api/v3/__init__.py diff --git a/src/web/views/api/v3/article.py b/newspipe/web/views/api/v3/article.py index 4cf35648..4cf35648 100644 --- a/src/web/views/api/v3/article.py +++ b/newspipe/web/views/api/v3/article.py diff --git a/src/web/views/api/v3/common.py b/newspipe/web/views/api/v3/common.py index d5e94a3f..d5e94a3f 100644 --- a/src/web/views/api/v3/common.py +++ b/newspipe/web/views/api/v3/common.py diff --git a/src/web/views/api/v3/feed.py b/newspipe/web/views/api/v3/feed.py index 2cbbafd9..2cbbafd9 100644 --- a/src/web/views/api/v3/feed.py +++ b/newspipe/web/views/api/v3/feed.py diff --git a/src/web/views/article.py b/newspipe/web/views/article.py index bf39795d..bf39795d 100644 --- a/src/web/views/article.py +++ b/newspipe/web/views/article.py diff --git a/src/web/views/bookmark.py b/newspipe/web/views/bookmark.py index 21d832d2..21d832d2 100644 --- a/src/web/views/bookmark.py +++ b/newspipe/web/views/bookmark.py diff --git a/src/web/views/category.py b/newspipe/web/views/category.py index 138561dd..138561dd 100644 --- a/src/web/views/category.py +++ b/newspipe/web/views/category.py diff --git a/src/web/views/common.py b/newspipe/web/views/common.py index e422fd57..e422fd57 100644 --- a/src/web/views/common.py +++ b/newspipe/web/views/common.py diff --git a/src/web/views/feed.py b/newspipe/web/views/feed.py index b98a005a..b98a005a 100644 --- a/src/web/views/feed.py +++ b/newspipe/web/views/feed.py diff --git a/src/web/views/home.py b/newspipe/web/views/home.py index 34ecb9fa..34ecb9fa 100644 --- a/src/web/views/home.py +++ b/newspipe/web/views/home.py diff --git a/src/web/views/icon.py b/newspipe/web/views/icon.py index 64e54cab..64e54cab 100644 --- a/src/web/views/icon.py +++ b/newspipe/web/views/icon.py diff --git a/src/web/views/session_mgmt.py b/newspipe/web/views/session_mgmt.py index 0db76115..0db76115 100644 --- a/src/web/views/session_mgmt.py +++ b/newspipe/web/views/session_mgmt.py diff --git a/src/web/views/user.py b/newspipe/web/views/user.py index 24b73a60..24b73a60 100644 --- a/src/web/views/user.py +++ b/newspipe/web/views/user.py diff --git a/src/web/views/views.py b/newspipe/web/views/views.py index 57f790b1..57f790b1 100644 --- a/src/web/views/views.py +++ b/newspipe/web/views/views.py diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..9c1388f8 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,923 @@ +[[package]] +category = "main" +description = "Async http client/server framework (asyncio)" +name = "aiohttp" +optional = false +python-versions = ">=3.5.3" +version = "3.6.2" + +[package.dependencies] +async-timeout = ">=3.0,<4.0" +attrs = ">=17.3.0" +chardet = ">=2.0,<4.0" +multidict = ">=4.5,<5.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["aiodns", "brotlipy", "cchardet"] + +[[package]] +category = "main" +description = "A database migration tool for SQLAlchemy." +name = "alembic" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.0" + +[package.dependencies] +Mako = "*" +SQLAlchemy = ">=1.1.0" +python-dateutil = "*" +python-editor = ">=0.3" + +[[package]] +category = "main" +description = "A library for parsing ISO 8601 strings." +name = "aniso8601" +optional = false +python-versions = "*" +version = "8.0.0" + +[[package]] +category = "main" +description = "Timeout context manager for asyncio programs" +name = "async-timeout" +optional = false +python-versions = ">=3.5.3" +version = "3.0.1" + +[[package]] +category = "main" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[package.extras] +azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] +dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] +docs = ["sphinx", "zope.interface"] +tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] + +[[package]] +category = "main" +description = "Internationalization utilities" +name = "babel" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8.0" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +category = "main" +description = "Screen-scraping library" +name = "beautifulsoup4" +optional = false +python-versions = "*" +version = "4.8.2" + +[package.dependencies] +soupsieve = ">=1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +category = "main" +description = "Fast, simple object-to-object and broadcast signaling" +name = "blinker" +optional = false +python-versions = "*" +version = "1.4" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2019.11.28" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "main" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + +[[package]] +category = "main" +description = "Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds" +name = "feedparser" +optional = false +python-versions = "*" +version = "5.2.1" + +[[package]] +category = "main" +description = "A simple framework for building complex web applications." +name = "flask" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "1.1.1" + +[package.dependencies] +Jinja2 = ">=2.10.1" +Werkzeug = ">=0.15" +click = ">=5.1" +itsdangerous = ">=0.24" + +[package.extras] +dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] +docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] +dotenv = ["python-dotenv"] + +[[package]] +category = "main" +description = "Adds i18n/l10n support to Flask applications" +name = "flask-babel" +optional = false +python-versions = "*" +version = "1.0.0" + +[package.dependencies] +Babel = ">=2.3" +Flask = "*" +Jinja2 = ">=2.5" +pytz = "*" + +[[package]] +category = "main" +description = "User session management for Flask" +name = "flask-login" +optional = false +python-versions = "*" +version = "0.5.0" + +[package.dependencies] +Flask = "*" + +[[package]] +category = "main" +description = "SQLAlchemy database migrations for Flask applications using Alembic" +name = "flask-migrate" +optional = false +python-versions = "*" +version = "2.5.2" + +[package.dependencies] +Flask = ">=0.9" +Flask-SQLAlchemy = ">=1.0" +alembic = ">=0.7" + +[[package]] +category = "main" +description = "Simple paginate support for flask" +name = "flask-paginate" +optional = false +python-versions = "*" +version = "0.5.5" + +[package.dependencies] +Flask = "*" + +[[package]] +category = "main" +description = "Identity management for flask" +name = "flask-principal" +optional = false +python-versions = "*" +version = "0.4.0" + +[package.dependencies] +Flask = "*" +blinker = "*" + +[[package]] +category = "main" +description = "Simple framework for creating REST APIs" +name = "flask-restful" +optional = false +python-versions = "*" +version = "0.3.8" + +[package.dependencies] +Flask = ">=0.8" +aniso8601 = ">=0.82" +pytz = "*" +six = ">=1.3.0" + +[package.extras] +docs = ["sphinx"] + +[[package]] +category = "main" +description = "A Flask extension for easy ReSTful API generation" +name = "flask-restless" +optional = false +python-versions = "*" +version = "0.17.0" + +[package.dependencies] +flask = ">=0.10" +mimerender = ">=0.5.2" +python-dateutil = ">2.0" +sqlalchemy = ">=0.8" + +[[package]] +category = "main" +description = "Scripting support for Flask" +name = "flask-script" +optional = false +python-versions = "*" +version = "2.0.6" + +[package.dependencies] +Flask = "*" + +[[package]] +category = "main" +description = "Adds SQLAlchemy support to your Flask application." +name = "flask-sqlalchemy" +optional = false +python-versions = ">= 2.7, != 3.0.*, != 3.1.*, != 3.2.*, != 3.3.*" +version = "2.4.1" + +[package.dependencies] +Flask = ">=0.10" +SQLAlchemy = ">=0.8.0" + +[[package]] +category = "main" +description = "Force SSL on your Flask app." +name = "flask-sslify" +optional = false +python-versions = "*" +version = "0.1.5" + +[package.dependencies] +Flask = "*" + +[[package]] +category = "main" +description = "Simple integration of Flask and WTForms." +name = "flask-wtf" +optional = false +python-versions = "*" +version = "0.14.3" + +[package.dependencies] +Flask = "*" +WTForms = "*" +itsdangerous = "*" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.9" + +[[package]] +category = "main" +description = "Various helpers to pass data to untrusted environments and back." +name = "itsdangerous" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.1.0" + +[[package]] +category = "main" +description = "A very fast and expressive template engine." +name = "jinja2" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.11.1" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +category = "main" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +name = "lxml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +version = "4.5.0" + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["beautifulsoup4"] +source = ["Cython (>=0.29.7)"] + +[[package]] +category = "main" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +name = "mako" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.1.1" + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["babel"] +lingua = ["lingua"] + +[[package]] +category = "main" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "main" +description = "RESTful HTTP Content Negotiation for Flask, Bottle, web.py and webapp2 (Google App Engine)" +name = "mimerender" +optional = false +python-versions = "*" +version = "0.6.0" + +[package.dependencies] +python_mimeparse = ">=0.1.4" + +[[package]] +category = "main" +description = "multidict implementation" +name = "multidict" +optional = false +python-versions = ">=3.5" +version = "4.7.5" + +[[package]] +category = "main" +description = "Lightweight OPML parsing." +name = "opml" +optional = false +python-versions = "*" +version = "0.5" + +[package.dependencies] +lxml = "*" +setuptools = "*" + +[[package]] +category = "main" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +name = "psycopg2-binary" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "2.8.4" + +[[package]] +category = "dev" +description = "Python interface to Graphviz's Dot" +name = "pydot" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.4.1" + +[package.dependencies] +pyparsing = ">=2.1.4" + +[[package]] +category = "dev" +description = "Python parsing module" +name = "pyparsing" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.4.6" + +[[package]] +category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +version = "2.8.1" + +[package.dependencies] +six = ">=1.5" + +[[package]] +category = "main" +description = "Programmatically open an editor, capture the result." +name = "python-editor" +optional = false +python-versions = "*" +version = "1.0.4" + +[[package]] +category = "main" +description = "HTTP REST client, simplified for Python" +name = "python-http-client" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.2.5" + +[[package]] +category = "main" +description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges." +name = "python-mimeparse" +optional = false +python-versions = "*" +version = "1.6.0" + +[[package]] +category = "main" +description = "World timezone definitions, modern and historical" +name = "pytz" +optional = false +python-versions = "*" +version = "2019.3" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.23.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<4" +idna = ">=2.5,<3" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[package.extras] +security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] + +[[package]] +category = "main" +description = "Asynchronous Python HTTP for Humans." +name = "requests-futures" +optional = false +python-versions = "*" +version = "1.0.0" + +[package.dependencies] +requests = ">=1.2.0" + +[[package]] +category = "main" +description = "Twilio SendGrid library for Python" +name = "sendgrid" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "6.1.2" + +[package.dependencies] +python-http-client = ">=3.2.1" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.14.0" + +[[package]] +category = "main" +description = "A modern CSS selector implementation for Beautiful Soup." +name = "soupsieve" +optional = false +python-versions = ">=3.5" +version = "2.0" + +[[package]] +category = "main" +description = "Database Abstraction Library" +name = "sqlalchemy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.13" + +[package.extras] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mysql = ["mysqlclient"] +oracle = ["cx-oracle"] +postgresql = ["psycopg2"] +postgresql_pg8000 = ["pg8000"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql"] + +[[package]] +category = "dev" +description = "Turn SQLAlchemy DB Model into a graph" +name = "sqlalchemy-schemadisplay" +optional = false +python-versions = "*" +version = "1.3" + +[package.dependencies] +pydot = "*" +setuptools = "*" + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +version = "1.25.8" + +[package.extras] +brotli = ["brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] + +[[package]] +category = "main" +description = "The comprehensive WSGI web application library." +name = "werkzeug" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "1.0.0" + +[package.extras] +dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"] +watchdog = ["watchdog"] + +[[package]] +category = "main" +description = "A flexible forms validation and rendering library for Python web development." +name = "wtforms" +optional = false +python-versions = "*" +version = "2.2.1" + +[package.extras] +locale = ["Babel (>=1.3)"] + +[[package]] +category = "main" +description = "Yet another URL library" +name = "yarl" +optional = false +python-versions = ">=3.5" +version = "1.4.2" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[metadata] +content-hash = "6714462ca1b9ea98f6ec5d7ef69d7ddbed1ae0687cbff95accbcda74074714a2" +python-versions = "^3.8" + +[metadata.files] +aiohttp = [ + {file = "aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e"}, + {file = "aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec"}, + {file = "aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48"}, + {file = "aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59"}, + {file = "aiohttp-3.6.2-cp36-cp36m-win32.whl", hash = "sha256:344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a"}, + {file = "aiohttp-3.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17"}, + {file = "aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a"}, + {file = "aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd"}, + {file = "aiohttp-3.6.2-cp37-cp37m-win32.whl", hash = "sha256:b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965"}, + {file = "aiohttp-3.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654"}, + {file = "aiohttp-3.6.2-py3-none-any.whl", hash = "sha256:460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4"}, + {file = "aiohttp-3.6.2.tar.gz", hash = "sha256:259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326"}, +] +alembic = [ + {file = "alembic-1.4.0.tar.gz", hash = "sha256:2df2519a5b002f881517693b95626905a39c5faf4b5a1f94de4f1441095d1d26"}, +] +aniso8601 = [ + {file = "aniso8601-8.0.0-py2.py3-none-any.whl", hash = "sha256:c033f63d028b9a58e3ab0c2c7d0532ab4bfa7452bfc788fbfe3ddabd327b181a"}, + {file = "aniso8601-8.0.0.tar.gz", hash = "sha256:529dcb1f5f26ee0df6c0a1ee84b7b27197c3c50fc3a6321d66c544689237d072"}, +] +async-timeout = [ + {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"}, + {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"}, +] +attrs = [ + {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, + {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, +] +babel = [ + {file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"}, + {file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"}, +] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.8.2-py2-none-any.whl", hash = "sha256:e1505eeed31b0f4ce2dbb3bc8eb256c04cc2b3b72af7d551a4ab6efd5cbe5dae"}, + {file = "beautifulsoup4-4.8.2-py3-none-any.whl", hash = "sha256:9fbb4d6e48ecd30bcacc5b63b94088192dcda178513b2ae3c394229f8911b887"}, + {file = "beautifulsoup4-4.8.2.tar.gz", hash = "sha256:05fd825eb01c290877657a56df4c6e4c311b3965bda790c613a3d6fb01a5462a"}, +] +blinker = [ + {file = "blinker-1.4.tar.gz", hash = "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"}, +] +certifi = [ + {file = "certifi-2019.11.28-py2.py3-none-any.whl", hash = "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3"}, + {file = "certifi-2019.11.28.tar.gz", hash = "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"}, +] +chardet = [ + {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, + {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, +] +click = [ + {file = "Click-7.0-py2.py3-none-any.whl", hash = "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13"}, + {file = "Click-7.0.tar.gz", hash = "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"}, +] +feedparser = [ + {file = "feedparser-5.2.1.tar.bz2", hash = "sha256:ce875495c90ebd74b179855449040003a1beb40cd13d5f037a0654251e260b02"}, + {file = "feedparser-5.2.1.tar.gz", hash = "sha256:bd030652c2d08532c034c27fcd7c85868e7fa3cb2b17f230a44a6bbc92519bf9"}, + {file = "feedparser-5.2.1.zip", hash = "sha256:cd2485472e41471632ed3029d44033ee420ad0b57111db95c240c9160a85831c"}, +] +flask = [ + {file = "Flask-1.1.1-py2.py3-none-any.whl", hash = "sha256:45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6"}, + {file = "Flask-1.1.1.tar.gz", hash = "sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52"}, +] +flask-babel = [ + {file = "Flask-Babel-1.0.0.tar.gz", hash = "sha256:d6a70468f9a8919d59fba2a291a003da3a05ff884275dddbd965f3b98b09ab3e"}, + {file = "Flask_Babel-1.0.0-py3-none-any.whl", hash = "sha256:247f4ec34cf605d03781f480bccb1a5acb719df1d1a2a743c091ab3db5d5fde2"}, +] +flask-login = [ + {file = "Flask-Login-0.5.0.tar.gz", hash = "sha256:6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b"}, + {file = "Flask_Login-0.5.0-py2.py3-none-any.whl", hash = "sha256:7451b5001e17837ba58945aead261ba425fdf7b4f0448777e597ddab39f4fba0"}, +] +flask-migrate = [ + {file = "Flask-Migrate-2.5.2.tar.gz", hash = "sha256:a96ff1875a49a40bd3e8ac04fce73fdb0870b9211e6168608cbafa4eb839d502"}, + {file = "Flask_Migrate-2.5.2-py2.py3-none-any.whl", hash = "sha256:6fb038be63d4c60727d5dfa5f581a6189af5b4e2925bc378697b4f0a40cfb4e1"}, +] +flask-paginate = [ + {file = "flask_paginate-0.5.5-py2.py3-none-any.whl", hash = "sha256:d2aa07b4ef27f56f973482aaa06a0d93dc769a3e4d3e9c382a305ab72ac38ad9"}, +] +flask-principal = [ + {file = "Flask-Principal-0.4.0.tar.gz", hash = "sha256:f5d6134b5caebfdbb86f32d56d18ee44b080876a27269560a96ea35f75c99453"}, +] +flask-restful = [ + {file = "Flask-RESTful-0.3.8.tar.gz", hash = "sha256:5ea9a5991abf2cb69b4aac19793faac6c032300505b325687d7c305ffaa76915"}, + {file = "Flask_RESTful-0.3.8-py2.py3-none-any.whl", hash = "sha256:d891118b951921f1cec80cabb4db98ea6058a35e6404788f9e70d5b243813ec2"}, +] +flask-restless = [ + {file = "Flask-Restless-0.17.0.tar.gz", hash = "sha256:1de47fe80abd47239c9a1804e0ba5da1d23b9f40cfc26202d16bed37f178c2b6"}, +] +flask-script = [ + {file = "Flask-Script-2.0.6.tar.gz", hash = "sha256:6425963d91054cfcc185807141c7314a9c5ad46325911bd24dcb489bd0161c65"}, +] +flask-sqlalchemy = [ + {file = "Flask-SQLAlchemy-2.4.1.tar.gz", hash = "sha256:6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d"}, + {file = "Flask_SQLAlchemy-2.4.1-py2.py3-none-any.whl", hash = "sha256:0078d8663330dc05a74bc72b3b6ddc441b9a744e2f56fe60af1a5bfc81334327"}, +] +flask-sslify = [ + {file = "Flask-SSLify-0.1.5.tar.gz", hash = "sha256:d33e1d3c09cd95154176aa8a7319418e52129fc482dd56d8a8ad7c24500d543e"}, +] +flask-wtf = [ + {file = "Flask-WTF-0.14.3.tar.gz", hash = "sha256:d417e3a0008b5ba583da1763e4db0f55a1269d9dd91dcc3eb3c026d3c5dbd720"}, + {file = "Flask_WTF-0.14.3-py2.py3-none-any.whl", hash = "sha256:57b3faf6fe5d6168bda0c36b0df1d05770f8e205e18332d0376ddb954d17aef2"}, +] +idna = [ + {file = "idna-2.9-py2.py3-none-any.whl", hash = "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"}, + {file = "idna-2.9.tar.gz", hash = "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb"}, +] +itsdangerous = [ + {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, + {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, +] +jinja2 = [ + {file = "Jinja2-2.11.1-py2.py3-none-any.whl", hash = "sha256:b0eaf100007721b5c16c1fc1eecb87409464edc10469ddc9a22a27a99123be49"}, + {file = "Jinja2-2.11.1.tar.gz", hash = "sha256:93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250"}, +] +lxml = [ + {file = "lxml-4.5.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0701f7965903a1c3f6f09328c1278ac0eee8f56f244e66af79cb224b7ef3801c"}, + {file = "lxml-4.5.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:06d4e0bbb1d62e38ae6118406d7cdb4693a3fa34ee3762238bcb96c9e36a93cd"}, + {file = "lxml-4.5.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5828c7f3e615f3975d48f40d4fe66e8a7b25f16b5e5705ffe1d22e43fb1f6261"}, + {file = "lxml-4.5.0-cp27-cp27m-win32.whl", hash = "sha256:afdb34b715daf814d1abea0317b6d672476b498472f1e5aacbadc34ebbc26e89"}, + {file = "lxml-4.5.0-cp27-cp27m-win_amd64.whl", hash = "sha256:585c0869f75577ac7a8ff38d08f7aac9033da2c41c11352ebf86a04652758b7a"}, + {file = "lxml-4.5.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:8a0ebda56ebca1a83eb2d1ac266649b80af8dd4b4a3502b2c1e09ac2f88fe128"}, + {file = "lxml-4.5.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:fe976a0f1ef09b3638778024ab9fb8cde3118f203364212c198f71341c0715ca"}, + {file = "lxml-4.5.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7bc1b221e7867f2e7ff1933165c0cec7153dce93d0cdba6554b42a8beb687bdb"}, + {file = "lxml-4.5.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:d068f55bda3c2c3fcaec24bd083d9e2eede32c583faf084d6e4b9daaea77dde8"}, + {file = "lxml-4.5.0-cp35-cp35m-win32.whl", hash = "sha256:e4aa948eb15018a657702fee0b9db47e908491c64d36b4a90f59a64741516e77"}, + {file = "lxml-4.5.0-cp35-cp35m-win_amd64.whl", hash = "sha256:1f2c4ec372bf1c4a2c7e4bb20845e8bcf8050365189d86806bad1e3ae473d081"}, + {file = "lxml-4.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5d467ce9c5d35b3bcc7172c06320dddb275fea6ac2037f72f0a4d7472035cea9"}, + {file = "lxml-4.5.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:95e67224815ef86924fbc2b71a9dbd1f7262384bca4bc4793645794ac4200717"}, + {file = "lxml-4.5.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ebec08091a22c2be870890913bdadd86fcd8e9f0f22bcb398abd3af914690c15"}, + {file = "lxml-4.5.0-cp36-cp36m-win32.whl", hash = "sha256:deadf4df349d1dcd7b2853a2c8796593cc346600726eff680ed8ed11812382a7"}, + {file = "lxml-4.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f2b74784ed7e0bc2d02bd53e48ad6ba523c9b36c194260b7a5045071abbb1012"}, + {file = "lxml-4.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa071559f14bd1e92077b1b5f6c22cf09756c6de7139370249eb372854ce51e6"}, + {file = "lxml-4.5.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:edc15fcfd77395e24543be48871c251f38132bb834d9fdfdad756adb6ea37679"}, + {file = "lxml-4.5.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fd52e796fee7171c4361d441796b64df1acfceb51f29e545e812f16d023c4bbc"}, + {file = "lxml-4.5.0-cp37-cp37m-win32.whl", hash = "sha256:90ed0e36455a81b25b7034038e40880189169c308a3df360861ad74da7b68c1a"}, + {file = "lxml-4.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:df533af6f88080419c5a604d0d63b2c33b1c0c4409aba7d0cb6de305147ea8c8"}, + {file = "lxml-4.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b4b2c63cc7963aedd08a5f5a454c9f67251b1ac9e22fd9d72836206c42dc2a72"}, + {file = "lxml-4.5.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e5d842c73e4ef6ed8c1bd77806bf84a7cb535f9c0cf9b2c74d02ebda310070e1"}, + {file = "lxml-4.5.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:63dbc21efd7e822c11d5ddbedbbb08cd11a41e0032e382a0fd59b0b08e405a3a"}, + {file = "lxml-4.5.0-cp38-cp38-win32.whl", hash = "sha256:4235bc124fdcf611d02047d7034164897ade13046bda967768836629bc62784f"}, + {file = "lxml-4.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:d5b3c4b7edd2e770375a01139be11307f04341ec709cf724e0f26ebb1eef12c3"}, + {file = "lxml-4.5.0.tar.gz", hash = "sha256:8620ce80f50d023d414183bf90cc2576c2837b88e00bea3f33ad2630133bbb60"}, +] +mako = [ + {file = "Mako-1.1.1.tar.gz", hash = "sha256:2984a6733e1d472796ceef37ad48c26f4a984bb18119bb2dbc37a44d8f6e75a4"}, +] +markupsafe = [ + {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"}, + {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"}, + {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"}, + {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, + {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, +] +mimerender = [ + {file = "mimerender-0.6.0.tar.gz", hash = "sha256:e7f1377efee18c3f562cee54907a3329223c824332889fb74b745ddfd0a9b1c6"}, +] +multidict = [ + {file = "multidict-4.7.5-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:fc3b4adc2ee8474cb3cd2a155305d5f8eda0a9c91320f83e55748e1fcb68f8e3"}, + {file = "multidict-4.7.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:42f56542166040b4474c0c608ed051732033cd821126493cf25b6c276df7dd35"}, + {file = "multidict-4.7.5-cp35-cp35m-win32.whl", hash = "sha256:7774e9f6c9af3f12f296131453f7b81dabb7ebdb948483362f5afcaac8a826f1"}, + {file = "multidict-4.7.5-cp35-cp35m-win_amd64.whl", hash = "sha256:c2c37185fb0af79d5c117b8d2764f4321eeb12ba8c141a95d0aa8c2c1d0a11dd"}, + {file = "multidict-4.7.5-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:e439c9a10a95cb32abd708bb8be83b2134fa93790a4fb0535ca36db3dda94d20"}, + {file = "multidict-4.7.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:85cb26c38c96f76b7ff38b86c9d560dea10cf3459bb5f4caf72fc1bb932c7136"}, + {file = "multidict-4.7.5-cp36-cp36m-win32.whl", hash = "sha256:620b37c3fea181dab09267cd5a84b0f23fa043beb8bc50d8474dd9694de1fa6e"}, + {file = "multidict-4.7.5-cp36-cp36m-win_amd64.whl", hash = "sha256:6e6fef114741c4d7ca46da8449038ec8b1e880bbe68674c01ceeb1ac8a648e78"}, + {file = "multidict-4.7.5-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:a326f4240123a2ac66bb163eeba99578e9d63a8654a59f4688a79198f9aa10f8"}, + {file = "multidict-4.7.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dc561313279f9d05a3d0ffa89cd15ae477528ea37aa9795c4654588a3287a9ab"}, + {file = "multidict-4.7.5-cp37-cp37m-win32.whl", hash = "sha256:4b7df040fb5fe826d689204f9b544af469593fb3ff3a069a6ad3409f742f5928"}, + {file = "multidict-4.7.5-cp37-cp37m-win_amd64.whl", hash = "sha256:317f96bc0950d249e96d8d29ab556d01dd38888fbe68324f46fd834b430169f1"}, + {file = "multidict-4.7.5-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:b51249fdd2923739cd3efc95a3d6c363b67bbf779208e9f37fd5e68540d1a4d4"}, + {file = "multidict-4.7.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ae402f43604e3b2bc41e8ea8b8526c7fa7139ed76b0d64fc48e28125925275b2"}, + {file = "multidict-4.7.5-cp38-cp38-win32.whl", hash = "sha256:bb519becc46275c594410c6c28a8a0adc66fe24fef154a9addea54c1adb006f5"}, + {file = "multidict-4.7.5-cp38-cp38-win_amd64.whl", hash = "sha256:544fae9261232a97102e27a926019100a9db75bec7b37feedd74b3aa82f29969"}, + {file = "multidict-4.7.5.tar.gz", hash = "sha256:aee283c49601fa4c13adc64c09c978838a7e812f85377ae130a24d7198c0331e"}, +] +opml = [ + {file = "opml-0.5-py2.5.egg", hash = "sha256:9d92806e32068ae5eb2d8826b54d3eeaad1d57b9d6c9cbdc28b57369f85c1222"}, + {file = "opml-0.5.tar.gz", hash = "sha256:db1eef2a251b8af33e2eabb62baf922006dbd8c66c742931090e331a0362a770"}, +] +psycopg2-binary = [ + {file = "psycopg2-binary-2.8.4.tar.gz", hash = "sha256:3a2522b1d9178575acee4adf8fd9f979f9c0449b00b4164bb63c3475ea6528ed"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:890167d5091279a27e2505ff0e1fb273f8c48c41d35c5b92adbf4af80e6b2ed6"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:dbc5cd56fff1a6152ca59445178652756f4e509f672e49ccdf3d79c1043113a4"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:7f42a8490c4fe854325504ce7a6e4796b207960dabb2cbafe3c3959cb00d1d7e"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-win32.whl", hash = "sha256:8578d6b8192e4c805e85f187bc530d0f52ba86c39172e61cd51f68fddd648103"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27m-win_amd64.whl", hash = "sha256:5dd90c5438b4f935c9d01fcbad3620253da89d19c1f5fca9158646407ed7df35"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:9aadff9032e967865f9778485571e93908d27dab21d0fdfdec0ca779bb6f8ad9"}, + {file = "psycopg2_binary-2.8.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:659c815b5b8e2a55193ede2795c1e2349b8011497310bb936da7d4745652823b"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:2166e770cb98f02ed5ee2b0b569d40db26788e0bf2ec3ae1a0d864ea6f1d8309"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:7e6e3c52e6732c219c07bd97fff6c088f8df4dae3b79752ee3a817e6f32e177e"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-win32.whl", hash = "sha256:040234f8a4a8dfd692662a8308d78f63f31a97e1c42d2480e5e6810c48966a29"}, + {file = "psycopg2_binary-2.8.4-cp34-cp34m-win_amd64.whl", hash = "sha256:69b13fdf12878b10dc6003acc8d0abf3ad93e79813fd5f3812497c1c9fb9be49"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:19dc39616850342a2a6db70559af55b22955f86667b5f652f40c0e99253d9881"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:9f24f383a298a0c0f9b3113b982e21751a8ecde6615494a3f1470eb4a9d70e9e"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:eaed1c65f461a959284649e37b5051224f4db6ebdc84e40b5e65f2986f101a08"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-win32.whl", hash = "sha256:4c6717962247445b4f9e21c962ea61d2e884fc17df5ddf5e35863b016f8a1f03"}, + {file = "psycopg2_binary-2.8.4-cp35-cp35m-win_amd64.whl", hash = "sha256:84156313f258eafff716b2961644a4483a9be44a5d43551d554844d15d4d224e"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:3b5deaa3ee7180585a296af33e14c9b18c218d148e735c7accf78130765a47e3"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5057669b6a66aa9ca118a2a860159f0ee3acf837eda937bdd2a64f3431361a2d"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:afd96845e12638d2c44d213d4810a08f4dc4a563f9a98204b7428e567014b1cd"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-win32.whl", hash = "sha256:a73021b44813b5c84eda4a3af5826dd72356a900bac9bd9dd1f0f81ee1c22c2f"}, + {file = "psycopg2_binary-2.8.4-cp36-cp36m-win_amd64.whl", hash = "sha256:407af6d7e46593415f216c7f56ba087a9a42bd6dc2ecb86028760aa45b802bd7"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:3aa773580f85a28ffdf6f862e59cb5a3cc7ef6885121f2de3fca8d6ada4dbf3b"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:eac8a3499754790187bb00574ab980df13e754777d346f85e0ff6df929bcd964"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:7a1cb80e35e1ccea3e11a48afe65d38744a0e0bde88795cc56a4d05b6e4f9d70"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-win32.whl", hash = "sha256:086f7e89ec85a6704db51f68f0dcae432eff9300809723a6e8782c41c2f48e03"}, + {file = "psycopg2_binary-2.8.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b73ddf033d8cd4cc9dfed6324b1ad2a89ba52c410ef6877998422fcb9c23e3a8"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:4c3c09fb674401f630626310bcaf6cd6285daf0d5e4c26d6e55ca26a2734e39b"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:18ca813fdb17bc1db73fe61b196b05dd1ca2165b884dd5ec5568877cabf9b039"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:50446fae5681fc99f87e505d4e77c9407e683ab60c555ec302f9ac9bffa61103"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-win32.whl", hash = "sha256:98e10634792ac0e9e7a92a76b4991b44c2325d3e7798270a808407355e7bb0a1"}, + {file = "psycopg2_binary-2.8.4-cp38-cp38-win_amd64.whl", hash = "sha256:b8f490f5fad1767a1331df1259763b3bad7d7af12a75b950c2843ba319b2415f"}, +] +pydot = [ + {file = "pydot-1.4.1-py2.py3-none-any.whl", hash = "sha256:67be714300c78fda5fd52f79ec994039e3f76f074948c67b5ff539b433ad354f"}, + {file = "pydot-1.4.1.tar.gz", hash = "sha256:d49c9d4dd1913beec2a997f831543c8cbd53e535b1a739e921642fe416235f01"}, +] +pyparsing = [ + {file = "pyparsing-2.4.6-py2.py3-none-any.whl", hash = "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"}, + {file = "pyparsing-2.4.6.tar.gz", hash = "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"}, + {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"}, +] +python-editor = [ + {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"}, + {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"}, + {file = "python_editor-1.0.4-py2.7.egg", hash = "sha256:ea87e17f6ec459e780e4221f295411462e0d0810858e055fc514684350a2f522"}, + {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"}, + {file = "python_editor-1.0.4-py3.5.egg", hash = "sha256:c3da2053dbab6b29c94e43c486ff67206eafbe7eb52dbec7390b5e2fb05aac77"}, +] +python-http-client = [ + {file = "python_http_client-3.2.5.tar.gz", hash = "sha256:10bfbc7ecd25e55215680ce2827b1a3bf4e06ba4a59758039d047d6104b6f169"}, +] +python-mimeparse = [ + {file = "python-mimeparse-1.6.0.tar.gz", hash = "sha256:76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78"}, + {file = "python_mimeparse-1.6.0-py2.py3-none-any.whl", hash = "sha256:a295f03ff20341491bfe4717a39cd0a8cc9afad619ba44b77e86b0ab8a2b8282"}, +] +pytz = [ + {file = "pytz-2019.3-py2.py3-none-any.whl", hash = "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d"}, + {file = "pytz-2019.3.tar.gz", hash = "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"}, +] +requests = [ + {file = "requests-2.23.0-py2.py3-none-any.whl", hash = "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee"}, + {file = "requests-2.23.0.tar.gz", hash = "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"}, +] +requests-futures = [ + {file = "requests-futures-1.0.0.tar.gz", hash = "sha256:35547502bf1958044716a03a2f47092a89efe8f9789ab0c4c528d9c9c30bc148"}, +] +sendgrid = [ + {file = "sendgrid-6.1.2-py3-none-any.whl", hash = "sha256:e2b8bd90522f22a22d2557aee9cb77d0c372a8c4ca35e65d062b4ecaf0b9a4bd"}, + {file = "sendgrid-6.1.2-py3.6.egg", hash = "sha256:faa8105a36cc8a02be4f4bbe22816d1d1c8985bbc7cc9f8bb4195870d7cff7e5"}, + {file = "sendgrid-6.1.2.tar.gz", hash = "sha256:8112a3e2edd4cef208ed46335f058d2782397b395b96a472dcfd5e2618cf621b"}, +] +six = [ + {file = "six-1.14.0-py2.py3-none-any.whl", hash = "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"}, + {file = "six-1.14.0.tar.gz", hash = "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a"}, +] +soupsieve = [ + {file = "soupsieve-2.0-py2.py3-none-any.whl", hash = "sha256:fcd71e08c0aee99aca1b73f45478549ee7e7fc006d51b37bec9e9def7dc22b69"}, + {file = "soupsieve-2.0.tar.gz", hash = "sha256:e914534802d7ffd233242b785229d5ba0766a7f487385e3f714446a07bf540ae"}, +] +sqlalchemy = [ + {file = "SQLAlchemy-1.3.13.tar.gz", hash = "sha256:64a7b71846db6423807e96820993fa12a03b89127d278290ca25c0b11ed7b4fb"}, +] +sqlalchemy-schemadisplay = [ + {file = "sqlalchemy_schemadisplay-1.3.tar.gz", hash = "sha256:0a9f26d77be9d92c9564d87cc17668fe141a816036c5f5d7c8cb053b253957e0"}, + {file = "sqlalchemy_schemadisplay-1.3.zip", hash = "sha256:b38f0d5947bd3ed9e2b180b4d8c9cd44c9d09edc0ce26722d89be4cc264903b5"}, +] +urllib3 = [ + {file = "urllib3-1.25.8-py2.py3-none-any.whl", hash = "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc"}, + {file = "urllib3-1.25.8.tar.gz", hash = "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc"}, +] +werkzeug = [ + {file = "Werkzeug-1.0.0-py2.py3-none-any.whl", hash = "sha256:6dc65cf9091cf750012f56f2cad759fa9e879f511b5ff8685e456b4e3bf90d16"}, + {file = "Werkzeug-1.0.0.tar.gz", hash = "sha256:169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096"}, +] +wtforms = [ + {file = "WTForms-2.2.1-py2.py3-none-any.whl", hash = "sha256:e3ee092c827582c50877cdbd49e9ce6d2c5c1f6561f849b3b068c1b8029626f1"}, + {file = "WTForms-2.2.1.tar.gz", hash = "sha256:0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61"}, +] +yarl = [ + {file = "yarl-1.4.2-cp35-cp35m-macosx_10_13_x86_64.whl", hash = "sha256:3ce3d4f7c6b69c4e4f0704b32eca8123b9c58ae91af740481aa57d7857b5e41b"}, + {file = "yarl-1.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:a4844ebb2be14768f7994f2017f70aca39d658a96c786211be5ddbe1c68794c1"}, + {file = "yarl-1.4.2-cp35-cp35m-win32.whl", hash = "sha256:d8cdee92bc930d8b09d8bd2043cedd544d9c8bd7436a77678dd602467a993080"}, + {file = "yarl-1.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:c2b509ac3d4b988ae8769901c66345425e361d518aecbe4acbfc2567e416626a"}, + {file = "yarl-1.4.2-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:308b98b0c8cd1dfef1a0311dc5e38ae8f9b58349226aa0533f15a16717ad702f"}, + {file = "yarl-1.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:944494be42fa630134bf907714d40207e646fd5a94423c90d5b514f7b0713fea"}, + {file = "yarl-1.4.2-cp36-cp36m-win32.whl", hash = "sha256:5b10eb0e7f044cf0b035112446b26a3a2946bca9d7d7edb5e54a2ad2f6652abb"}, + {file = "yarl-1.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:a161de7e50224e8e3de6e184707476b5a989037dcb24292b391a3d66ff158e70"}, + {file = "yarl-1.4.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:26d7c90cb04dee1665282a5d1a998defc1a9e012fdca0f33396f81508f49696d"}, + {file = "yarl-1.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0c2ab325d33f1b824734b3ef51d4d54a54e0e7a23d13b86974507602334c2cce"}, + {file = "yarl-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:e15199cdb423316e15f108f51249e44eb156ae5dba232cb73be555324a1d49c2"}, + {file = "yarl-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:2098a4b4b9d75ee352807a95cdf5f10180db903bc5b7270715c6bbe2551f64ce"}, + {file = "yarl-1.4.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c9959d49a77b0e07559e579f38b2f3711c2b8716b8410b320bf9713013215a1b"}, + {file = "yarl-1.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:25e66e5e2007c7a39541ca13b559cd8ebc2ad8fe00ea94a2aad28a9b1e44e5ae"}, + {file = "yarl-1.4.2-cp38-cp38-win32.whl", hash = "sha256:6faa19d3824c21bcbfdfce5171e193c8b4ddafdf0ac3f129ccf0cdfcb083e462"}, + {file = "yarl-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:0ca2f395591bbd85ddd50a82eb1fde9c1066fafe888c5c7cc1d810cf03fd3cc6"}, + {file = "yarl-1.4.2.tar.gz", hash = "sha256:58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..fb57d65e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +[tool.poetry] +name = "newspipe" +version = "8.0.0" +description = "Newspipe is a web-based news aggregator and reader." +authors = ["Cédric Bonhomme <cedric@cedricbonhomme.org>"] +license = "AGPL-3.0-or-later" + +[tool.poetry.dependencies] +python = "^3.8" +aiohttp = "^3.6.2" +requests = "^2.23.0" +chardet = "^3.0.4" +requests-futures = "^1.0.0" +feedparser = "^5.2.1" +beautifulsoup4 = "^4.8.2" +lxml = "^4.5.0" +opml = "^0.5" +SQLAlchemy = "^1.3.13" +alembic = "^1.4.0" +Flask = "^1.1.1" +Flask-SQLAlchemy = "^2.4.1" +Flask-Login = "^0.5.0" +Flask-Principal = "^0.4.0" +Flask-WTF = "^0.14.3" +Flask-RESTful = "^0.3.8" +Flask-Restless = "^0.17.0" +Flask-paginate = "^0.5.5" +Flask-Babel = "^1.0.0" +Flask-SSLify = "^0.1.5" +Flask-Migrate = "^2.5.2" +Flask-Script = "^2.0.6" +WTForms = "^2.2.1" +sendgrid = "^6.1.2" +python-dateutil = "^2.8.1" +psycopg2-binary = "^2.8.4" + + + +[tool.poetry.dev-dependencies] +sqlalchemy-schemadisplay = "^1.3" + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" diff --git a/runtime.txt b/runtime.txt deleted file mode 100644 index 73b1cf81..00000000 --- a/runtime.txt +++ /dev/null @@ -1 +0,0 @@ -python-3.8.0 |