Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate AUTHORS using git log #1594

Merged
merged 2 commits into from
Feb 26, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Adam Wentz <[email protected]>
Alex Grönholm <[email protected]>
Alex Grönholm <[email protected]> <[email protected]>
Anatoly Techtonik <[email protected]>
Andrey Bulgakov <[email protected]>
<[email protected]> <[email protected]>
Andrei Geacar <[email protected]> unknown <hakaton@Anam-mbl.(none)>
Ben Rosser <[email protected]>
<[email protected]> <[email protected]>
<[email protected]> <[email protected]>
Daniel Holth <[email protected]>
<[email protected]> <[email protected]>
Endoh Takanao <[email protected]>
Erik M. Bray <[email protected]>
Gabriel de Perthuis <[email protected]>
Geoffrey Lehée <[email protected]>
Hsiaoming Yang <[email protected]>
Ilya Baryshev <[email protected]>
Jakub Stasiak <[email protected]>
John-Scott Atlakson <[email protected]>
Jorge Niedbalski <[email protected]>
<[email protected]> <[email protected]>
Markus Hametner <[email protected]>
Masklinn <[email protected]>
<[email protected]> <[email protected]>
Preston Holmes <[email protected]>
Przemek Wrzos <hetmankp@none>
<[email protected]> <[email protected]>
Thomas Johansson <devnull@localhost> prencher <devnull@localhost>
Yoval P <[email protected]>
Zhiping Deng <[email protected]>
254 changes: 134 additions & 120 deletions AUTHORS.txt
Original file line number Diff line number Diff line change
@@ -1,120 +1,134 @@
Alex Gaynor
Alex Grönholm
Alex Morega
Alexandre Conrad
Andrey Bulgakov
Anrs Hu
Anton Patrushev
Antti Kaihola
Armin Ronacher
Aziz Köksal
Ben Rosser
Bernardo B. Marques
Bradley Ayers
Brian Rosner
Carl Meyer
Chris McDonough
Christian Oudard
Clay McClure
Cody Soyland
Craig Kerstiens
Cristian Sorinel
Dan Sully
Daniel Holth
Dave Abrahams
David (d1b)
David Aguilar
David Evans
David Pursehouse
dengzhp
Dmitry Gladkov
Donald Stufft
Endoh Takanao
enoch
Erik M. Bray
Francesco
Gabriel de Perthuis
Garry Polley
Geoffrey Lehée
George Song
Georgi Valkov
Herbert Pfennig
hetmankp
Hugo Lopes Tavares
Hynek Schlawack
Ian Bicking
Igor Sobreira
Ionel Maries Cristian
Jakub Vysoky
James Cleveland
Jannis Leidel
Jakub Stasiak
Jay Graves
Jeff Dairiki
John-Scott Atlakson
Jon Parise
Jonas Nockert
Jon Parise
Jorge Niedbalski
Josh Bronson
Josh Hansen
Kamal Bin Mustafa
Kelsey Hightower
Kenneth Belitzky
Kenneth Reitz
Kevin Frommelt
Kumar McMillan
Lev Givon
Lincoln de Sousa
Luke Macken
Masklinn
Marc Abramowitz
Marc Tamlyn
Marcus Smith
Markus Hametner
Matt Maker
Maxime Rouyrre
Michael Williamson
Miguel Araujo Perez
Monty Taylor
Nick Stenning
Nowell Strite
Oliver Tonnhofer
Olivier Girardot
Ollie Rutherfurd
Oren Held
Patrick Jenkins
Patrick Dubroy
Paul Moore
Paul Nasrat
Paul Oswald
Paul van der Linden
Peter Waller
Phil Freo
Phil Whelan
Piet Delport
Preston Holmes
Przemek Wrzos
Qiangning Hong
Rafael Caricio
Rene Dudfield
Roey Berman
Ronny Pfannschmidt
Rory McCann
Ross Brattain
Sergey Vasilyev
Seth Woodworth
Simon Cross
Stavros Korokithakis
Stéphane Klein
Steven Myint
Takayuki SHIMIZUKAWA
Thomas Fenzl
Thomas Johansson
Toshio Kuratomi
Travis Swicegood
Vinay Sajip
Vitaly Babiy
W. Trevor King
Wil Tan
Hsiaoming Yang
Adam Wentz <[email protected]>
Alex Gaynor <[email protected]>
Alex Grönholm <[email protected]>
Alex Morega <[email protected]>
Alexandre Conrad <[email protected]>
Anatoly Techtonik <[email protected]>
Andrei Geacar <[email protected]>
Andrey Bulgakov <[email protected]>
Anrs Hu <[email protected]>
Anton Patrushev <[email protected]>
Antti Kaihola <[email protected]>
Armin Ronacher <[email protected]>
Ashley Manton <[email protected]>
Baptiste Mispelon <[email protected]>
Ben Darnell <[email protected]>
Ben Rosser <[email protected]>
Bernardo B. Marques <[email protected]>
Bradley Ayers <[email protected]>
Brian Rosner <[email protected]>
Carl Meyer <[email protected]>
Chris McDonough <[email protected]>
Christian Oudard <[email protected]>
Clay McClure <[email protected]>
Cody Soyland <[email protected]>
Craig Kerstiens <[email protected]>
Cristian Sorinel <[email protected]>
Dan Sully <[email protected]>
Daniel Holth <[email protected]>
Daniel Jost <[email protected]>
Dave Abrahams <[email protected]>
david <[email protected]>
David Aguilar <[email protected]>
David Evans <[email protected]>
David Pursehouse <[email protected]>
Dmitry Gladkov <[email protected]>
Donald Stufft <[email protected]>
Dongweiming <[email protected]>
Endoh Takanao <[email protected]>
enoch <[email protected]>
Erik M. Bray <[email protected]>
Francesco <[email protected]>
Gabriel de Perthuis <[email protected]>
Garry Polley <[email protected]>
Geoffrey Lehée <[email protected]>
George Song <[email protected]>
Georgi Valkov <[email protected]>
Herbert Pfennig <[email protected]>
Hsiaoming Yang <[email protected]>
Hugo Lopes Tavares <[email protected]>
Hynek Schlawack <[email protected]>
Ian Bicking <[email protected]>
Igor Sobreira <[email protected]>
Ilya Baryshev <[email protected]>
Ionel Maries Cristian <[email protected]>
Jakub Stasiak <[email protected]>
Jakub Vysoky <[email protected]>
James Cleveland <[email protected]>
Jannis Leidel <[email protected]>
Jay Graves <[email protected]>
Jeff Dairiki <[email protected]>
Jim Garrison <[email protected]>
John-Scott Atlakson <[email protected]>
Jon Parise <[email protected]>
Jonas Nockert <[email protected]>
Jorge Niedbalski <[email protected]>
Josh Bronson <[email protected]>
Josh Hansen <[email protected]>
Kamal Bin Mustafa <[email protected]>
Kelsey Hightower <[email protected]>
Kenneth Belitzky <[email protected]>
Kenneth Reitz <[email protected]>
Kevin Frommelt <[email protected]>
Kumar McMillan <[email protected]>
Lev Givon <[email protected]>
Lincoln de Sousa <[email protected]>
Luke Macken <[email protected]>
Marc Abramowitz <[email protected]>
Marc Tamlyn <[email protected]>
Marcus Smith <[email protected]>
Markus Hametner <[email protected]>
Masklinn <[email protected]>
Matt Maker <[email protected]>
Matthew Iversen <[email protected]>
Maxime Rouyrre <[email protected]>
Michael Williamson <[email protected]>
Miguel Araujo Perez <[email protected]>
Monty Taylor <[email protected]>
Nick Stenning <[email protected]>
Nowell Strite <[email protected]>
Oliver Tonnhofer <[email protected]>
Olivier Girardot <[email protected]>
Ollie Rutherfurd <[email protected]>
Oren Held <[email protected]>
Oscar Benjamin <[email protected]>
Patrick Dubroy <[email protected]>
Patrick Jenkins <[email protected]>
Paul Moore <[email protected]>
Paul Nasrat <[email protected]>
Paul Oswald <[email protected]>
Paul van der Linden <[email protected]>
Peter Waller <[email protected]>
Phil Freo <[email protected]>
Phil Whelan <[email protected]>
Piet Delport <[email protected]>
Preston Holmes <[email protected]>
Przemek Wrzos <hetmankp@none>
Qiangning Hong <[email protected]>
Rafael Caricio <[email protected]>
Ralf Schmitt <[email protected]>
Rene Dudfield <[email protected]>
Roey Berman <[email protected]>
Ronny Pfannschmidt <[email protected]>
Rory McCann <[email protected]>
Ross Brattain <[email protected]>
Sergey Vasilyev <[email protected]>
Seth Woodworth <[email protected]>
Simon Cross <[email protected]>
Stavros Korokithakis <[email protected]>
Stefan Scherfke <[email protected]>
Steven Myint <[email protected]>
Stéphane Klein <[email protected]>
Takayuki SHIMIZUKAWA <[email protected]>
Thomas Fenzl <[email protected]>
Thomas Johansson <devnull@localhost>
Toshio Kuratomi <[email protected]>
Travis Swicegood <[email protected]>
Vinay Sajip <[email protected]>
Vitaly Babiy <[email protected]>
W. Trevor King <[email protected]>
Wil Tan <[email protected]>
Yoval P <[email protected]>
Yu Jian <[email protected]>
Zearin <[email protected]>
Zhiping Deng <[email protected]>
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ recursive-include docs *.rst
recursive-include docs *.html
recursive-exclude docs/_build *.rst
prune docs/_build/_sources
prune tasks
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def find_version(*file_paths):
author_email='[email protected]',
url='http://www.pip-installer.org',
license='MIT',
packages=find_packages(exclude=["contrib", "docs", "tests*"]),
packages=find_packages(exclude=["contrib", "docs", "tests*", "tasks"]),
package_data={
'pip._vendor.requests': ['*.pem'],
'pip._vendor.distlib._backport': ['sysconfig.cfg'],
Expand Down
5 changes: 5 additions & 0 deletions tasks/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import invoke

from . import generate

ns = invoke.Collection(generate)
28 changes: 28 additions & 0 deletions tasks/generate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import io

import invoke
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, so just install invoke locally so you can run these tasks?
and at some point, maybe we'll add more tasks for the whole release process?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's the long term goal, that we can cut a release of pip with just inv release or maybe inv release <version> or something like that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

\o/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the record, you can run this as inv(oke) generate.authors.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From the PyPI entry, invoke doesn't mention being Windows compatible, and the docs don't say anything one way or the other. I've never done a release, so it doesn't really matter at the moment, but are we committing to a release process that won't run on Windows here? (We may already have a release process that won't run on Windows, of course, I don't know for certain).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yea invoke doesn't work on Windows. Not sure if it ever will. Let me ask @bitprophet if that is ever planned.

I'd rather not (poorly) reinvent the Wheel by writing our own invoke, and the alternatives are all either worse or don't work on Windows either afaik. Given that Linux and *nix os's are generally free and worst case scenario can be put on a VM at no cost inside a Windows machine I'm less worried about that. I don't want to sound like I'm discounting Windows though- Are you aware of anything like Invoke that works well that works on Windows?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be honest, I didn't do more than glance at the invoke docs, because the discussion here got me curious. I know doit is somewhat similar and does work on Windows, but its API is a bit quirky, so I'm not recommending it. As I say, I don't really mind one way or the other - I doubt I'll be doing a release in the foreseeable future, so it's certainly not something to block this change on.

From what I see here, I'm not 100% sure I see the gain from invoke over just a Python script using subprocess.check_call. But maybe it's more about flexibility for the future.

Regardless, not something to worry about unduly.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, the basic reason for not just using a python script is that I want to consolidate them :) We have a couple of python scripts laying around and I'd like everything to be available and discoverable from within invoke. It's also just the first step. Ideally we'll end up with a number of tasks that automate the various processes we have around pip, including releasing, and have it all done in one central location.

I talked to @bitprophet and he said that he's not planning on doing any Windows support himself, and he's not willing to seriously hamstring the invoke code base to support Windows, but that patches are welcome. He recognizes that Windows is a sizable minority but is unable to do the work himself. So if it becomes a problem in the future where we need Windows support we have a path forward where we can contribute patches to invoke.

By the way, I know it's less than ideal but we also have 2k a month worth of free servers too. If you want a persistent Linux box for dealing with pip on *nix I can spin one up for you. (They also support Windows servers, i've used them from time to time to test stuff on Windows).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I'll probably look into what's involved in Windows support for invoke (task-runner tools are something I'm interested in anyway, I just hadn't seen invoke before, that's why I got curious in the first place). After all, I have so much free time :-)

A Unix box isn't a big problem - my PC is plenty big enough to run a VM locally. I just tend not to end up using a Unix environment day to day, so it gets stale & out of date. It's just as easy tbh to run one up from scratch when I need one.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where do you see that invoke uses pexpect and pty?

edit: ahh, vendored.

I know of fabricate.py which is a little more self-contained (it's a simple module you can drop in anywhere) and advertises working on Windows.

I can't see anywhere that invoke says it doesn't work on Windows though :S



@invoke.task
def authors():
print("[generate.authors] Generating AUTHORS")

# Get our list of authors
print("[generate.authors] Collecting author names")
r = invoke.run("git log --use-mailmap --format'=%aN <%aE>'", hide=True)
authors = []
seen_authors = set()
for author in r.stdout.splitlines():
author = author.strip()
if author.lower() not in seen_authors:
seen_authors.add(author.lower())
authors.append(author)

# Sort our list of Authors by their case insensitive name
authors = sorted(authors, key=lambda x: x.lower())

# Write our authors to the AUTHORS file
print("[generate.authors] Writing AUTHORS")
with io.open("AUTHORS.txt", "w", encoding="utf8") as fp:
fp.write(u"\n".join(authors))
fp.write(u"\n")