Skip to content

Commit 0fc22fb

Browse files
committed
reorganize, fix links, and update formatting
1 parent 6f61fa8 commit 0fc22fb

File tree

1 file changed

+88
-64
lines changed

1 file changed

+88
-64
lines changed

content/contributing-code/python-guidelines/contents.lr

+88-64
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,98 @@ focus on the intent of the code and work together with a minimum of friction.
99
---
1010
body:
1111

12+
1213
## Need of Guidelines
1314

1415
These Python Guidelines provides context to the developers who are new to the
1516
codebase and wishes to make any real-world contribution with
1617
`org:creativecommons` and be a part of the organization and learn new things
1718
with the organization.
1819

19-
## Code Formatting
20+
21+
## Development Environment
22+
2023

2124
### Overview
2225

23-
All Python code must be formatted using [Black][black], *the uncompromising
24-
Python code formatter*. Each project should contain a `pyproject.toml`
26+
Please work to minimize the number of development related technologies. This
27+
helps minimize the overhead of contributing to multiple projects. Most of our
28+
projects use either [Pipenv][pipenv], _the Python Development Workflow for
29+
Humans_, or [docker-compose][dockercompose], _a tool for defining and running
30+
multi-container Docker applications_.
31+
32+
[pipenv]: https://github.com/pypa/pipenv
33+
[dockercompose]: https://docs.docker.com/compose/
34+
35+
36+
### Examples
37+
38+
- Pipenv configuration: [GitHub Search · org:creativecommons
39+
filename:Pipfile][pipenvconf]
40+
- Docker Compose configuration: [GitHub Search · org:creativecommons
41+
filename:docker-compose.yml][dockercomposeconf]
42+
43+
[pipenvconf]: https://github.com/search?q=org%3Acreativecommons+filename:Pipfile
44+
[dockercomposeconf]: https://github.com/search?q=org%3Acreativecommons+filename%3Adocker-compose.yml
45+
[relatedreadme]: https://github.com/creativecommons/cccatalog#development-setup-for-airflow-and-api-puller-scripts
46+
47+
48+
## Development Tools
49+
50+
### Tool Order
51+
52+
The recommended order to execute the tools described below is:
53+
1. `isort` (will make changes)
54+
2. `black` (will make changes)
55+
3. `flake8` (issues warnings)
56+
57+
Many of the Python repositories have a `tools.sh` helper script to execute them
58+
in order: [GitHub Search · org:creativecommons filename:tools.sh][tools-sh].
59+
60+
[tools-sh]: https://github.com/search?q=org%3Acreativecommons+filename%3Atools.sh
61+
62+
63+
### Handling Imports (isort)
64+
65+
66+
#### Overview
67+
68+
All the imports in the Python code must be done via [isort][isort], a _Python
69+
utility/library to sort imports_ alphabetically, and automatically separated
70+
into sections and by type. It provides a command line utility, Python library
71+
and [plugins for various editors][isort-plugins] to quickly sort all your
72+
imports. It requires Python 3.6+ to run but supports formatting Python 2 code
73+
too.
74+
75+
[isort]: https://github.com/pycqa/isort
76+
[isort-plugins]: https://github.com/pycqa/isort/wiki/isort-Plugins
77+
78+
79+
#### Configuration
80+
81+
There's a good `isort` config which one should follow while contributing
82+
in the Python projects of the creativecommons. These configurations should
83+
be a part of `pyproject.toml` labelled as `[tools.isort]`
84+
85+
- isort configuration (`pyproject.toml`): [GitHub Search · org:creativecommons
86+
filename:pyproject.toml][isortconfig]
87+
88+
[isortconfig]: https://github.com/search?q=org%3Acreativecommons+filename:pyproject.toml
89+
90+
91+
### Code Formatting (black)
92+
93+
94+
#### Overview
95+
96+
All Python code must be formatted using [Black][black], _the uncompromising
97+
Python code formatter_. Each project should contain a `pyproject.toml`
2598
configuration file that limits line length to 79 characters.
2699

27100
[black]: https://github.com/psf/black
28101

29-
### Examples
102+
103+
#### Examples
30104

31105
- Black configuration (`pyproject.toml`): [GitHub Search · org:creativecommons
32106
filename:pyproject.toml][blackconfig]
@@ -37,17 +111,19 @@ configuration file that limits line length to 79 characters.
37111
[blackactions]: https://github.com/search?q=org%3Acreativecommons+%22pipenv+run+black%22&type=code
38112

39113

40-
## Style and Quality
114+
### Style and Quality (flake8)
41115

42-
### Overview
43116

44-
All Python code must be checked using [flake8][flake8], *a python tool that
45-
glues together pep8, pyflakes, mccabe, and third-party plugins to check
46-
the style and quality of some python code.*
117+
#### Overview
118+
119+
All Python code must be checked using [flake8][flake8], _a python tool that
120+
glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check
121+
the style and quality of some python code._
47122

48-
[flake8]: https://gitlab.com/pycqa/flake8
123+
[flake8]: https://github.com/pycqa/flake8
49124

50-
### Conflicts with Black
125+
126+
#### Conflicts with Black
51127

52128
Where flake8 conflicts with Black, the flake8 check should be skipped. For
53129
example, there are instances where black formats code that generates flake8
@@ -56,7 +132,7 @@ warning for [Whitespace before ':' (E203)][e203].
56132
[e203]: https://www.flake8rules.com/rules/E203.html
57133

58134

59-
### Examples
135+
#### Examples
60136

61137
- flake8 configuration (`.flake8`): [GitHub Search · org:creativecommons
62138
filename:.flake8][flake8conf]
@@ -69,58 +145,6 @@ warning for [Whitespace before ':' (E203)][e203].
69145
[skipe203]: https://github.com/search?q=org%3Acreativecommons+%22noqa%3A+E203%22&type=code
70146
[flake8actions]: https://github.com/search?q=org%3Acreativecommons+%22pipenv+run+flake8%22&type=code
71147

72-
## Handling Imports
73-
74-
### Overview
75-
76-
All the imports in the Python code must be done via [isort][isort], a Python
77-
utility/library to sort imports alphabetically, and automatically separated
78-
into sections and by type.
79-
It provides a command line utility, Python library and
80-
[plugins for various editors](https://github.com/pycqa/isort/wiki/isort-Plugins)
81-
to quickly sort all your imports. It requires Python 3.6+ to run but
82-
supports formatting Python 2 code too.
83-
84-
[isort]: https://github.com/pycqa/isort
85-
86-
87-
### Configuration
88-
89-
There's a good `isort` config which one should follow while contributing
90-
in the Python projects of the creativecommons. These configurations should
91-
be a part of `pyproject.toml` labelled as `[tools.isort]`
92-
93-
- Isort Configuration (`pyproject.toml`): [GitHub Search · org:creativecommons
94-
filename:pyproject.toml][isortconfig]
95-
96-
[isortconfig]: https://github.com/search?q=org%3Acreativecommons+filename:pyproject.toml
97-
98-
99-
## Development Environment
100-
101-
### Overview
102-
103-
Please work to minimize the number of development related technologies. This
104-
helps minimize the overhead of contributing to multiple projects. Most of our
105-
projects use either [Pipenv][pipenv], *the Python Development Workflow for
106-
Humans,* or [docker-compose][dockercompose], *a tool for defining and running
107-
multi-container Docker applications.*
108-
109-
[pipenv]: https://github.com/pypa/pipenv
110-
[dockercompose]: https://docs.docker.com/compose/
111-
112-
113-
### Examples
114-
115-
- Pipenv configuration: [GitHub Search · org:creativecommons
116-
filename:Pipfile][pipenvconf]
117-
- Docker-compose example: [docker-compose.yml for cccatalog][dockercomposeconf]
118-
and the [related README.md][relatedreadme]
119-
120-
[pipenvconf]: https://github.com/search?q=org%3Acreativecommons+filename:Pipfile
121-
[dockercomposeconf]: https://github.com/creativecommons/cccatalog/blob/master/src/cc_catalog_airflow/docker-compose.yml
122-
[relatedreadme]: https://github.com/creativecommons/cccatalog#development-setup-for-airflow-and-api-puller-scripts
123-
124148

125149
## Additional Guidance
126150

0 commit comments

Comments
 (0)