annotate roundup/dist/command/build.py @ 8580:5cba36e42b8f

chore: refactor replace urlparse with urlsplit and use urllib_ Python docs recommend use of urlsplit() rather than urlparse(). urlsplit() is a little faster and doesn't try to split the path into path and params using the rules from an obsolete RFC. actions.py, demo.py, rest.py, client.py Replace urlparse() with urlsplit() actions.py urlsplit() produces a named tuple with one fewer elements (no .param). So fixup calls to urlunparse() so they have the proper number of elements in the tuple. also merge url filtering for param and path. demo.py, rest.py: Replace imports from urlparse/urllib.parse with roundup.anypy.urllib_ so we use the same interface throughout the code base. test/test_cgi.py: Since actions.py filtering for invali urls not split by path/param, fix tests for improperly quoted url's.
author John Rouillard <rouilj@ieee.org>
date Sun, 19 Apr 2026 22:58:59 -0400
parents 9c3ec0a5c7fc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
1 #
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
2 # Copyright (C) 2009 Stefan Seefeld
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
3 # All rights reserved.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
4 # For license terms see the file COPYING.txt.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
5 #
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
6 from roundup import msgfmt
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
7 try:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
8 from setuptool.command.install import install as base
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
9 except ImportError:
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
10 from distutils.command.build import build as base
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
11 import os
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
12 from glob import glob
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
13
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
14 def list_message_files(suffix=".po"):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
15 """Return list of all found message files and their intallation paths"""
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
16 _files = glob("locale/*" + suffix)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
17 _list = []
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
18 for _file in _files:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
19 # basename (without extension) is a locale name
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
20 _locale = os.path.splitext(os.path.basename(_file))[0]
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
21 _list.append((_file, os.path.join(
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
22 "share", "locale", _locale, "LC_MESSAGES", "roundup.mo")))
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
23 return _list
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
24
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
25 def check_manifest():
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
26 """Check that the files listed in the MANIFEST are present when the
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
27 source is unpacked.
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
28 """
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
29 manifest_file = 'roundup.egg-info/SOURCES.txt'
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
30 try:
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
31 f=open(manifest_file)
8528
fed0f839c260 fix: replace except: with except Exception: (by haosenwang1018@github)
John Rouillard <rouilj@ieee.org>
parents: 7411
diff changeset
32 except Exception:
6647
42bf0a707763 issue2551183 - Replace references to distutils in roundup/dist/command
John Rouillard <rouilj@ieee.org>
parents: 5450
diff changeset
33 print('\n*** SOURCE WARNING: The MANIFEST file "%s" is missing!' % manifest_file)
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
34 return
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
35 try:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
36 manifest = [l.strip() for l in f.readlines()]
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
37 finally:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
38 f.close()
4394
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
39 err = set([line for line in manifest if not os.path.exists(line)])
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
40 # ignore auto-generated files
4394
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
41 err = err - set(['roundup-admin', 'roundup-demo', 'roundup-gettext',
d4cd0a264098 fixed reporting of source missing warnings
Richard Jones <richard@users.sourceforge.net>
parents: 4068
diff changeset
42 'roundup-mailgw', 'roundup-server', 'roundup-xmlrpc-server'])
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
43 if err:
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
44 n = len(manifest)
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
45 print('\n*** SOURCE WARNING: There are files missing (%d/%d found)!'%(
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
46 n-len(err), n))
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4516
diff changeset
47 print('Missing:', '\nMissing: '.join(err))
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
48
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
49 def build_message_files(command):
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
50 """For each locale/*.po, build .mo file in target locale directory"""
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
51 for (_src, _dst) in list_message_files():
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
52 _build_dst = os.path.join("build", _dst)
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
53 command.mkpath(os.path.dirname(_build_dst))
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
54 command.announce("Compiling %s -> %s" % (_src, _build_dst))
5450
f2fade4552c5 replaced msgfmt.py with latest version supporting Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5376
diff changeset
55 mo = msgfmt.Msgfmt(_src).get()
f2fade4552c5 replaced msgfmt.py with latest version supporting Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents: 5376
diff changeset
56 open(_build_dst, 'wb').write(mo)
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
57
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
58
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
59 class build(base):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
60
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
61 def run(self):
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
62 check_manifest()
4516
85dfe17c182e Installation:
Bernhard Reiter <Bernhard.Reiter@intevation.de>
parents: 4394
diff changeset
63 build_message_files(self)
4068
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
64 base.run(self)
e233d7a66343 Refactor setup.py.
Stefan Seefeld <stefan@seefeld.name>
parents:
diff changeset
65

Roundup Issue Tracker: http://roundup-tracker.org/