Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision bd55c46895d2fcfadda46701d3c34d78441a7806 authored by Miss Islington (bot) on 21 September 2020, 22:05:17 UTC, committed by Ćukasz Langa on 04 October 2020, 16:36:45 UTC
GH- [bpo-41815](): SQLite: fix segfault if backup called on closed database Attempting to backup a closed database will trigger segfault: ```python import sqlite3 target = sqlite3.connect(':memory:') source = sqlite3.connect(':memory:') source.close() source.backup(target) ``` (cherry picked from commit bfee9fad84531a471fd7864e88947320669f68e2) Co-authored-by: Peter McCormick <peter@pdmccormick.com>
1 parent d636089
Tip revision: bd55c46895d2fcfadda46701d3c34d78441a7806 authored by Miss Islington (bot) on 21 September 2020, 22:05:17 UTC
bpo-41815: SQLite: segfault if backup called on closed database (GH-22322)
bpo-41815: SQLite: segfault if backup called on closed database (GH-22322)
Tip revision: bd55c46
get_external.py
#!/usr/bin/env python3
import argparse
import os
import pathlib
import zipfile
from urllib.request import urlretrieve
def fetch_zip(commit_hash, zip_dir, *, org='python', binary=False, verbose):
repo = f'cpython-{"bin" if binary else "source"}-deps'
url = f'https://github.com/{org}/{repo}/archive/{commit_hash}.zip'
reporthook = None
if verbose:
reporthook = print
zip_dir.mkdir(parents=True, exist_ok=True)
filename, headers = urlretrieve(
url,
zip_dir / f'{commit_hash}.zip',
reporthook=reporthook,
)
return filename
def extract_zip(externals_dir, zip_path):
with zipfile.ZipFile(os.fspath(zip_path)) as zf:
zf.extractall(os.fspath(externals_dir))
return externals_dir / zf.namelist()[0].split('/')[0]
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('-v', '--verbose', action='store_true')
p.add_argument('-b', '--binary', action='store_true',
help='Is the dependency in the binary repo?')
p.add_argument('-O', '--organization',
help='Organization owning the deps repos', default='python')
p.add_argument('-e', '--externals-dir', type=pathlib.Path,
help='Directory in which to store dependencies',
default=pathlib.Path(__file__).parent.parent / 'externals')
p.add_argument('tag',
help='tag of the dependency')
return p.parse_args()
def main():
args = parse_args()
zip_path = fetch_zip(
args.tag,
args.externals_dir / 'zips',
org=args.organization,
binary=args.binary,
verbose=args.verbose,
)
final_name = args.externals_dir / args.tag
extract_zip(args.externals_dir, zip_path).replace(final_name)
if __name__ == '__main__':
main()
Computing file changes ...