Skip to content

Commit 400cb69

Browse files
committed
merge in default branch to see if ti clears a travis-ci build error on 2.7 python; default branch builds fine
2 parents cbf09e3 + b835e88 commit 400cb69

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+2892
-622
lines changed

.github/workflows/anchore.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
runs-on: ubuntu-latest
3838
steps:
3939
- name: Checkout the code
40-
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
40+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
4141
- name: Build the Docker image
4242
run: docker pull python:3-alpine; docker build . --file scripts/Docker/Dockerfile --tag localbuild/testimage:latest
4343
- name: List the Docker image

.github/workflows/ci-test.yml

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ jobs:
3232
test:
3333
name: CI build test
3434

35-
# run the finalizer for coveralls even if one or more
36-
# experimental matrix runs fail.
37-
# continue-on-error: ${{ matrix.experimental }}
38-
3935
#runs-on: ubuntu-latest
4036
# use below if running on multiple OS's.
4137
runs-on: ${{ matrix.os }}
@@ -61,13 +57,14 @@ jobs:
6157
os: [ubuntu-latest, ubuntu-20.04]
6258

6359
# if the ones above fail. fail the build
64-
experimental: [false]
60+
experimental: [ false ]
6561

6662
include:
6763
# example: if 3.12 fails the jobs still succeeds
68-
- python-version: 3.12
64+
- python-version: 3.12
6965
os: ubuntu-22.04
70-
experimental: [true]
66+
experimental: true
67+
7168
# 3.6 not available on new 22.04 runners, so run on 20.04 ubuntu
7269
- python-version: 3.6
7370
os: ubuntu-20.04
@@ -76,6 +73,12 @@ jobs:
7673
# skip all python versions on 20.04 except explicitly included
7774
- os: ubuntu-20.04
7875

76+
# run the finalizer for coveralls even if one or more
77+
# experimental matrix runs fail.
78+
# moving it above strategy produces unexpected value false
79+
# moving it below (here) produces unexpected value ''.
80+
# continue-on-error: ${{ matrix.experimental }}
81+
7982
env:
8083
# get colorized pytest output even without a controlling tty
8184
PYTEST_ADDOPTS: "--color=yes"
@@ -90,11 +93,11 @@ jobs:
9093
# if: {{ false }}
9194
# continue running if step fails
9295
# continue-on-error: true
93-
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
96+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
9497

9598
# Setup version of Python to use
9699
- name: Set Up Python ${{ matrix.python-version }}
97-
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
100+
uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
98101
with:
99102
python-version: ${{ matrix.python-version }}
100103
allow-prereleases: true
@@ -254,7 +257,7 @@ jobs:
254257
- name: Upload coverage to Coveralls
255258
# python 2.7 and 3.6 versions of coverage can't produce lcov files.
256259
if: matrix.python-version != '2.7' && matrix.python-version != '3.6'
257-
uses: coverallsapp/github-action@c7885c00cb7ec0b8f9f5ff3f53cddb980f7a4412 # master
260+
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # master
258261
with:
259262
github-token: ${{ secrets.GITHUB_TOKEN }}
260263
path-to-lcov: coverage.lcov
@@ -290,7 +293,7 @@ jobs:
290293

291294
steps:
292295
- name: Coveralls Finished
293-
uses: coverallsapp/github-action@c7885c00cb7ec0b8f9f5ff3f53cddb980f7a4412 # master
296+
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # master
294297
with:
295298
github-token: ${{ secrets.github_token }}
296299
parallel-finished: true

.github/workflows/codeql-analysis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949

5050
steps:
5151
- name: Checkout repository
52-
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.6.0
52+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v2.6.0
5353

5454
# Initializes the CodeQL tools for scanning.
5555
- name: Initialize CodeQL

.github/workflows/ossf-scorecard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535

3636
steps:
3737
- name: "Checkout code"
38-
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.1.0
38+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v3.1.0
3939
with:
4040
persist-credentials: false
4141

@@ -62,7 +62,7 @@ jobs:
6262
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
6363
# format to the repository Actions tab.
6464
- name: "Upload artifact"
65-
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
65+
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
6666
with:
6767
name: SARIF file
6868
path: results.sarif

.hgtags

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,4 @@ c90104abe508e3886917243e4acd069c8ef7a1a4 2.2.0
142142
0000000000000000000000000000000000000000 2.2.0
143143
239d9542b02062c56f88fd1de8b87c4d88d700ad 2.2.0
144144
51fc06fabcee043db116e2fbdcdcf5e86b67ed3d 2.3.0b2
145+
913a73b9fab58e9c7e43e1fad379b68cae6ee3ae 2.3.0

CHANGES.txt

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,55 @@ v2.7.2 or later are required to run newer releases of Roundup.
1212
Roundup 2.0 supports Python 3.4 and later. Roundup 2.1.0 supports
1313
python 3.6 or newer (3.4/3.5 might work, but they are not tested).
1414

15-
2023-xx-yy 2.3.0
15+
2024-XX-YY 2.4.0
16+
17+
Fixed:
18+
19+
- issue2551063 - Rest/Xmlrpc interfaces needs failed login protection.
20+
Failed API login rate limiting with expiring lockout added. (John
21+
Rouillard)
22+
- issue2551184 - improve i18n handling. Patch to test to make sure it
23+
uses the test tracker's locale files and not other locale
24+
files. (Marcus Priesch)
25+
- issue2551283 - fail if version 2.4.9 of markdown2 is used, it broke
26+
[issue1](issue1) style links. Support markdown2 2.4.8 and earlier
27+
and 2.4.10 with its new schema filtering method. (John Rouillard)
28+
- multiple flake8 fixes (John Rouillard)
29+
- rename loop variable in 'for sendto in sendto:' (John Rouillard)
30+
- issue2551193 - Fix roundup for removal of cgi and cgitb standard
31+
python modules (and FieldStorage/MiniFieldStorage). Replaced imports
32+
from cgi to use roundup.anypy.cgi_ which will load the system cgi
33+
unless it is missing. Then it will load roundup.anypy.vendored.cgi
34+
and make *FieldStroage symbols available. Roundp uses its own
35+
cgitb.py and not the system cgitb.py. It looks like it's the
36+
precursor to the system cgitb.py. (John Rouillard)
37+
- issue2551278 - datetime.datetime.utcnow deprecation. Replace
38+
calls with equivalent that produces timezone aware dates rather than
39+
naive dates. (John Rouillard)
40+
- when using "roundup-admin display" indent the listing only if
41+
headers or protected fields are requested. This makes the output
42+
look like it did previously to 2.3.0 if the new features aren't
43+
used. Roundup-admin output was never meant to be machine parsed, but
44+
don't break it unless required. (John Rouillard)
45+
- issue2551290 - pip install roundup Hangs on Windows 10
46+
The install under windows goes into an infinite loop using pip or
47+
source install. (John Rouillard)
48+
- Document use of pyreadline3 to allow roundup-admin to have CLI editing
49+
on windows. (John Rouillard)
50+
51+
Features:
52+
53+
- issue2551103 - add pragma 'display_protected' to roundup-admin. If
54+
true, print protected attributes like id, activity, actor...
55+
when using display or specification subcommands. (John Rouillard)
56+
- add -P pragma=value command line option to roundup-admin. Allows
57+
setting pragmas when using non-interactive mode. (John Rouillard)
58+
- issue685275 - add pragma show_retired to control display of retired
59+
items when using list/table. Add pragma display_header to print
60+
headers for display command. Header displays designator and
61+
retired/active status.
62+
63+
2023-07-13 2.3.0
1664

1765
Fixed:
1866

COPYING.txt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,59 @@ accompanying credits file.
113113

114114

115115
Note link for http://www.zope.com/Marks is dead.
116+
117+
Vendored cgi.py module
118+
----------------------
119+
120+
This module is licensed under the Python Software Foundation License
121+
Version 2 as it was extracted from the 3.12 Python distribution.
122+
123+
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
124+
--------------------------------------------
125+
126+
1. This LICENSE AGREEMENT is between the Python Software Foundation
127+
("PSF"), and the Individual or Organization ("Licensee") accessing
128+
and otherwise using this software ("Python") in source or binary
129+
form and its associated documentation.
130+
131+
2. Subject to the terms and conditions of this License Agreement, PSF
132+
hereby grants Licensee a nonexclusive, royalty-free, world-wide
133+
license to reproduce, analyze, test, perform and/or display
134+
publicly, prepare derivative works, distribute, and otherwise use
135+
Python alone or in any derivative version, provided, however, that
136+
PSF's License Agreement and PSF's notice of copyright, i.e.,
137+
"Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
138+
2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
139+
2020, 2021, 2022 Python Software Foundation; All Rights Reserved"
140+
are retained in Python alone or in any derivative version prepared
141+
by Licensee.
142+
143+
3. In the event Licensee prepares a derivative work that is based on
144+
or incorporates Python or any part thereof, and wants to make the
145+
derivative work available to others as provided herein, then
146+
Licensee hereby agrees to include in any such work a brief summary
147+
of the changes made to Python.
148+
149+
4. PSF is making Python available to Licensee on an "AS IS" basis.
150+
PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY
151+
WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY
152+
REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY
153+
PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY
154+
THIRD PARTY RIGHTS.
155+
156+
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
157+
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A
158+
RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR
159+
ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
160+
161+
6. This License Agreement will automatically terminate upon a material
162+
breach of its terms and conditions.
163+
164+
7. Nothing in this License Agreement shall be deemed to create any
165+
relationship of agency, partnership, or joint venture between PSF
166+
and Licensee. This License Agreement does not grant permission to
167+
use PSF trademarks or trade name in a trademark sense to endorse or
168+
promote products or services of Licensee, or any third party.
169+
170+
8. By copying, installing or otherwise using Python, Licensee agrees
171+
to be bound by the terms and conditions of this License Agreement.

RELEASE.txt

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ Roundup release checklist:
3333
CHANGES.txt (set date for version as well)
3434
roundup/__init__.py
3535
website/www/index.txt (current stable version, release highlights)
36-
website/www/conf.py (update copyright, version from __init__.py)
37-
scripts/Docker/Docker update value of org.opencontainers.image.version
36+
website/www/conf.py (update copyright, version auto-set from
37+
roundup/__init__.py)
38+
scripts/Docker/Dockerfile update value of
39+
org.opencontainers.image.version
3840
3a. Update license end date in COPYING.txt
3941
3b. Update doc/acknowledgements.txt (add section for
4042
release, churn contributers etc.). (Use hg churn -c -r ####..####)
@@ -101,7 +103,7 @@ Roundup release checklist:
101103
added and removed files. Last release e.g. 1.5.1 where tip is what would
102104
become 1.6) E.G.
103105

104-
hg status --rev 2.0.0:tip | sed -ne 's/^A //p' | while read i ; \
106+
hg status --rev 2.2.0:tip | sed -ne 's/^A //p' | while read i ; \
105107
do echo $i; grep "$i" roundup.egg-info/SOURCES.txt; done | \
106108
uniq -c | sort -rn
107109

@@ -112,7 +114,7 @@ Roundup release checklist:
112114
(Note: files under website/ shouldn't be in the manifest.)
113115
10a: Check for removed files still in manifest:
114116

115-
hg status --rev 2.0.0:tip | sed -ne 's/^R //p' | while read i ; \
117+
hg status --rev 2.2.0:tip | sed -ne 's/^R //p' | while read i ; \
116118
do echo $i; grep "$i" roundup.egg-info/SOURCES.txt; done | \
117119
uniq -c | sort -n
118120

@@ -128,6 +130,26 @@ Roundup release checklist:
128130
with all available Python versions.
129131
11a. (TBD how to test wheel binary distribution before uploading.)
130132

133+
11b. Generate GPG signature file
134+
135+
cd dist
136+
gpg --detach-sign --armor -u 1F2DD0CB756A76D8 <filename>.tar.gz
137+
138+
you should be prompted to use the roundup release key. If not you
139+
140+
This will create a file by the name <filename>.tar.gz.asc.
141+
142+
Move file to website/www/signature directory
143+
144+
mv <filename>.tar.gz.asc ../webite/www/signatures/.
145+
hg add ../website/www/signature/<filename>.tar.gz.asc
146+
# commiting the file will be done in step 12
147+
cd ..
148+
149+
Add a link to the signature to doc/security.txt. Add a new link
150+
to the start of the signature list in doc/security.txt (look for
151+
the word multicol).
152+
131153
12. Assuming all is well commit and tag the release in the version-control
132154
system.
133155
a) hg commit ... # commit any edits from steps 1-5
@@ -137,32 +159,11 @@ Roundup release checklist:
137159

138160
13. Upload source distribution to PyPI - requires you sign up for a
139161
pypi account and be added as a maintainer to roundup. Ask existing
140-
maintainer for access. You can do this two ways:
141-
142-
python3 setup.py sdist upload --repository pypi
162+
maintainer for access. Do this using twine (pip install twine).
143163

144-
which rebuilds the source distribution tarball and uploads it.
145-
This means that you have uploaded something that is not tested,
146-
also it does not have a gpg signature. It should be the same as
147-
the tarball you tested but....
148-
149-
A better way to do this is to use twine (pip install twine).
150-
You need to sign the tarball. This can be done with:
151-
152-
cd dist
153-
gpg --detach-sign --armor -u 1F2DD0CB756A76D8 <filename>.tgz
154-
155-
you should be prompted to use the roundup release key. If not you
156-
157-
This will create a file by the name <filename>.tgz.asc.
158164
The original directions used twine to upload the tarball and the
159165
signature, but as of May 2023, PyPI no longer accepts signature
160-
files.
161-
162-
So we publish the signature as part of the website. Move the file
163-
to the website/www/signatures directory. Commit the .asc signature
164-
file to mercurial. Add a new list item at the start of the
165-
signature list in doc/security.txt (look for the word multicol).
166+
files. So we publish the signature as part of the website.
166167

167168
Use twine to upload the distribution tarball. E.G.
168169

@@ -178,6 +179,15 @@ Roundup release checklist:
178179
the gpg asc files and place the .whl.asc in the signature
179180
directory.
180181

182+
Another way to upload is to use:
183+
184+
python3 setup.py sdist upload --repository pypi
185+
186+
BUT this rebuilds the source distribution tarball and uploads it.
187+
This means that you have uploaded something that is not tested.
188+
Also the metadata in the file changes and will not match the GPG
189+
signature you commited in step 12. So use twine.
190+
181191
14. Refresh website.
182192
website/README.txt
183193
https://www.roundup-tracker.org/ should state that the stable
@@ -205,9 +215,10 @@ Roundup release checklist:
205215
17a. install docker
206216
17b. run: (issues, how to release a version e.g. to update alpine for
207217
security issues. Currently thinking that release tag is
208-
rounduptracker/roundup:2.2.0-1, -2 etc? Then add a tag
218+
rounduptracker/roundup:2.2.0-1, -2 etc. Then add a tag
209219
rounduptracker/roundup:2.2.0 that moves to always tag
210-
the latest -N release??)
220+
the latest -N release. Also roundup:latest points to the
221+
newest -N for the newest roundup version.)
211222

212223
docker build -t rounduptracker/roundup:2.2.0 \
213224
--build-arg="source=pypi" -f scripts/Docker/Dockerfile .
@@ -303,13 +314,14 @@ $ gpg --edit-key 411E354B5D1AF26125D621221F2DD0CB756A76D8
303314
> save
304315
[ saves both keys, will need the private key and passphrase ]
305316

306-
EXPORT NEW KEY
307-
==============
317+
EXPORT NEW PUBLIC KEY
318+
=====================
308319

309320
$ gpg --export -a [email protected] >> \
310321
tools/roundup.public.pgp.key
311322

312-
then edit roundup.public.pgp.key keeping only the last key stat starts
323+
then edit roundup.public.pgp.key keeping only the last key that starts
313324
with: -----BEGIN PGP PUBLIC KEY BLOCK-----
314325

315-
Commmit new key to mercurial.
326+
and add back the preamble that describes where to find doc for
327+
it. Commmit new key to mercurial.

doc/acknowledgements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Release Manager: John Rouillard
2828

2929
Developer activity by changesets::
3030

31-
[email protected] 636 *****************************************************
31+
[email protected] 722 ****************************************************
3232
3333

3434
Other contributers

0 commit comments

Comments
 (0)