2022-10-12 14:22:22 +00:00
|
|
|
[tool.poetry]
|
|
|
|
name = "spiffworkflow-backend"
|
|
|
|
version = "0.0.0"
|
|
|
|
description = "Spiffworkflow Backend"
|
2023-07-25 17:27:53 +00:00
|
|
|
authors = ["Sartography <sartography@users.noreply.github.com>"]
|
|
|
|
license = "LGPL-2.1"
|
2022-10-12 14:22:22 +00:00
|
|
|
readme = "README.rst"
|
2023-07-25 17:27:53 +00:00
|
|
|
homepage = "https://spiffworkflow.org"
|
|
|
|
repository = "https://github.com/sartography/spiff-arena"
|
|
|
|
documentation = "https://spiff-arena.readthedocs.io"
|
2022-10-12 14:22:22 +00:00
|
|
|
classifiers = [
|
|
|
|
"Development Status :: 1 - Planning",
|
|
|
|
]
|
|
|
|
|
|
|
|
[tool.poetry.urls]
|
2023-07-25 17:27:53 +00:00
|
|
|
Changelog = "https://github.com/orgs/sartography/packages?repo_name=spiff-arena"
|
2022-10-12 14:22:22 +00:00
|
|
|
|
|
|
|
[tool.poetry.dependencies]
|
2023-05-27 22:17:51 +00:00
|
|
|
python = ">=3.10,<3.12"
|
2022-10-12 14:22:22 +00:00
|
|
|
click = "^8.0.1"
|
2023-06-07 00:33:48 +00:00
|
|
|
flask = "2.2.5"
|
2022-10-12 14:22:22 +00:00
|
|
|
flask-admin = "*"
|
|
|
|
flask-bcrypt = "*"
|
|
|
|
flask-cors = "*"
|
2023-05-27 22:17:51 +00:00
|
|
|
flask-jwt-extended = "^4.4.4"
|
2022-10-12 14:22:22 +00:00
|
|
|
flask-mail = "*"
|
|
|
|
flask-marshmallow = "*"
|
|
|
|
flask-migrate = "*"
|
|
|
|
flask-restful = "*"
|
2023-05-27 22:17:51 +00:00
|
|
|
flask-simple-crypt = "^0.3.3"
|
2022-10-12 14:22:22 +00:00
|
|
|
werkzeug = "*"
|
2023-09-28 19:51:48 +00:00
|
|
|
SpiffWorkflow = {git = "https://github.com/sartography/SpiffWorkflow", rev = "main"}
|
2023-05-10 14:49:39 +00:00
|
|
|
# SpiffWorkflow = {develop = true, path = "../../spiffworkflow/" }
|
Feature/interstitial summary part 3 (#367)
* throw an error if backend gives a 500 from interstitial page w/ burnettk
* turn unexpected errors for the interstitial page into event stream responses to avoid error misdirection
* pyl
* raise the api_error from the original and make the render_data method private
* Feature/interstitial summary (#337)
* * Process instance logs and messages are now components rather than pages, and are included within tabs on the process instance page, along with the diagram.
* Removed the Zoom and Move modules when showing the readonly
Diagram. Assured this readonly view is resized to fit the space when possible.
* Checkbox Widget no longer displays a duplicate label.
* CSS Tweaks
* All pages are limited to a max display width of 1440, with auto margins to center the main content on the page.
* "Show" pages, like ProcessInstanceShow, TaskShow have the primary content limited to 1000, also with auto-margins.
* Paragraphs, headings, blockquotes, list items are limited to a width of 640.
* Reduced margin bottom on all breadcrumbs.
* Slightly reduced the width and margin of tiles
* ordered lists and unordered lists show numbers and bullets now.
* End user Instructions component can, optionally, auto-collapse, so that only a portion is displayed, along with a toggle. This is how it is set up for the ProcessInstanceShow page.
* Greatly reduced the lag in the interstitial page when doing a re-direct.
* run_pyl
* kill console
* wait for permissionsLoaded too since we are using ability.can
* Previous change removed the top level Messages page - this re-adds it.
* I am always, ALWAYS shocked at how I can not wrap my head around when and where to use "useEffect".
This should cause the show/hide Instructions toggle to only show when useful.
* Minor cleanup on the process instance properties display.
* linting
---------
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
* Fix a linting error.
* minor permissions related fixes for the new ui.
* Revert "Revert "Feature/better subworkflow management (#331)""
This reverts commit 48dcde8faf00241201c515b54444fe9fb373c7f4.
* do not execute tasks from the process instance show page w/ burnettk
* pyl w/ burnettk
* Very minor UI tweak to resolve a number of issues mentioned in SPIFF-316 Notion Ticket:
* Markdown links now open in a new window
* Tables on the home pages are now contained within Grids to better align them with the other content that is in a grid.
* Right aligned the "process instance list link" button to it is flush right with the table underneath
* Gave a little more breathing room the content on the info/metadata in the process instance view .
* updated docker image build action to contain the appropriate version info w/ burnettk
* properly resize to the available columns depending on s/m/l
---------
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
Co-authored-by: Dan Funk <daniel.h.funk@gmail.com>
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
2023-07-03 05:24:54 +00:00
|
|
|
# SpiffWorkflow = {develop = true, path = "../../SpiffWorkflow/" }
|
2022-10-21 20:28:09 +00:00
|
|
|
sentry-sdk = "^1.10"
|
2023-05-18 22:42:40 +00:00
|
|
|
# sphinx-autoapi = "^2.0"
|
2022-10-12 14:22:22 +00:00
|
|
|
psycopg2 = "^2.9.3"
|
2022-10-12 19:28:52 +00:00
|
|
|
typing-extensions = "^4.4.0"
|
2023-03-28 18:58:16 +00:00
|
|
|
|
|
|
|
# pinned to higher than 65.5.0 because of a vulnerability
|
|
|
|
# and to lower than 67 because i didn't feel like addressing
|
|
|
|
# new deprecation warnings. we don't need this library explicitly,
|
|
|
|
# but at one time it was pulled in by various libs we depend on.
|
|
|
|
setuptools = "^65.5.1"
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
connexion = {extras = [ "swagger-ui",], version = "^2"}
|
|
|
|
lxml = "^4.9.1"
|
|
|
|
marshmallow-enum = "^1.5.1"
|
2022-10-21 21:28:37 +00:00
|
|
|
PyJWT = "^2.6.0"
|
2022-10-12 14:22:22 +00:00
|
|
|
gunicorn = "^20.1.0"
|
2022-11-22 02:15:48 +00:00
|
|
|
APScheduler = "*"
|
2022-10-12 14:22:22 +00:00
|
|
|
Jinja2 = "^3.1.2"
|
2022-11-09 18:45:16 +00:00
|
|
|
RestrictedPython = "^6.0"
|
2022-10-12 14:22:22 +00:00
|
|
|
Flask-SQLAlchemy = "^3"
|
|
|
|
|
2022-10-21 14:36:41 +00:00
|
|
|
# https://github.com/dropbox/sqlalchemy-stubs/pull/251
|
|
|
|
# someday get off github
|
|
|
|
# sqlalchemy-stubs = "^0.4"
|
|
|
|
# sqlalchemy-stubs = { git = "https://github.com/dropbox/sqlalchemy-stubs.git", rev = "master" }
|
|
|
|
# sqlalchemy-stubs = {develop = true, path = "/Users/kevin/projects/github/sqlalchemy-stubs"}
|
|
|
|
# for now use my fork
|
|
|
|
sqlalchemy-stubs = { git = "https://github.com/burnettk/sqlalchemy-stubs.git", rev = "scoped-session-delete" }
|
2022-10-21 20:18:25 +00:00
|
|
|
simplejson = "^3.17.6"
|
2022-11-02 15:35:10 +00:00
|
|
|
pytz = "^2022.6"
|
|
|
|
dateparser = "^1.1.2"
|
2023-06-02 16:09:24 +00:00
|
|
|
cryptography = "^41.0"
|
2023-03-23 02:40:56 +00:00
|
|
|
prometheus-flask-exporter = "^0.22.3"
|
2022-10-21 14:36:41 +00:00
|
|
|
|
2023-03-28 19:56:00 +00:00
|
|
|
sqlalchemy = "^2.0.7"
|
2023-03-28 20:55:13 +00:00
|
|
|
marshmallow-sqlalchemy = "^0.29.0"
|
2023-09-07 14:33:38 +00:00
|
|
|
spiff-element-units = "^0.3.1"
|
2022-10-12 14:22:22 +00:00
|
|
|
|
2023-07-12 14:14:49 +00:00
|
|
|
# mysqlclient lib is deemed better than the mysql-connector-python lib by sqlalchemy
|
|
|
|
# https://docs.sqlalchemy.org/en/20/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector
|
|
|
|
mysqlclient = "^2.2.0"
|
2023-08-21 16:28:55 +00:00
|
|
|
flask-session = "^0.5.0"
|
|
|
|
flask-oauthlib = "^0.9.6"
|
2023-07-12 14:14:49 +00:00
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
[tool.poetry.dev-dependencies]
|
2023-03-06 15:12:54 +00:00
|
|
|
pytest = "^7.1.2"
|
2022-10-12 14:22:22 +00:00
|
|
|
coverage = {extras = ["toml"], version = "^6.1"}
|
2023-05-27 22:17:51 +00:00
|
|
|
safety = "^2.3.5"
|
2022-10-12 14:22:22 +00:00
|
|
|
mypy = ">=0.961"
|
2023-05-01 19:26:29 +00:00
|
|
|
typeguard = "^3"
|
2022-10-12 14:22:22 +00:00
|
|
|
xdoctest = {extras = ["colors"], version = "^1.0.1"}
|
|
|
|
pre-commit = "^2.20.0"
|
|
|
|
black = ">=21.10b0"
|
2023-05-27 00:01:08 +00:00
|
|
|
ruff = "^0.0.270"
|
2022-10-12 14:22:22 +00:00
|
|
|
|
2023-07-25 17:27:53 +00:00
|
|
|
pytest-random-order = "^1.1.0"
|
|
|
|
pytest-flask = "^1.2.0"
|
|
|
|
pytest-flask-sqlalchemy = "^1.1.0"
|
|
|
|
pytest-xdist = "^3.3.1"
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
# 1.7.3 broke us. https://github.com/PyCQA/bandit/issues/841
|
2023-03-06 15:12:54 +00:00
|
|
|
bandit = "1.7.2"
|
2022-10-12 14:22:22 +00:00
|
|
|
|
|
|
|
# flask-sqlalchemy-stubs = "^0.2"
|
|
|
|
pre-commit-hooks = "^4.0.1"
|
|
|
|
Pygments = "^2.10.0"
|
|
|
|
|
2023-08-03 15:49:30 +00:00
|
|
|
# type hinting stuff
|
|
|
|
types-dateparser = "^1.1.4.1"
|
|
|
|
types-Werkzeug = "^1.0.9"
|
|
|
|
types-PyYAML = "^6.0.12"
|
|
|
|
types-Flask = "^1.1.6"
|
|
|
|
types-requests = "^2.28.6"
|
|
|
|
types-pytz = "^2022.1.1"
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
[tool.poetry.scripts]
|
|
|
|
spiffworkflow-backend = "spiffworkflow_backend.__main__:main"
|
|
|
|
|
|
|
|
[tool.pytest.ini_options]
|
|
|
|
# ignore deprecation warnings from various packages that we don't control
|
|
|
|
filterwarnings = [
|
|
|
|
# note the use of single quote below to denote "raw" strings in TOML
|
|
|
|
# kombu/utils/compat.py:82
|
|
|
|
'ignore:SelectableGroups dict interface is deprecated. Use select.',
|
|
|
|
# flask_marshmallow/__init__.py:34
|
|
|
|
# marshmallow_sqlalchemy/convert.py:17
|
|
|
|
'ignore:distutils Version classes are deprecated. Use packaging.version instead.',
|
|
|
|
# connexion/spec.py:50
|
|
|
|
'ignore:Passing a schema to Validator.iter_errors is deprecated and will be removed in a future release',
|
|
|
|
# connexion/decorators/validation.py:16
|
|
|
|
'ignore:Accessing jsonschema.draft4_format_checker is deprecated and will be removed in a future release.',
|
|
|
|
# connexion/apis/flask_api.py:236
|
|
|
|
"ignore:'_request_ctx_stack' is deprecated and will be removed in Flask 2.3",
|
|
|
|
"ignore:Setting 'json_encoder' on the app or a blueprint is deprecated and will be removed in Flask 2.3",
|
|
|
|
"ignore:'JSONEncoder' is deprecated and will be removed in Flask 2.3",
|
2023-03-17 02:42:35 +00:00
|
|
|
"ignore:'app.json_encoder' is deprecated and will be removed in Flask 2.3",
|
|
|
|
# SpiffWorkflow/bpmn/PythonScriptEngineEnvironment.py
|
|
|
|
'ignore:The usage of Box has been deprecated'
|
2022-10-12 14:22:22 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
[tool.coverage.paths]
|
|
|
|
source = ["src", "*/site-packages"]
|
|
|
|
tests = ["tests", "*/tests"]
|
|
|
|
|
|
|
|
[tool.coverage.run]
|
|
|
|
branch = true
|
|
|
|
source = ["spiffworkflow_backend", "tests"]
|
|
|
|
|
|
|
|
[tool.coverage.report]
|
|
|
|
show_missing = true
|
|
|
|
fail_under = 50
|
|
|
|
|
|
|
|
[tool.mypy]
|
|
|
|
strict = true
|
|
|
|
disallow_any_generics = false
|
|
|
|
warn_unreachable = true
|
|
|
|
pretty = true
|
|
|
|
show_column_numbers = true
|
|
|
|
show_error_codes = true
|
|
|
|
show_error_context = true
|
|
|
|
plugins = "sqlmypy"
|
|
|
|
|
|
|
|
# We get 'error: Module has no attribute "set_context"' for sentry-sdk without this option
|
|
|
|
implicit_reexport = true
|
|
|
|
|
|
|
|
# allow for subdirs to NOT require __init__.py
|
|
|
|
namespace_packages = true
|
|
|
|
explicit_package_bases = false
|
|
|
|
|
2023-05-29 15:52:35 +00:00
|
|
|
# [tool.pyright]
|
|
|
|
# Pyright: Import "flask" could not be resolved
|
|
|
|
# ultimately resolved by creating a pyrightconfig.json file with venv and venvPath
|
|
|
|
# Pyright: "hey" is not accessed
|
|
|
|
# See: https://github.com/microsoft/pyright/discussions/3929#discussioncomment-5434231
|
|
|
|
# "Those are not warnings" and cannot be turned off like this:
|
|
|
|
# reportUnusedVariable = false
|
|
|
|
# solution was https://www.reddit.com/r/neovim/comments/11k5but/comment/jbjwwtf in vim settings
|
2023-05-28 02:33:53 +00:00
|
|
|
|
2023-05-26 17:07:18 +00:00
|
|
|
[tool.ruff]
|
2023-05-27 00:01:08 +00:00
|
|
|
select = [
|
2023-05-27 22:17:51 +00:00
|
|
|
"B", # flake8-bugbear
|
2023-06-08 21:26:33 +00:00
|
|
|
"C", # mccabe
|
2023-05-27 22:17:51 +00:00
|
|
|
"E", # pycodestyle error
|
2023-05-27 22:34:04 +00:00
|
|
|
# "ERA", # eradicate
|
2023-05-27 18:59:52 +00:00
|
|
|
"F", # pyflakes
|
2023-05-30 11:15:49 +00:00
|
|
|
"N", # pep8-naming
|
2023-05-30 23:39:15 +00:00
|
|
|
"PL", # pylint
|
2023-05-30 23:53:26 +00:00
|
|
|
"S", # flake8-bandit
|
2023-05-27 18:59:52 +00:00
|
|
|
"UP", # pyupgrade
|
2023-05-27 22:17:51 +00:00
|
|
|
"W", # pycodestyle warning
|
2023-05-27 18:59:52 +00:00
|
|
|
"I001" # isort
|
2023-05-27 00:01:08 +00:00
|
|
|
]
|
2023-05-30 23:39:15 +00:00
|
|
|
|
|
|
|
ignore = [
|
2023-06-08 21:26:33 +00:00
|
|
|
"C901", # "complexity" category
|
2023-05-30 23:39:15 +00:00
|
|
|
"PLR", # "refactoring" category has "too many lines in method" type stuff
|
|
|
|
"PLC1901",
|
|
|
|
"PLE1205" # saw this Too many arguments for `logging` format string give a false positive once
|
|
|
|
]
|
|
|
|
|
2023-05-26 17:07:18 +00:00
|
|
|
line-length = 130
|
|
|
|
|
2023-05-27 22:17:51 +00:00
|
|
|
# target python 3.10
|
|
|
|
target-version = "py310"
|
|
|
|
|
2023-05-26 17:07:18 +00:00
|
|
|
[tool.ruff.per-file-ignores]
|
|
|
|
"migrations/versions/*.py" = ["E501"]
|
2023-05-30 23:53:26 +00:00
|
|
|
"tests/**/*.py" = ["PLR2004", "S101"] # PLR2004 is about magic vars, S101 allows assert
|
2023-05-26 17:07:18 +00:00
|
|
|
|
2023-05-27 00:01:08 +00:00
|
|
|
[tool.ruff.isort]
|
|
|
|
force-single-line = true
|
|
|
|
|
2022-10-12 14:22:22 +00:00
|
|
|
[build-system]
|
|
|
|
requires = ["poetry-core>=1.0.0"]
|
|
|
|
build-backend = "poetry.core.masonry.api"
|