Files @ e4452268c09f
Branch filter:

Location: kallithea/scripts/generate-ini.py - annotation

Thomas De Schampheleire
scripts/make-release: fix PyPI upload by using twine

Upload via 'python2 setup.py sdist upload' is deprecated.

Worse, for unknown reasons it stopped working for 0.4, even though 0.3 did
pretty much the same.

Following output was given:

WARNING: Uploading via this command is deprecated, use twine to upload
instead (https://pypi.org/p/twine/)
Traceback (most recent call last):
File "setup.py", line 160, in <module>
""",
File "/tmp/kallithea-release-JtnfD/lib/python2.7/site-packages/setuptools/__init__.py",
line 145, in setup
return distutils.core.setup(**attrs)
File "/usr/lib64/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/kallithea-release-JtnfD/lib/python2.7/site-packages/setuptools/command/upload.py",
line 26, in run
orig.upload.run(self)
File "/usr/lib64/python2.7/distutils/command/upload.py", line 62, in run
self.upload_file(command, pyversion, filename)
File "/tmp/kallithea-release-JtnfD/lib/python2.7/site-packages/setuptools/command/upload.py",
line 136, in upload_file
value = str(value).encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position
825: ordinal not in range(128)

The error is pointing to a unicode character in the README.rst file.

The proposed 'twine' command does not have this problem. As it seems that
this is the future, we won't waste more time investigating the problem with
'sdist upload', and start using twine from now on.
#!/usr/bin/env python2
"""
Based on kallithea/lib/paster_commands/template.ini.mako, generate development.ini
"""

import re

from kallithea.lib import inifile

# files to be generated from the mako template
ini_files = [
    ('development.ini',
        {
            '[server:main]': {
                'host': '0.0.0.0',
            },
            '[app:main]': {
                'debug': 'true',
                'app_instance_uuid': 'development-not-secret',
                'beaker.session.secret': 'development-not-secret',
            },
            '[handler_console]': {
                'formatter': 'color_formatter',
            },
            '[handler_console_sql]': {
                'formatter': 'color_formatter_sql',
            },
            '[logger_routes]': {
                'level': 'DEBUG',
            },
            '[logger_beaker]': {
                'level': 'DEBUG',
            },
            '[logger_templates]': {
                'level': 'INFO',
            },
            '[logger_kallithea]': {
                'level': 'DEBUG',
            },
            '[logger_tg]': {
                'level': 'DEBUG',
            },
            '[logger_gearbox]': {
                'level': 'DEBUG',
            },
            '[logger_whoosh_indexer]': {
                'level': 'DEBUG',
            },
        },
    ),
]


def main():
    # make sure all mako lines starting with '#' (the '##' comments) are marked up as <text>
    makofile = inifile.template_file
    print 'reading:', makofile
    mako_org = open(makofile).read()
    mako_no_text_markup = re.sub(r'</?%text>', '', mako_org)
    mako_marked_up = re.sub(r'\n(##.*)', r'\n<%text>\1</%text>', mako_no_text_markup, flags=re.MULTILINE)
    if mako_marked_up != mako_org:
        print 'writing:', makofile
        open(makofile, 'w').write(mako_marked_up)

    # create ini files
    for fn, settings in ini_files:
        print 'updating:', fn
        inifile.create(fn, None, settings)


if __name__ == '__main__':
    main()