W. Trevor King [Tue, 14 Apr 2015 15:40:03 +0000 (08:40 -0700)]
README: Replace '...?' with 'author'
It looks like I got confused while writing up
84f8c846 (Add support
for loading author_hacks, year_hacks, and aliases from the config,
2012-02-16). Fill in the missing value to avoid confusing more folks
going forward.
W. Trevor King [Sat, 28 Mar 2015 20:12:56 +0000 (13:12 -0700)]
.gitignore: Add MANIFEST and dist
These are side effects of 'python setup.py sdist'.
W. Trevor King [Sat, 28 Mar 2015 20:10:41 +0000 (13:10 -0700)]
Bump to version 0.6.2
Changes since 0.6.1:
* Fallback to directory name if project.name isn't set
* Require project.vcs
* Convert parser access to use the mapping protocol
* README: Switch from {section}/{option} to {section}.{option}
* setup.py: Mention Python 3.4 compatibility
W. Trevor King [Sat, 28 Mar 2015 20:10:02 +0000 (13:10 -0700)]
Run update-copyright.py
W. Trevor King [Sat, 28 Mar 2015 20:09:20 +0000 (13:09 -0700)]
setup.py: Mention Python 3.4 compatibility
This isn't surprising, since we don't use anything fancy.
W. Trevor King [Sat, 28 Mar 2015 20:07:00 +0000 (13:07 -0700)]
README: Switch from {section}/{option} to {section}.{option}
To match the usual syntax used by Git [1] (which I expect will be more
familiar to most users).
[1]: http://git-scm.com/docs/git-config#_variables
W. Trevor King [Sat, 28 Mar 2015 19:56:15 +0000 (12:56 -0700)]
project: Fallback to directory name if project/name isn't set
I recommend folks set this explicitly, but Greg Wilson wanted a way
for folks to use update-copyright without having to tweak this name
after forking [1]. The approach I've used here isn't the same as the
one discussed in that issue (using the name of the upstream Git
repository), but I think it's a better choice. Pros and cons:
+ Simple, VCS-agnostic implementation
+ Doesn't make assumptions about the upstream repository naming
- Assumes folks name their local repository appropriately
- Won't handle several projects stored in the same Git repository For
example, if you have a branch for project-a and another for
project-b that are both in your local project-a repository, you'll
have to explicitly set project.name in the project-b branch's
.update-copyright.conf.
[1]: https://github.com/swcarpentry/lesson-template/pull/197#discussion_r26456407
W. Trevor King [Sat, 28 Mar 2015 19:52:03 +0000 (12:52 -0700)]
project: Require project/vcs
We use the configured VCS for the author list and per-file updates, so
there's nothing we can do if the user hasn't set it. Instead of
crashing with:
Traceback (most recent call last):
File "./bin/update-copyright.py", line 80, in <module>
project.update_authors(dry_run=args.dry_run)
File "/.../update_copyright/project.py", line 162, in update_authors
authors = self._vcs.authors()
AttributeError: 'NoneType' object has no attribute 'authors'
Die earlier with:
Traceback (most recent call last):
File "./bin/update-copyright.py", line 78, in <module>
project.load_config(open(args.config, 'r'))
File "/home/wking/src/update-copyright/update_copyright/project.py", line 66, in load_config
loader(parser=parser)
File "/home/wking/src/update-copyright/update_copyright/project.py", line 89, in _load_project_conf
raise NotImplementedError('vcs: {}'.format(vcs))
NotImplementedError: vcs: None
We may want to add some auto-detection logic here in the future.
W. Trevor King [Sat, 28 Mar 2015 19:44:11 +0000 (12:44 -0700)]
project: Convert parser access to use the mapping protocol
Use the more dict-like access [1] instead of the API that's specific
to ConfigParser. This is likely to be more familiar to future
developers, and reduces the cognitive load of dealing with another
API.
The only place I couldn't drop the old API was in load_config, where I
kept parser.sections() [2] because using parser.keys() was giving me:
AttributeError: 'Project' object has no attribute '_load_DEFAULT_conf'
The:
try:
section = parser['...']
except KeyError:
section = {}
blocks are also more awkward than a dicts:
section = parser.get('...', {})
but we can't use that API because it's clobbered by
ConfigParser.get(section, option, ...) [3]. Maybe someday they'll
support:
section = parser.get('...', default={})
(or with 'fallback' instead of 'default').
[1]: https://docs.python.org/3/library/configparser.html#mapping-protocol-access
[2]: https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.sections
[3]: https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.get
W. Trevor King [Fri, 31 Oct 2014 17:54:50 +0000 (10:54 -0700)]
Run update-copyright.py
W. Trevor King [Fri, 31 Oct 2014 17:53:45 +0000 (10:53 -0700)]
Bump to version 0.6.1
Changes since 0.6:
* README: update to pipe separators
W. Trevor King [Fri, 3 Oct 2014 03:44:33 +0000 (20:44 -0700)]
README: update to pipe separators
This brings the config file up to speed with the following
update-copyright commit (which landed in 0.5):
commit
3c68a1a48419d8b2bbc2ce0e7f1700b996ec30e9
Author: W. Trevor King <wking@tremily.us>
Date: Fri Oct 19 21:52:48 2012 -0400
project: for consistency, also separate ignored paths with pipes
W. Trevor King [Mon, 27 Jan 2014 18:15:43 +0000 (10:15 -0800)]
Bump to version 0.6
Changes since 0.5:
* Dropped Bazaar support.
* Fixed Mercurial support for Python 3 (by shelling out to hg).
* Adjusted date ranges so the final date is the last year a file was
patched, and not the current year. This avoids bumping copyright
years when there were no changes.
W. Trevor King [Mon, 27 Jan 2014 18:07:23 +0000 (10:07 -0800)]
Run update-copyright.py
W. Trevor King [Mon, 27 Jan 2014 18:06:44 +0000 (10:06 -0800)]
README: Update with Bazaar removal and shell-based Mercurial
W. Trevor King [Mon, 27 Jan 2014 18:01:42 +0000 (10:01 -0800)]
vcs.mercurial: Shell out to hg instead of using the mercurial package
Mercurial doesn't have Python 3 support, and has no plans for adding
it in the near future [1]. It's a pretty painless conversion to shell
out instead (as we already do for Git), so go that route instead.
[1]: http://mercurial.selenic.com/wiki/SupportedPythonVersions#Python_3.x_support
W. Trevor King [Mon, 27 Jan 2014 17:53:16 +0000 (09:53 -0800)]
vcs.bazaar: Remove Bazaar support
As of 2013-05-19, Bazaar had no Python 3 compatibility, and no
likelyhood of adding it in the near future [1]. This module could be
ported to use the command line client (like Git), but I also haven't
seen a Bazaar repository in a while ;).
[1]: https://answers.launchpad.net/bzr/+question/229048#comment-0
W. Trevor King [Mon, 27 Jan 2014 17:40:57 +0000 (09:40 -0800)]
project: Replace original_year and final_year with years
Rather than automatically bumping the final year to the current year,
only bump to the last year for which a file was changed. I've kept
the 'first-last' syntax, but
update_copyright.utils.copyright_string
is not the only place you have to edit if you prefer to list them all
explicitly:
Copyright (C) year-1, year-2, ..., year-n A. U. Thor ...
W. Trevor King [Mon, 27 Jan 2014 17:14:20 +0000 (09:14 -0800)]
README: Fix .mailmap link markup
Apparently reStructuredText needs backticks here. Maybe the leading
dot confuses it.
W. Trevor King [Thu, 24 Jan 2013 01:40:14 +0000 (20:40 -0500)]
Bump to version 0.5
W. Trevor King [Wed, 2 Jan 2013 00:42:39 +0000 (19:42 -0500)]
Ran update-copyright.py
W. Trevor King [Tue, 1 Jan 2013 21:45:46 +0000 (16:45 -0500)]
setup.py: Add explicit Python 3 classifiers
W. Trevor King [Tue, 1 Jan 2013 21:43:51 +0000 (16:43 -0500)]
update-copyright.py: add --version
W. Trevor King [Tue, 1 Jan 2013 21:32:44 +0000 (16:32 -0500)]
update-copyright.py: Use the configured files.authors and files.files
Rather than reading them into Project.with_authors and
Project.with_files and then ignoring them. This means that if you
don't want an AUTHOR file, you can disable it in your
.update-copyright.conf and then skip `--no-authors` on the command
line.
W. Trevor King [Tue, 1 Jan 2013 21:31:30 +0000 (16:31 -0500)]
project: Load files.authors and files.files as booleans
Because both `bool('yes')` and `bool('no')` are True.
W. Trevor King [Tue, 13 Nov 2012 15:05:13 +0000 (10:05 -0500)]
project: don't explicitly convert configured options to unicode strings
Python 3's ConfigParser does this for us.
W. Trevor King [Thu, 25 Oct 2012 21:53:28 +0000 (17:53 -0400)]
project: add Project._split_paragraph().
Now we split on double-newlines, not single newlines. This is how our
README example and internal .update-copyright.conf are formatted.
W. Trevor King [Thu, 25 Oct 2012 21:44:15 +0000 (17:44 -0400)]
project: use (start, middle, end) prefixes in copyright_string() calls
W. Trevor King [Thu, 25 Oct 2012 21:35:11 +0000 (17:35 -0400)]
project|utils: expand info into kwargs for format().
W. Trevor King [Thu, 25 Oct 2012 21:29:01 +0000 (17:29 -0400)]
update-copyright.py: update from optparse to argparse
W. Trevor King [Thu, 25 Oct 2012 21:25:39 +0000 (17:25 -0400)]
utils: convert `% (...)` formatting to `.format(...)`
W. Trevor King [Thu, 25 Oct 2012 21:21:20 +0000 (17:21 -0400)]
project|(vcs:utils): convert unicode() -> str().
W. Trevor King [Thu, 25 Oct 2012 21:19:39 +0000 (17:19 -0400)]
.update-copyright.conf|README: convert %(project)s -> {project} formatting
W. Trevor King [Thu, 25 Oct 2012 21:02:25 +0000 (17:02 -0400)]
Upgrade to Python 3.2
bzrlib and mercurial aren't Python 3 compatible yet (and seem unlikely
to become compatible in the near future), so if you're using them, you
should stick with an older version of update-copyright.
Note that the version of Python used by update-copyright has nothing
to do with the version of Python you use in your project. You project
doesn't even have to use Python at all.
W. Trevor King [Thu, 25 Oct 2012 21:01:01 +0000 (17:01 -0400)]
Update exception handling to use `except X as Y` syntax.
W. Trevor King [Sat, 20 Oct 2012 11:16:40 +0000 (07:16 -0400)]
.update-copyright.conf: update to pipe separators.
This brings the config file up to speed with the following
update-copyright commit:
commit
3c68a1a48419d8b2bbc2ce0e7f1700b996ec30e9
Author: W. Trevor King <wking@tremily.us>
Date: Fri Oct 19 21:52:48 2012 -0400
project: for consistency, also separate ignored paths with pipes
W. Trevor King [Sat, 20 Oct 2012 01:52:48 +0000 (21:52 -0400)]
project: for consistency, also separate ignored paths with pipes.
W. Trevor King [Sat, 20 Oct 2012 01:51:39 +0000 (21:51 -0400)]
project: for consistency, also separate alias authors with pipes.
W. Trevor King [Sat, 20 Oct 2012 01:47:55 +0000 (21:47 -0400)]
project: use pipe symbols (|) to separate author-hack authors.
Author names may contain commas (e.g. "Red Hat, Inc."), but are
unlikely to contain pipe symbols.
W. Trevor King [Sat, 20 Oct 2012 01:43:08 +0000 (21:43 -0400)]
vcs: adjust .original_year() relative path calculation to match .authors().
I should have fixed .authors() back when I fixed .original_year().
Now the filename handling is identical, which should make it easier
for people to keep future updates in sync.
W. Trevor King [Sat, 20 Oct 2012 01:40:08 +0000 (21:40 -0400)]
vcs: use relative paths for matching author-hacks.
W. Trevor King [Sat, 20 Oct 2012 01:18:52 +0000 (21:18 -0400)]
project: configured author keys should be converted to unicode.
W. Trevor King [Sat, 20 Oct 2012 01:15:26 +0000 (21:15 -0400)]
project: preserve case in .update-copyright.conf options.
This is important for aliases in particular.
W. Trevor King [Sat, 20 Oct 2012 01:10:23 +0000 (21:10 -0400)]
vcs:utils: some VCSs (e.g. Git) return sets of authors.
W. Trevor King [Sun, 22 Jul 2012 16:38:23 +0000 (12:38 -0400)]
Ran update-copyright.
W. Trevor King [Wed, 18 Apr 2012 17:25:10 +0000 (13:25 -0400)]
Change my email address from drexel.edu to tremily.us.
W. Trevor King [Sun, 25 Mar 2012 12:24:24 +0000 (08:24 -0400)]
Move classifiers into a list in setup.py.
This avoids:
Server response (400): Invalid classifier "<filter object at 0x28604d0>"
W. Trevor King [Sun, 25 Mar 2012 12:22:15 +0000 (08:22 -0400)]
Bump to version 0.4
W. Trevor King [Sun, 25 Mar 2012 12:20:06 +0000 (08:20 -0400)]
Fix reStructuredText markup for `` */`` in the README.
Use a nonbreaking space so that rst knows the first `` is the start of
a literal block. Because I used a unicode nbsp, adjust setup.py to
appropriately import the long_description. Note that this means
you'll have to use Python 3 for registering the package.
W. Trevor King [Sun, 25 Mar 2012 12:06:24 +0000 (08:06 -0400)]
Add ability to handle blurbs in C-style comments.
W. Trevor King [Sun, 25 Mar 2012 11:52:46 +0000 (07:52 -0400)]
Fix Project._ignored_file() doctest, and get it to match directories.
With the earlier implementation, adding '.git' to your ignored paths
would not protect '.git/x/y/z', which is not good ;).
W. Trevor King [Wed, 21 Mar 2012 16:49:49 +0000 (12:49 -0400)]
Add trailing slash to Gentoo overlay link in README.
W. Trevor King [Thu, 15 Mar 2012 01:40:28 +0000 (21:40 -0400)]
Fix line -> date typo from incomplete splitout of GitBackend._dates().
W. Trevor King [Wed, 14 Mar 2012 11:45:39 +0000 (07:45 -0400)]
Add external command invocations to debugging output.
W. Trevor King [Wed, 14 Mar 2012 11:38:24 +0000 (07:38 -0400)]
Split out _dates from _years in GitBackend.
This makes it easier for external modules to use the GitBackend to do
different things with the extracted list of dates.
W. Trevor King [Wed, 22 Feb 2012 18:56:43 +0000 (13:56 -0500)]
Update download_url to point to tremily.
W. Trevor King [Thu, 16 Feb 2012 22:54:44 +0000 (17:54 -0500)]
Remove comments from .update-copyright.conf now that the README is better.
Also move the short copyright blurb forward, so people won't have to
scroll through the long blurb to find anything interesting.
W. Trevor King [Thu, 16 Feb 2012 21:59:34 +0000 (16:59 -0500)]
Bump to version 0.3, now that things are working on BE and Hooke.
W. Trevor King [Thu, 16 Feb 2012 20:50:19 +0000 (15:50 -0500)]
Add ability to run on a remote root based on the config file.
For example
update-copyright.py --config /path/to/project/.update-copyright.conf
will now update the code in `/path/to/project/` without you having to
change into that directory.
W. Trevor King [Thu, 16 Feb 2012 20:20:52 +0000 (15:20 -0500)]
Add support for loading author_hacks, year_hacks, and aliases from the config.
W. Trevor King [Thu, 16 Feb 2012 19:47:23 +0000 (14:47 -0500)]
Rename authors -> _authors in VCSBackend.authors() loop to avoid clobber.
The previous version had been clobbering the raw VCS results.
W. Trevor King [Thu, 16 Feb 2012 19:34:58 +0000 (14:34 -0500)]
Fix VCSBackend.original_year() bug in applying per-file year_hacks.
The per-file value is a single integer, so use `.add` instead of `.update`.
W. Trevor King [Thu, 16 Feb 2012 19:31:11 +0000 (14:31 -0500)]
Fix year_hacks -> self._year_hacks typo in VCSBackend.original_year().
W. Trevor King [Thu, 16 Feb 2012 19:16:30 +0000 (14:16 -0500)]
Allow '-' characters in section names.
W. Trevor King [Thu, 16 Feb 2012 19:13:01 +0000 (14:13 -0500)]
Make config file parsing more modular.
W. Trevor King [Thu, 16 Feb 2012 15:42:43 +0000 (10:42 -0500)]
Improve unicode handling and increase the default textwrap width.
W. Trevor King [Thu, 16 Feb 2012 15:01:10 +0000 (10:01 -0500)]
Use `with_emails` argument in `VCSBackend.authors()`.
W. Trevor King [Thu, 16 Feb 2012 14:11:01 +0000 (09:11 -0500)]
Oops, `ConfigParser(interpolation=None)` belongs to Python 3.
W. Trevor King [Thu, 16 Feb 2012 14:10:16 +0000 (09:10 -0500)]
Cleanup help strings in bin/update-copyright.py.
W. Trevor King [Thu, 16 Feb 2012 13:33:37 +0000 (08:33 -0500)]
Flesh out the README.
W. Trevor King [Thu, 16 Feb 2012 13:27:38 +0000 (08:27 -0500)]
Use ConfigParser instead of deprecated RawConfigParser.
W. Trevor King [Thu, 16 Feb 2012 12:50:22 +0000 (07:50 -0500)]
Raise errors in Project if the configured backend could not be loaded.
W. Trevor King [Thu, 16 Feb 2012 12:45:47 +0000 (07:45 -0500)]
Fix url in setup.py (tremily.us -> blog.tremily.us).
W. Trevor King [Thu, 16 Feb 2012 12:27:13 +0000 (07:27 -0500)]
Ran update-copyright.py to update setup.py.
W. Trevor King [Thu, 16 Feb 2012 12:26:36 +0000 (07:26 -0500)]
Add build (created by `python setup.py build`) to .gitignore.
W. Trevor King [Thu, 16 Feb 2012 12:25:49 +0000 (07:25 -0500)]
Add setup.py for distutils packaging.
W. Trevor King [Thu, 16 Feb 2012 12:05:44 +0000 (07:05 -0500)]
Add README to list of ignored paths in .update-copyright.conf.
W. Trevor King [Thu, 16 Feb 2012 12:04:28 +0000 (07:04 -0500)]
With normpath, there is no need for the prefix * in my ignore globs.
W. Trevor King [Thu, 16 Feb 2012 12:02:17 +0000 (07:02 -0500)]
Add a normpath() to files returned by list_files (less suprising this way).
W. Trevor King [Thu, 16 Feb 2012 11:59:50 +0000 (06:59 -0500)]
Add .update-copyright.conf and .git* to ignored files.
W. Trevor King [Thu, 16 Feb 2012 11:56:37 +0000 (06:56 -0500)]
Change maxium verbosity setting from 0 to logging.DEBUG.
W. Trevor King [Thu, 16 Feb 2012 11:54:27 +0000 (06:54 -0500)]
Add AUTHORS and license.py to .gitignore.
W. Trevor King [Thu, 16 Feb 2012 11:32:58 +0000 (06:32 -0500)]
Use pth instead of p when splitting ignored (don't clobber the configparser).
W. Trevor King [Thu, 16 Feb 2012 11:31:03 +0000 (06:31 -0500)]
Log reason for ignoring paths in Project._ignore_file().
W. Trevor King [Thu, 16 Feb 2012 11:29:26 +0000 (06:29 -0500)]
Add COPYING to list of ignored files in .update-copyright.conf.
W. Trevor King [Thu, 16 Feb 2012 11:28:54 +0000 (06:28 -0500)]
Add comma-delimiter to list of ignored file globs in Project.load_config().
W. Trevor King [Thu, 16 Feb 2012 02:18:08 +0000 (21:18 -0500)]
Add COPYING.
W. Trevor King [Thu, 16 Feb 2012 02:17:55 +0000 (21:17 -0500)]
Add .gitignore.
W. Trevor King [Thu, 16 Feb 2012 02:17:05 +0000 (21:17 -0500)]
Run update-copyright on itself.
W. Trevor King [Thu, 16 Feb 2012 01:43:11 +0000 (20:43 -0500)]
Convert update-copyright.py to a more modular framework.
W. Trevor King [Thu, 9 Feb 2012 19:10:16 +0000 (14:10 -0500)]
Add `filename=None` default option to Git's `original_year()`.
This had gotten lost in the previous merge.
W. Trevor King [Thu, 9 Feb 2012 19:01:12 +0000 (14:01 -0500)]
Merge Hooke and BE branches of update-copyright.
W. Trevor King [Sun, 8 Jan 2012 15:57:52 +0000 (10:57 -0500)]
Change VCS from Mercurial to Git in update_copyright.py.
W. Trevor King [Tue, 3 Aug 2010 00:06:56 +0000 (20:06 -0400)]
Grr. Uncomment authors & file lines un update_copyright.py again.
W. Trevor King [Sat, 31 Jul 2010 11:38:53 +0000 (07:38 -0400)]
Rework update_copyright and short_license to allow unwrapped paragraphs.
The GUI's about popup does it's own wrapping, so the text we send in
should be unwrapped.
W. Trevor King [Fri, 30 Jul 2010 19:45:29 +0000 (15:45 -0400)]
Added hooke.plugin.license and removed get-warrenty info from short_license.
Also uncommented update_authors() and update_files() in
update_copyright, since I'm no longer testing the pyfile code ;).
W. Trevor King [Fri, 30 Jul 2010 19:15:40 +0000 (15:15 -0400)]
Added pyfile output to update_copyright.py.
This creates hooke/license.py with licensing strings and functions.
I've updated the copyright blurbs in the command line startup message
and the GUI about message, but haven't actually added the advertised
'warrenty' and 'license' details yet.
W. Trevor King [Tue, 1 Jun 2010 17:36:42 +0000 (13:36 -0400)]
Convert update_copyright.py to a more VCS-agnostic version.
This will make it easier for others to grab this code for their own
projects. Currently supported VCSs: Git, Mercurial, Bazaar.
W. Trevor King [Tue, 1 Jun 2010 14:46:26 +0000 (10:46 -0400)]
Fix /doc/build/ -> ./doc/build/ in update_copyright.py
W. Trevor King [Wed, 19 May 2010 05:03:30 +0000 (01:03 -0400)]
Adjust update_copyright hacks to follow plugin.peakspot -> util.peak move