Skip to content

Commit

Permalink
release 0.12.3
Browse files Browse the repository at this point in the history
  • Loading branch information
davidism committed Apr 26, 2018
1 parent 22992a0 commit 63deee0
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 33 deletions.
2 changes: 1 addition & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Flask Changelog
Version 0.12.3
--------------

Bugfix release, unreleased
Released on April 26th 2018

- :func:`Request.get_json` no longer accepts arbitrary encodings.
Incoming JSON should be encoded using UTF-8 per :rfc:`8259`, but
Expand Down
82 changes: 50 additions & 32 deletions scripts/make-release.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,41 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
make-release
~~~~~~~~~~~~
Helper script that performs a release. Does pretty much everything
automatically for us.
:copyright: (c) 2015 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import print_function
import sys

import os
import re
from datetime import datetime, date
from subprocess import Popen, PIPE
import sys
from datetime import date, datetime
from subprocess import PIPE, Popen

_date_clean_re = re.compile(r'(\d+)(st|nd|rd|th)')
_date_strip_re = re.compile(r'(?<=\d)(st|nd|rd|th)')


def parse_changelog():
with open('CHANGES') as f:
lineiter = iter(f)
for line in lineiter:
match = re.search('^Version\s+(.*)', line.strip())

if match is None:
continue

version = match.group(1).strip()
if lineiter.next().count('-') != len(match.group(0)):

if next(lineiter).count('-') != len(match.group(0)):
continue

while 1:
change_info = lineiter.next().strip()
change_info = next(lineiter).strip()

if change_info:
break

match = re.search(r'released on (\w+\s+\d+\w+\s+\d+)'
r'(?:, codename (.*))?(?i)', change_info)
match = re.search(
r'released on (\w+\s+\d+\w+\s+\d+)(?:, codename (.*))?',
change_info,
flags=re.IGNORECASE
)

if match is None:
continue

Expand All @@ -46,15 +45,16 @@ def parse_changelog():

def bump_version(version):
try:
parts = map(int, version.split('.'))
parts = [int(i) for i in version.split('.')]
except ValueError:
fail('Current version is not numeric')

parts[-1] += 1
return '.'.join(map(str, parts))


def parse_date(string):
string = _date_clean_re.sub(r'\1', string)
string = _date_strip_re.sub('', string)
return datetime.strptime(string, '%B %d %Y')


Expand All @@ -65,9 +65,13 @@ def inject_version(match):
before, old, after = match.groups()
changed.append(True)
return before + version_number + after

with open(filename) as f:
contents = re.sub(r"^(\s*%s\s*=\s*')(.+?)(')(?sm)" % pattern,
inject_version, f.read())
contents = re.sub(
r"^(\s*%s\s*=\s*')(.+?)(')" % pattern,
inject_version, f.read(),
flags=re.DOTALL | re.MULTILINE
)

if not changed:
fail('Could not find %s in %s', pattern, filename)
Expand All @@ -81,8 +85,9 @@ def set_init_version(version):
set_filename_version('flask/__init__.py', version, '__version__')


def build_and_upload():
Popen([sys.executable, 'setup.py', 'release', 'sdist', 'bdist_wheel', 'upload']).wait()
def build():
cmd = [sys.executable, 'setup.py', 'sdist', 'bdist_wheel']
Popen(cmd).wait()


def fail(message, *args):
Expand All @@ -95,7 +100,9 @@ def info(message, *args):


def get_git_tags():
return set(Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines())
return set(
Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines()
)


def git_is_clean():
Expand All @@ -116,29 +123,40 @@ def main():
os.chdir(os.path.join(os.path.dirname(__file__), '..'))

rv = parse_changelog()

if rv is None:
fail('Could not parse changelog')

version, release_date, codename = rv
dev_version = bump_version(version) + '-dev'
dev_version = bump_version(version) + '.dev'

info('Releasing %s (codename %s, release date %s)',
version, codename, release_date.strftime('%d/%m/%Y'))
info(
'Releasing %s (codename %s, release date %s)',
version, codename, release_date.strftime('%d/%m/%Y')
)
tags = get_git_tags()

if version in tags:
fail('Version "%s" is already tagged', version)

if release_date.date() != date.today():
fail('Release date is not today (%s != %s)',
release_date.date(), date.today())
fail(
'Release date is not today (%s != %s)',
release_date.date(), date.today()
)

if not git_is_clean():
fail('You have uncommitted changes in git')

try:
import wheel # noqa: F401
except ImportError:
fail('You need to install the wheel package.')

set_init_version(version)
make_git_commit('Bump version number to %s', version)
make_git_tag(version)
build_and_upload()
build()
set_init_version(dev_version)


Expand Down

0 comments on commit 63deee0

Please sign in to comment.