Skip to content

Commit ce0c0ab

Browse files
committed
Remove pbr in favor of setuptools_scm
1 parent ec8defe commit ce0c0ab

File tree

10 files changed

+143
-131
lines changed

10 files changed

+143
-131
lines changed

.editorconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ trim_trailing_whitespace = true
1111
[*.py]
1212
indent_style = space
1313
indent_size = 4
14+
max_line_length = 88
1415

1516
[*.{rst,ini,cfg}]
1617
indent_style = space

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
prune tests

README.md

Lines changed: 0 additions & 80 deletions
This file was deleted.

README.rst

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
joeflow
2+
=======
3+
4+
**The lean workflow automation framework for machines with heart.**
5+
6+
.. figure:: docs/img/pexels-photo-1020325.jpeg
7+
:alt: a hand drawn robot
8+
9+
Joeflow is a free workflow automation framework designed to bring
10+
simplicity to complex workflows. Joeflow written in `Python`_ based on
11+
the world famous `Django`_ web framework.
12+
13+
Here is a little sample of what a process written in joeflow may look
14+
like:
15+
16+
.. code-block:: python
17+
18+
class WelcomeProcess(Process):
19+
user = models.ForeignKey(
20+
settings.AUTH_USER_MODEL,
21+
on_delete=models.CASCADE,
22+
blank=True, null=True,
23+
)
24+
25+
start = tasks.StartView(fields=['user'])
26+
27+
def has_user(self, task):
28+
if self.user_id is None:
29+
return []
30+
else:
31+
return [self.send_welcome_email]
32+
33+
def send_welcome_email(self, task):
34+
self.user.email_user(
35+
subject='Welcome',
36+
message='Hello %s!' % self.user.get_short_name(),
37+
)
38+
39+
edges = (
40+
(start, has_user),
41+
(has_user, send_welcome_email),
42+
)
43+
44+
Design Principles
45+
=================
46+
47+
Common sense is better than convention
48+
--------------------------------------
49+
50+
Joeflow does not follow any academic modeling notation developed by a
51+
poor PhD student who actually never worked a day in their life.
52+
Businesses are already complex which is why Joeflow is rather simple.
53+
There are only two types of tasks – human & machine – as well as edges
54+
to connect them. It’s so simple a toddler (or your CEO) could design a
55+
workflow.
56+
57+
Lean Automation (breaking the rules)
58+
------------------------------------
59+
60+
Things don’t always go according to plan especially when humans are
61+
involved. Even the best workflow can’t cover all possible edge cases.
62+
Joeflow embraces that fact. It allows uses to interrupt a process at any
63+
given point and modify it’s current state. All while tracking all
64+
changes. This allows developers to automate the main cases and users
65+
handle manually exceptions. This allows you businesses to ship
66+
prototypes and MVPs of workflows. Improvements can be shipped in
67+
multiple iterations without disrupting the business.
68+
69+
People
70+
------
71+
72+
Joeflow is build with all users in mind. Managers should be able to
73+
develop better processes. Users should able to interact with the tasks
74+
every single day. And developers should be able to rapidly develop and
75+
test new features.
76+
77+
Free
78+
----
79+
80+
Joeflow is open source and collaboratively developed by industry leaders
81+
in automation and digital innovation.
82+
83+
*Photo by rawpixel.com from Pexels*
84+
85+
.. _Python: https://python.org
86+
.. _Django: https://www.djangoproject.com/

docs/conf.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
extensions.append('sphinxcontrib.spelling')
2828

2929

30-
3130
def linkcode_resolve(domain, info):
3231
"""Link source code to GitHub."""
3332
project = 'joeflow'

requirements.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

setup.cfg

Lines changed: 52 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
[metadata]
22
name = joeflow
3-
description = The lean workflow automation framework for machines with heart
4-
long_description = file: README.md
5-
long_description_content_type = text/markdown; charset=UTF-8
63
author = Johannes Hoppe
7-
author-email = [email protected]
4+
author_email = [email protected]
5+
description = The lean workflow automation framework for machines with heart
6+
long_description = file: README.rst
87
license = BSD
9-
home-page = https://github.com/codingjoe/joeflow
8+
license_file = LICENSE
9+
url = https://github.com/codingjoe/joeflow
1010
# Find more classifiers here:
1111
# https://pypi.org/pypi?%3Aaction=list_classifiers
1212
classifier =
1313
Development Status :: 1 - Planning
1414
Framework :: Django
1515
Framework :: Django :: 2.0
1616
Framework :: Django :: 2.1
17+
Framework :: Django :: 2.2
1718
Environment :: Web Environment
1819
License :: OSI Approved :: BSD License
1920
Operating System :: OS Independent
@@ -39,25 +40,37 @@ keywords =
3940
framework
4041
task
4142

43+
[options]
44+
include_package_data = True
45+
packages = joeflow
46+
install_requires =
47+
django>=2.0
48+
django-appconf
49+
celery>=4.0.0
50+
redis
51+
graphviz
52+
setup_requires =
53+
setuptools_scm
54+
sphinx
55+
pytest-runner
4256
tests_require =
4357
pytest
4458
pytest-django
4559

46-
[files]
47-
packages =
48-
joeflow
60+
[options.extras_require]
61+
test =
62+
pytest
63+
pytest-django
4964

50-
[extras]
5165
reversion =
5266
django-reversion
5367

68+
[bdist_wheel]
69+
universal = 1
70+
5471
[aliases]
5572
test = pytest
5673

57-
[pbr]
58-
skip_authors = true
59-
skip_changelog = true
60-
6174
[build_sphinx]
6275
source-dir = docs
6376
build-dir = docs/_build
@@ -74,4 +87,29 @@ match_dir = (?!tests|env|docs|\.).*
7487
match = (?!setup).*.py
7588

7689
[flake8]
77-
max-line-length = 99
90+
ignore = E731
91+
max-line-length = 88
92+
exclude = joeflow/migrations/*
93+
94+
[tox:tox]
95+
envlist = py{35,36,37}-dj{20,21,master},docs,reversion
96+
basepython = python3.7
97+
98+
[testenv]
99+
deps=
100+
coverage
101+
-e.[test]
102+
dj20: https://github.com/django/django/archive/stable/2.0.x.tar.gz#egg=django
103+
dj21: https://github.com/django/django/archive/stable/2.1.x.tar.gz#egg=django
104+
djmaster: https://github.com/django/django/archive/master.tar.gz#egg=django
105+
reversion: django-reversion
106+
commands=
107+
coverage run --source=joeflow -m 'pytest' \
108+
--basetemp={envtmpdir} \
109+
--ignore=.tox \
110+
{posargs}
111+
112+
[testenv:docs]
113+
deps=
114+
sphinxcontrib-spelling
115+
commands=python setup.py build_sphinx -W -b spelling

setup.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,4 @@
22
from setuptools import setup
33

44

5-
setup(
6-
pbr=True,
7-
setup_requires=[
8-
'pbr',
9-
'sphinx',
10-
],
11-
)
5+
setup(name='joeflow', use_scm_version=True)

tests/test_models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,4 +428,5 @@ def test_save__no_update_fields(self, db):
428428
task = process.task_set.create()
429429
with pytest.raises(ValueError) as e:
430430
task.save()
431-
assert "You need to provide explicit 'update_fields' to avoid race conditions." in str(e)
431+
assert ("You need to provide explicit 'update_fields'"
432+
" to avoid race conditions.") in str(e.value)

tox.ini

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)