diff --git a/docs/source/coredev/index.rst b/docs/source/coredev/index.rst index 3ba9475..d624bb1 100644 --- a/docs/source/coredev/index.rst +++ b/docs/source/coredev/index.rst @@ -116,21 +116,6 @@ If a major release: - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is the numerical release version - - generate summary of GitHub contributions, which can be done with:: - - python tools/github_stats.py --milestone $MILESTONE > stats.rst - - which may need some manual cleanup of ``stats.rst``. Add the cleaned - ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst`` - where ``X`` is the numerical release version (don't forget to add it to - the git repository as well). If creating a major release, make a new - ``github-stats-X.rst`` file; if creating a minor release, the content - from ``stats.rst`` may simply be added to the top of an existing - ``github-stats-X.rst`` file. - - - Edit ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X`` - file you just created. - - You do not need to temporarily remove the first entry called ``development``, nor re-add it after the release, it will automatically be hidden when releasing a stable version of IPython (if ``_version_extra`` diff --git a/examples/images/FrontendKernel.graffle/data.plist b/examples/images/FrontendKernel.graffle/data.plist deleted file mode 100644 index 6179209..0000000 --- a/examples/images/FrontendKernel.graffle/data.plist +++ /dev/null @@ -1,461 +0,0 @@ - - - - - ActiveLayerIndex - 0 - ApplicationVersion - - com.omnigroup.OmniGraffle - 139.18.0.187838 - - AutoAdjust - - BackgroundGraphic - - Bounds - {{0, 0}, {576, 733}} - Class - SolidGraphic - ID - 2 - Style - - shadow - - Draws - NO - - stroke - - Draws - NO - - - - BaseZoom - 0 - CanvasOrigin - {0, 0} - ColumnAlign - 1 - ColumnSpacing - 36 - CreationDate - 2014-05-27 21:39:30 +0000 - Creator - bgranger - DisplayScale - 1 0/72 in = 1.0000 in - GraphDocumentVersion - 8 - GraphicsList - - - Class - LineGraphic - ControlPoints - - {0, 0} - {-7, 8} - {6.9999849080788863, -8.0000033519149838} - {0, 0} - - ID - 29 - Points - - {164, 341.5} - {186.5, 338} - {196, 327.5} - - Style - - stroke - - Bezier - - HeadArrow - 0 - Legacy - - LineType - 1 - TailArrow - 0 - - - - - Bounds - {{107.64779663085938, 305.5}, {69.088050842285156, 84.499992370605469}} - Class - ShapedGraphic - ID - 9 - ImageID - 1 - Shape - Rectangle - Style - - fill - - Draws - NO - - shadow - - Draws - NO - - stroke - - Draws - NO - - - - - Class - LineGraphic - Head - - ID - 6 - Position - 0.53676468133926392 - - ID - 8 - Points - - {288.09285678056523, 276} - {288.49999833106995, 304.50001973116196} - - Style - - stroke - - HeadArrow - FilledArrow - Legacy - - LineType - 1 - TailArrow - 0 - - - Tail - - ID - 7 - - - - Bounds - {{207, 263}, {162, 13}} - Class - ShapedGraphic - FitText - YES - Flow - Resize - ID - 7 - Shape - Rectangle - Style - - fill - - Draws - NO - - shadow - - Draws - NO - - stroke - - Draws - NO - - - Text - - Pad - 0 - Text - {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 -\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs20 \cf0 Interactive Computing Protocol} - VerticalPad - 0 - - Wrap - NO - - - Class - LineGraphic - Head - - ID - 1 - - ID - 6 - Points - - {252, 304.50001973116196} - {320, 304.50001973116196} - - Style - - stroke - - HeadArrow - FilledArrow - Legacy - - LineType - 1 - Pattern - 1 - TailArrow - FilledArrow - - - Tail - - ID - 5 - - - - Bounds - {{186.5, 286.5}, {65, 36}} - Class - ShapedGraphic - ID - 5 - Shape - Rectangle - Style - - shadow - - Draws - NO - - - Text - - Text - {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 -\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs20 \cf0 Frontend} - - - - Bounds - {{320.5, 286.5}, {65, 36}} - Class - ShapedGraphic - ID - 1 - Shape - Rectangle - Style - - shadow - - Draws - NO - - - Text - - Text - {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190 -\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 xkcd-Regular;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs20 \cf0 Kernel} - - - - GridInfo - - GuidesLocked - NO - GuidesVisible - YES - HPages - 1 - ImageCounter - 2 - ImageLinkBack - - - - ImageList - - image1.png - - KeepToScale - - Layers - - - Lock - NO - Name - Layer 1 - Print - YES - View - YES - - - LayoutInfo - - Animate - NO - circoMinDist - 18 - circoSeparation - 0.0 - layoutEngine - dot - neatoSeparation - 0.0 - twopiSeparation - 0.0 - - LinksVisible - NO - MagnetsVisible - NO - MasterSheets - - ModificationDate - 2014-05-27 22:28:18 +0000 - Modifier - bgranger - NotesVisible - NO - Orientation - 2 - OriginVisible - NO - PageBreaks - YES - PrintInfo - - NSBottomMargin - - float - 41 - - NSHorizonalPagination - - coded - BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG - - NSLeftMargin - - float - 18 - - NSPaperSize - - size - {612, 792} - - NSPrintReverseOrientation - - int - 0 - - NSRightMargin - - float - 18 - - NSTopMargin - - float - 18 - - - PrintOnePage - - ReadOnly - NO - RowAlign - 1 - RowSpacing - 36 - SheetTitle - Canvas 1 - SmartAlignmentGuidesActive - YES - SmartDistanceGuidesActive - YES - UniqueID - 1 - UseEntirePage - - VPages - 1 - WindowInfo - - CurrentSheet - 0 - ExpandedCanvases - - - name - Canvas 1 - - - Frame - {{277, 7}, {832, 871}} - ListView - - OutlineWidth - 142 - RightSidebar - - ShowRuler - - Sidebar - - SidebarWidth - 120 - VisibleRegion - {{96.5, 197.5}, {348.5, 366}} - Zoom - 2 - ZoomValues - - - Canvas 1 - 2 - 1 - - - - - diff --git a/examples/images/FrontendKernel.graffle/image1.png b/examples/images/FrontendKernel.graffle/image1.png deleted file mode 100644 index c01e3497f5b3d8ffca192ca0921d15c2fcf193a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@B*8P(&I59PE5=yLyL)$Y0bS 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

_XXe;A6)Bkgrs| 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 WLVV;Bi`m~nz^1OO1*=!IeD^;^Vu+0Z diff --git a/examples/images/python_logo.svg b/examples/images/python_logo.svg deleted file mode 100644 index 116eaac..0000000 --- a/examples/images/python_logo.svg +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/github_stats.py b/tools/github_stats.py deleted file mode 100644 index af00a7b..0000000 --- a/tools/github_stats.py +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/env python -"""Simple tools to query github.com and gather stats about issues. - -To generate a report for IPython 2.0, run: - - python github_stats.py --milestone 2.0 --since-tag rel-1.0.0 -""" -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - - -import sys - -from argparse import ArgumentParser -from datetime import datetime, timedelta -from subprocess import check_output - -from gh_api import ( - get_paged_request, make_auth_header, get_pull_request, is_pull_request, - get_milestone_id, get_issues_list, get_authors, -) -#----------------------------------------------------------------------------- -# Globals -#----------------------------------------------------------------------------- - -ISO8601 = "%Y-%m-%dT%H:%M:%SZ" -PER_PAGE = 100 - -#----------------------------------------------------------------------------- -# Functions -#----------------------------------------------------------------------------- - -def round_hour(dt): - return dt.replace(minute=0,second=0,microsecond=0) - -def _parse_datetime(s): - """Parse dates in the format returned by the Github API.""" - if s: - return datetime.strptime(s, ISO8601) - else: - return datetime.fromtimestamp(0) - -def issues2dict(issues): - """Convert a list of issues to a dict, keyed by issue number.""" - idict = {} - for i in issues: - idict[i['number']] = i - return idict - -def split_pulls(all_issues, project="ipython/ipython"): - """split a list of closed issues into non-PR Issues and Pull Requests""" - pulls = [] - issues = [] - for i in all_issues: - if is_pull_request(i): - pull = get_pull_request(project, i['number'], auth=True) - pulls.append(pull) - else: - issues.append(i) - return issues, pulls - - -def issues_closed_since(period=timedelta(days=365), project="ipython/ipython", pulls=False): - """Get all issues closed since a particular point in time. period - can either be a datetime object, or a timedelta object. In the - latter case, it is used as a time before the present. - """ - - which = 'pulls' if pulls else 'issues' - - if isinstance(period, timedelta): - since = round_hour(datetime.utcnow() - period) - else: - since = period - url = "https://api.github.com/repos/%s/%s?state=closed&sort=updated&since=%s&per_page=%i" % (project, which, since.strftime(ISO8601), PER_PAGE) - allclosed = get_paged_request(url, headers=make_auth_header()) - - filtered = [ i for i in allclosed if _parse_datetime(i['closed_at']) > since ] - if pulls: - filtered = [ i for i in filtered if _parse_datetime(i['merged_at']) > since ] - # filter out PRs not against main (backports) - filtered = [i for i in filtered if i["base"]["ref"] == "main"] - else: - filtered = [ i for i in filtered if not is_pull_request(i) ] - - return filtered - - -def sorted_by_field(issues, field='closed_at', reverse=False): - """Return a list of issues sorted by closing date date.""" - return sorted(issues, key = lambda i:i[field], reverse=reverse) - - -def report(issues, show_urls=False): - """Summary report about a list of issues, printing number and title.""" - if show_urls: - for i in issues: - role = 'ghpull' if 'merged_at' in i else 'ghissue' - print(u'* :%s:`%d`: %s' % (role, i['number'], - i['title'].replace(u'`', u'``'))) - else: - for i in issues: - print(u'* %d: %s' % (i['number'], i['title'].replace(u'`', u'``'))) - -#----------------------------------------------------------------------------- -# Main script -#----------------------------------------------------------------------------- - -if __name__ == "__main__": - - print("DEPRECATE: backport_pr.py is deprecated and it is now recommended" - "to install `ghpro` from PyPI.", file=sys.stderr) - - - # Whether to add reST urls for all issues in printout. - show_urls = True - - parser = ArgumentParser() - parser.add_argument('--since-tag', type=str, - help="The git tag to use for the starting point (typically the last major release)." - ) - parser.add_argument('--milestone', type=str, - help="The GitHub milestone to use for filtering issues [optional]." - ) - parser.add_argument('--days', type=int, - help="The number of days of data to summarize (use this or --since-tag)." - ) - parser.add_argument('--project', type=str, default="ipython/ipython", - help="The project to summarize." - ) - parser.add_argument('--links', action='store_true', default=False, - help="Include links to all closed Issues and PRs in the output." - ) - - opts = parser.parse_args() - tag = opts.since_tag - - # set `since` from days or git tag - if opts.days: - since = datetime.utcnow() - timedelta(days=opts.days) - else: - if not tag: - tag = check_output(['git', 'describe', '--abbrev=0']).strip().decode('utf8') - cmd = ['git', 'log', '-1', '--format=%ai', tag] - tagday, tz = check_output(cmd).strip().decode('utf8').rsplit(' ', 1) - since = datetime.strptime(tagday, "%Y-%m-%d %H:%M:%S") - h = int(tz[1:3]) - m = int(tz[3:]) - td = timedelta(hours=h, minutes=m) - if tz[0] == '-': - since += td - else: - since -= td - - since = round_hour(since) - - milestone = opts.milestone - project = opts.project - - print("fetching GitHub stats since %s (tag: %s, milestone: %s)" % (since, tag, milestone), file=sys.stderr) - if milestone: - milestone_id = get_milestone_id(project=project, milestone=milestone, - auth=True) - issues_and_pulls = get_issues_list(project=project, - milestone=milestone_id, - state='closed', - auth=True, - ) - issues, pulls = split_pulls(issues_and_pulls, project=project) - else: - issues = issues_closed_since(since, project=project, pulls=False) - pulls = issues_closed_since(since, project=project, pulls=True) - - # For regular reports, it's nice to show them in reverse chronological order - issues = sorted_by_field(issues, reverse=True) - pulls = sorted_by_field(pulls, reverse=True) - - n_issues, n_pulls = map(len, (issues, pulls)) - n_total = n_issues + n_pulls - - # Print summary report we can directly include into release notes. - - print() - since_day = since.strftime("%Y/%m/%d") - today = datetime.today().strftime("%Y/%m/%d") - print("GitHub stats for %s - %s (tag: %s)" % (since_day, today, tag)) - print() - print("These lists are automatically generated, and may be incomplete or contain duplicates.") - print() - - ncommits = 0 - all_authors = [] - if tag: - # print git info, in addition to GitHub info: - since_tag = tag+'..' - cmd = ['git', 'log', '--oneline', since_tag] - ncommits += len(check_output(cmd).splitlines()) - - author_cmd = ['git', 'log', '--use-mailmap', "--format=* %aN", since_tag] - all_authors.extend(check_output(author_cmd).decode('utf-8', 'replace').splitlines()) - - pr_authors = [] - for pr in pulls: - pr_authors.extend(get_authors(pr)) - ncommits = len(pr_authors) + ncommits - len(pulls) - author_cmd = ['git', 'check-mailmap'] + pr_authors - with_email = check_output(author_cmd).decode('utf-8', 'replace').splitlines() - all_authors.extend([ u'* ' + a.split(' <')[0] for a in with_email ]) - unique_authors = sorted(set(all_authors), key=lambda s: s.lower()) - - print("We closed %d issues and merged %d pull requests." % (n_issues, n_pulls)) - if milestone: - print("The full list can be seen `on GitHub `__".format(project=project,milestone=milestone) - ) - - print() - print("The following %i authors contributed %i commits." % (len(unique_authors), ncommits)) - print() - print('\n'.join(unique_authors)) - - if opts.links: - print() - print("GitHub issues and pull requests:") - print() - print('Pull Requests (%d):\n' % n_pulls) - report(pulls, show_urls) - print() - print('Issues (%d):\n' % n_issues) - report(issues, show_urls) diff --git a/tools/release_helper.sh b/tools/release_helper.sh index 973baac..5b625b2 100644 --- a/tools/release_helper.sh +++ b/tools/release_helper.sh @@ -90,28 +90,6 @@ then read fi -# if ask_section "Gen Stats, and authors" -# then -# -# echo -# echo $BLUE"here are all the authors that contributed to this release:"$NOR -# git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f -# -# echo -# echo $BLUE"If you see any duplicates cancel (Ctrl-C), then edit .mailmap." -# echo $GREEN"Press enter to continue:"$NOR -# read -# -# echo $BLUE"generating stats"$NOR -# python tools/github_stats.py --milestone $MILESTONE > stats.rst -# -# echo $BLUE"stats.rst files generated."$NOR -# echo $GREEN"Please merge it with the right file (github-stats-X.rst) and commit."$NOR -# echo $GREEN"press enter to continue."$NOR -# read -# -# fi - # if ask_section "Generate API difference (using frapuccino)" # then # echo $BLUE"Checking out $PREV_RELEASE"$NOR