W. Trevor King [Mon, 10 Dec 2012 23:21:34 +0000 (18:21 -0500)]
feed: fix Feed._get_entry_content unpacking in Feed._get_entry_id
_get_entry_content returns a single dict, but _get_entry_id had been
unpacking it as if it was a length-two tuple.
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Mon, 10 Dec 2012 23:13:40 +0000 (18:13 -0500)]
feed: fix the `type` key returned by Feed._get_entry_content
The previous version used the Python object `type` where it should
have used the string 'type'. I hadn't caught the bug before because
none of my example feeds fell through that far.
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Mon, 10 Dec 2012 23:06:45 +0000 (18:06 -0500)]
test:gmane:README: fix "feed.atom" -> "feed.rss" typo
Probably a copy-paste error from seeding with
test/allthingsrss/README.
Signed-off-by: W. Trevor King <wking@tremily.us>
Etienne Millon [Mon, 10 Dec 2012 14:36:36 +0000 (15:36 +0100)]
Link to Debian & Ubuntu package pages
(instead of search)
Signed-off-by: Etienne Millon <me@emillon.org>
Etienne Millon [Mon, 10 Dec 2012 14:02:03 +0000 (15:02 +0100)]
Don't put UTF8 last in the list of encodings
Sometimes, BIG5 will be selected for english text if quotes make it
not representable in ASCII. See [1] for the original bug report.
This default list is arguably European-centric but at least it documents a good
amount of the alternative encodings.
[1]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659920
Reported-by: James Cloos <cloos@jhcloos.com>
Signed-off-by: Etienne Millon <me@emillon.org>
Etienne Millon [Mon, 10 Dec 2012 13:50:21 +0000 (14:50 +0100)]
Change default email address
As discussed in [1], user@rss2email.invalid is less verbose and simpler to
understand.
[1]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464077
Reported-by: Noah Slater <nslater@bytesexual.org>
Signed-off-by: Etienne Millon <me@emillon.org>
W. Trevor King [Sat, 8 Dec 2012 16:13:24 +0000 (11:13 -0500)]
COPYING: whitespace changes to match the new gnu.org download
No sense in preserving differences between this branch and the version
in the `license` branch.
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Sat, 8 Dec 2012 16:10:50 +0000 (11:10 -0500)]
CONTRIBUTING.md: describe rss2email's GPLv{2,3}
We want people using s-o-b to be very clear about which licenses they
should use for rss2email submissions.
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Sat, 8 Dec 2012 15:52:37 +0000 (10:52 -0500)]
Merge remote-tracking branch 's-o-b/contributing-github'
W. Trevor King [Sat, 8 Dec 2012 15:32:48 +0000 (10:32 -0500)]
CONTRIBUTING.md: point to external docs on GitHub
This translates CONTRIBUTING (from the `contributing` branch) into
Markdown using a GitHub URL for the link. Merging this into your
project will set it up to use GitHub's CONTRIBUTING infrastructure,
and will be used to notify users creating issues and pull requests
[1].
GitHub's blob URL syntax is [2]:
https://github.com/<user>/<project>/blob/<commit-SHA-1>/Path/To/File
Like CONTRIBUTING, CONTRIBUTING.md is also released under the CC0
Universal license (see the `license` branch for full text).
[1]: https://github.com/blog/1184-contributing-guidelines
[2]: https://help.github.com/articles/how-do-i-get-a-permanent-link-from-file-view-to-permanent-blob-url
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Mon, 26 Nov 2012 14:31:02 +0000 (09:31 -0500)]
CONTRIBUTING: point to external docs (for non GPLv2= projects)
If a project wants to use the DCO/s-o-b workflow, but can't because of
license incompatibility, they can include this blurb pointing towards
the external documentation. To avoid licensing issues with this
CONTRIBUTING file itself, I'm releasing it under the Creative Commons
CC0 1.0 Universal license (see the `license` branch for full text).
If you use this in your project, you'll probably want to adjust the
URL to point to somewhere more dependable. It's annoyingly long, but
you should include the blob hash (or a higher level hash like the
commit hash) in your URL to make it absolutely clear which version of
the documentation you were using in your project at a particular time.
Signed-off-by: W. Trevor King <wking@tremily.us>
W. Trevor King [Sun, 18 Nov 2012 17:19:15 +0000 (12:19 -0500)]
rss2email: raise error on import with Python < 3.2.
rss2email won't work with older Pythons. Avoid user confusion due to
API-breakage error messages [1] by bailing explicitly up front.
[1]; http://forums.macrumors.com/showthread.php?t=
1216694
W. Trevor King [Sun, 18 Nov 2012 15:17:44 +0000 (10:17 -0500)]
CHANGELOG: summarize changes since v2.71
W. Trevor King [Sun, 18 Nov 2012 14:12:34 +0000 (09:12 -0500)]
test: record sender as SENT BY (not SENT TO) in *.expected
W. Trevor King [Sun, 18 Nov 2012 14:09:32 +0000 (09:09 -0500)]
test:gmane: add Gmane feed for RSS testing
The weird indentation is because Gmane wraps the descriptions in <pre>
tags (to preserve formatting in the initial email). html2text is
converting the description to Markdown, so it inserts a leading 4
spaces for preformatted blocks. The unindented initial line and
following blank are due to a bug in html2text, for which I've
submitted
https://github.com/aaronsw/html2text/pull/63
W. Trevor King [Sun, 18 Nov 2012 13:42:53 +0000 (08:42 -0500)]
CHANGELOG: strip trailing whitespace
W. Trevor King [Sun, 18 Nov 2012 12:22:38 +0000 (07:22 -0500)]
setup.py: list dependencies in setup(requires=...)
W. Trevor King [Sun, 18 Nov 2012 12:20:04 +0000 (07:20 -0500)]
setup.py: use mailing list address for maintenance
W. Trevor King [Sun, 18 Nov 2012 12:10:48 +0000 (07:10 -0500)]
REAMDE: point to rss2email/config.py, not a line number in rss2email.py
W. Trevor King [Sun, 18 Nov 2012 12:04:33 +0000 (07:04 -0500)]
README: use GitHub URL for git clone
W. Trevor King [Sun, 18 Nov 2012 12:03:45 +0000 (07:03 -0500)]
README: use Gmane for example feed
W. Trevor King [Sun, 18 Nov 2012 11:38:16 +0000 (06:38 -0500)]
README: add mailing list information (and link to Gmane)
W. Trevor King [Tue, 13 Nov 2012 17:34:55 +0000 (12:34 -0500)]
main: fix logging imports
This should have happened in:
commit
066602efa088b4a89d67e23011613b4459db3c92
Author: W. Trevor King <wking@tremily.us>
Date: Tue Nov 13 09:09:00 2012 -0500
rss2email: split massive package into modules
W. Trevor King [Tue, 13 Nov 2012 15:15:47 +0000 (10:15 -0500)]
Run update-copyright.py
W. Trevor King [Tue, 13 Nov 2012 15:14:44 +0000 (10:14 -0500)]
.update-copyright.conf: add copyright configuration.
Use my external update-copyright package to maintain copyright blurbs.
http://pypi.python.org/pypi/update-copyright/
W. Trevor King [Tue, 13 Nov 2012 15:14:04 +0000 (10:14 -0500)]
.mailmap: map Lindsey's usernames to a canonical form
W. Trevor King [Tue, 13 Nov 2012 14:44:43 +0000 (09:44 -0500)]
COPYING: add GPLv2 text
W. Trevor King [Tue, 13 Nov 2012 14:12:27 +0000 (09:12 -0500)]
setup.py: add a comma to the end of the url kwarg
This should have happened in:
commit
cd5b8f30942c72a0fd1b82f4763f21cfaad3864b
Author: W. Trevor King <wking@tremily.us>
Date: Mon Nov 12 15:59:09 2012 -0500
Convert homepage/downloads from allthingsrss.com to GitHub
W. Trevor King [Tue, 13 Nov 2012 14:09:00 +0000 (09:09 -0500)]
rss2email: split massive package into modules
W. Trevor King [Tue, 13 Nov 2012 14:01:40 +0000 (09:01 -0500)]
test: fix tests to handle Message-IDs
This should have happened in:
commit
29f8b8813e1f464b7171ea1830b6ed40ec24dac2
Author: W. Trevor King <wking@tremily.us>
Date: Sat Oct 27 11:09:45 2012 -0400
rss2email: add Message-IDs so I can link messages in Mutt
W. Trevor King [Tue, 13 Nov 2012 12:52:50 +0000 (07:52 -0500)]
rss2email: convert infogami URL to GitHub URL
W. Trevor King [Tue, 13 Nov 2012 12:48:58 +0000 (07:48 -0500)]
README: GitHub's markup renderer chokes on Unicode ellipses in code blocks
W. Trevor King [Tue, 13 Nov 2012 12:23:47 +0000 (07:23 -0500)]
README.rst: add symlink for GitHub rendering
W. Trevor King [Mon, 12 Nov 2012 20:59:09 +0000 (15:59 -0500)]
Convert homepage/downloads from allthingsrss.com to GitHub
W. Trevor King [Mon, 12 Nov 2012 20:54:19 +0000 (15:54 -0500)]
rss2email: reorder NoValidEncodingError superclasses
This avoids:
TypeError: NoValidEncodingError does not take keyword arguments
W. Trevor King [Mon, 12 Nov 2012 20:39:54 +0000 (15:39 -0500)]
Merge Lindsey's recent advances with my master
Conflicts:
.gitignore (use my master, dumping Lindsey's changes)
readme.html (remove in favor of my README)
rss2email.py (use my master, bringing in the following changes from
Lindsey's branch)
commit
42fa878f929c6ee39c8068d186de1ae7f4630638
Author: Lindsey Smith <lindsey.smith@gmail.com>
Date: Mon Mar 14 09:18:42 2011 -0700
Improved basic email validation
Incorperated into Feed._validate_email.
commit
38b33a71e049f29743ce1805b82d4f048e466ce6
Author: Lindsey Smith <lindsey.smith@gmail.com>
Date: Mon Mar 14 09:19:12 2011 -0700
Initial revision
Incorperated into the Feed._validate_email doctest.
commit
a55809611f9706e7004791c060bd7e5a90a2dcb9
Author: U-SEVEN\lindsey <lindsey.smith@gmail.com>
Date: Fri Jun 24 11:07:22 2011 -0700
Better attribute handling. Factored out tag handling into getTags()
This wasn't an atomic commit. I dropped the BeautifulSoup HTML
cleanup to avoid an additional dependency. I skipped the r → fullfeed
change in getName because I'd already rewritten that function as
Feed._get_entry_name. I tweaked Feed._get_entry_tags to also handle
termless-tags.
commit
db2ac2f7a76cf93022363ac103f17d7ec71927f9
Author: U-SEVEN\lindsey <lindsey.smith@gmail.com>
Date: Fri Jun 24 11:08:19 2011 -0700
Added tests for getTags()
Merged getName tests into the Feed._get_entry_name doctest and merged
tag tests into the Feed._get_entry_tags doctest.
The other commits in Lindsey's branch didn't have anything that is
still useful after my refactoring.
W. Trevor King [Mon, 12 Nov 2012 19:53:58 +0000 (14:53 -0500)]
Merge Lindsey's tip (development since v2.71)
W. Trevor King [Mon, 12 Nov 2012 19:47:06 +0000 (14:47 -0500)]
Merge Lindsey's v2.71 into my v2.71
I would just use Lindsey's repository directly, except my repository
contains more old releases (back to v2.65).
The conflicts were due to a few new lines in Lindsey's CHANGELOG, and
a number of whitespace differences due to line endings.
Conflicts:
CHANGELOG
config.py.example
r2e
r2e.bat
readme.html
rss2email.py
W. Trevor King [Fri, 9 Nov 2012 12:46:17 +0000 (07:46 -0500)]
Change maintainer from Lindsey to Trevor.
I emailed Lindset on October 4th with some changes, and then again on
October 18th with a PyPI push suggestion. I haven't heard back on
either count, so I'm assuming maintainership and pushing this to PyPI
myself.
Lindsey, I'm not attempting a hostile takeover ;). If you get back
from a month-long vacation and want to resume maintainership, let me
know.
W. Trevor King [Mon, 29 Oct 2012 19:02:44 +0000 (15:02 -0400)]
rss2email: allow config feed ordering to override datafile ordering
W. Trevor King [Sat, 27 Oct 2012 15:09:45 +0000 (11:09 -0400)]
rss2email: add Message-IDs so I can link messages in Mutt
W. Trevor King [Sat, 20 Oct 2012 14:24:55 +0000 (10:24 -0400)]
rss2email: fix Feed._validate_email signature to include self.
W. Trevor King [Thu, 18 Oct 2012 17:38:19 +0000 (13:38 -0400)]
rss2email: fix e.__cause__ -> self.__cause__ typos in exception logging.
W. Trevor King [Thu, 18 Oct 2012 17:31:07 +0000 (13:31 -0400)]
rss2email.py: don't create config-only feeds if they were in the datafile.
W. Trevor King [Thu, 18 Oct 2012 16:56:58 +0000 (12:56 -0400)]
rss2email: add ability to load feeds from the config file only.
If a feed exists in the config file, but not in the data file, the
previous implementation would not load it. This patch initializes
such feeds using only the information from the config file
(i.e. without dynamic data from the data file). The patch also
creates missing data files on demand. As an example use case, if you
keep a backup of your config file, but lose the data file, you can
restore the config file and an `r2e run` will create and repopulate
your data file.
W. Trevor King [Thu, 18 Oct 2012 16:22:28 +0000 (12:22 -0400)]
rss2email: fix index->send argument typo in feed.run() call.
W. Trevor King [Thu, 18 Oct 2012 16:22:05 +0000 (12:22 -0400)]
rss2email: add debug logging for smtp_send() and sendmail_send().
W. Trevor King [Thu, 18 Oct 2012 16:09:48 +0000 (12:09 -0400)]
.gitignore: add `build`, a setup.py byproduct.
W. Trevor King [Thu, 18 Oct 2012 16:06:30 +0000 (12:06 -0400)]
rss2email: work around pickle.load() messing with LOG.
I'm not sure why this is happening yet, but _pickle.load() is
duplicating the StreamHandlers in LOG and resetting the log level to
ERROR. Work around that by saving the original level/handlers and
restoring them after the load() call.
I haven't figured out why this happens yet.
W. Trevor King [Thu, 18 Oct 2012 16:06:21 +0000 (12:06 -0400)]
rss2email: add specific SAXParseException error message.
W. Trevor King [Thu, 18 Oct 2012 16:01:02 +0000 (12:01 -0400)]
rss2email: add description to the general bozo warning.
W. Trevor King [Thu, 18 Oct 2012 15:00:02 +0000 (11:00 -0400)]
r2e: use python in the sh-bang.
This is better than using Bash to call Python, because distutils can
make sh-bang adjustments on installation.
It drops the local --config/--data options, but that brings us into
compliance with the current README and man page.
W. Trevor King [Thu, 18 Oct 2012 14:57:31 +0000 (10:57 -0400)]
Package with distutils.
W. Trevor King [Thu, 18 Oct 2012 14:45:17 +0000 (10:45 -0400)]
README: move readme.html -> README and convert to reStructuredText.
This is in preparation for posting on PyPI. It is also easier to read
rst source than it is to read HTML. You can generate an html version
of the source with
$ rst2html README > readme.html
I also restructured the README to avoid separate Windows/UNIX
sections, because almost all the advice applies to all systems.
W. Trevor King [Thu, 18 Oct 2012 12:59:10 +0000 (08:59 -0400)]
r2e: use PYTHONPATH to find and run rss2email.
This should make it easier for r2e to work where several Python
version are installed on the same machine.
W. Trevor King [Thu, 18 Oct 2012 12:55:55 +0000 (08:55 -0400)]
rss2email: add run() function for main program execution.
W. Trevor King [Thu, 18 Oct 2012 12:45:52 +0000 (08:45 -0400)]
rss2email: fix pausing -> unpausing typo in unpause help string.
W. Trevor King [Thu, 18 Oct 2012 12:43:36 +0000 (08:43 -0400)]
rss2email: change -c/--config option from nargs to append.
Now you should use
$ rss2email.py -c path1 -c path2 ... comand
Instead of
$ rss2email.py -c path1 path2 ... comand
The latter made
$ rss2email.py -c path1 comand
look like a command-less call (`command' being interpreted as another
config path).
W. Trevor King [Thu, 18 Oct 2012 12:41:09 +0000 (08:41 -0400)]
rss2email: don't create directories for files in the current directory.
This avoids:
$ ./rss2email.py -d feeds.dat new
...
OSError: [Errno 2] No such file or directory: ''
W. Trevor King [Thu, 18 Oct 2012 12:40:48 +0000 (08:40 -0400)]
readme: add feed name in `r2e add` example.
W. Trevor King [Thu, 18 Oct 2012 12:40:14 +0000 (08:40 -0400)]
r2e.1: update man page for configparser-based rss2email.
W. Trevor King [Thu, 18 Oct 2012 11:12:11 +0000 (07:12 -0400)]
r2e.1: add man page from Debian package.
This man page was extracted from rss2email_2.65-1.diff.gz.
W. Trevor King [Fri, 5 Oct 2012 11:13:54 +0000 (07:13 -0400)]
test: add a test suite and simple testing script.
It would probably be a good idea to use the unittest framework, but
this works as a first pass.
W. Trevor King [Fri, 5 Oct 2012 01:45:52 +0000 (21:45 -0400)]
Convert message string to bytes for sendmail.
W. Trevor King [Fri, 5 Oct 2012 01:41:26 +0000 (21:41 -0400)]
If we don't have a feed-specific section, use DEFAULT in Feed._send().
W. Trevor King [Fri, 5 Oct 2012 01:40:55 +0000 (21:40 -0400)]
Fix configSMTP_SEND -> config.getboolean(section, 'use-smtp') typo.
W. Trevor King [Fri, 5 Oct 2012 01:08:50 +0000 (21:08 -0400)]
Set default status to 200 (e.g. when loaded from a local file).
W. Trevor King [Fri, 5 Oct 2012 00:11:55 +0000 (20:11 -0400)]
Fix CONFIG -> config typo in Feed.load_from_config().
W. Trevor King [Thu, 4 Oct 2012 23:58:45 +0000 (19:58 -0400)]
Change default logging level back to ERROR.
W. Trevor King [Thu, 4 Oct 2012 23:44:57 +0000 (19:44 -0400)]
Use kwargs consistently in s for diamond inheritance.
W. Trevor King [Thu, 4 Oct 2012 23:05:55 +0000 (19:05 -0400)]
readme: convert configuration examples to the new format.
W. Trevor King [Thu, 4 Oct 2012 23:03:59 +0000 (19:03 -0400)]
Update the r2e scripts to use -c/-d for locating config files.
W. Trevor King [Thu, 4 Oct 2012 23:01:06 +0000 (19:01 -0400)]
Add myself to __contributors__.
W. Trevor King [Thu, 4 Oct 2012 23:00:50 +0000 (19:00 -0400)]
Fix ___contributors__ -> __contributors__.
W. Trevor King [Thu, 4 Oct 2012 22:46:44 +0000 (18:46 -0400)]
Spread cmd_run() logic out into Feed methods (under Feed.run()).
W. Trevor King [Thu, 4 Oct 2012 19:12:23 +0000 (15:12 -0400)]
Rework commands to use argparse subparsers (cmd_run still needs work).
W. Trevor King [Thu, 4 Oct 2012 19:08:18 +0000 (15:08 -0400)]
Cleanups to Feed and Feeds.
W. Trevor King [Thu, 4 Oct 2012 18:29:53 +0000 (14:29 -0400)]
Fix ConfigParser option <-> Python conversion for Feed attributes.
W. Trevor King [Thu, 4 Oct 2012 16:54:34 +0000 (12:54 -0400)]
Only load configfiles if we have filenames to work with.
W. Trevor King [Thu, 4 Oct 2012 16:43:40 +0000 (12:43 -0400)]
Move parse() to Feed.fetch().
W. Trevor King [Thu, 4 Oct 2012 15:59:45 +0000 (11:59 -0400)]
Add Feeds class for managing lists of feeds.
W. Trevor King [Thu, 4 Oct 2012 15:37:19 +0000 (11:37 -0400)]
Flesh out Feed class with saving/loading methods.
W. Trevor King [Thu, 4 Oct 2012 14:15:26 +0000 (10:15 -0400)]
Get rid of some tiny helper functions.
W. Trevor King [Thu, 4 Oct 2012 13:51:46 +0000 (09:51 -0400)]
Convert timelimit() to a class TimeLimitedFunction.
W. Trevor King [Thu, 4 Oct 2012 13:42:24 +0000 (09:42 -0400)]
More global constant and configuration cleanups.
W. Trevor King [Thu, 4 Oct 2012 13:40:05 +0000 (09:40 -0400)]
Add .gitignore ignoring __pycache__.
W. Trevor King [Thu, 4 Oct 2012 13:39:34 +0000 (09:39 -0400)]
Break send() into guess_encoding(), get_message(), and *_send().
W. Trevor King [Thu, 4 Oct 2012 13:13:05 +0000 (09:13 -0400)]
Add rss2email.LOG for standardized logging.
W. Trevor King [Thu, 4 Oct 2012 12:40:57 +0000 (08:40 -0400)]
QP has been deprecated for years. Remove it entirely.
W. Trevor King [Thu, 4 Oct 2012 12:40:02 +0000 (08:40 -0400)]
Setup html2text in Config._setup().
W. Trevor King [Thu, 4 Oct 2012 12:33:32 +0000 (08:33 -0400)]
Cleanup global module configuration.
W. Trevor King [Thu, 4 Oct 2012 12:30:56 +0000 (08:30 -0400)]
Convert configuration to a ConfigParser instance.
W. Trevor King [Thu, 4 Oct 2012 12:00:16 +0000 (08:00 -0400)]
Import as _* to avoid namespace pollution.
Also update import locations for Python 3.2.
W. Trevor King [Thu, 4 Oct 2012 11:56:51 +0000 (07:56 -0400)]
Collect imports at the beginning of rss2email.py.
W. Trevor King [Thu, 4 Oct 2012 11:52:38 +0000 (07:52 -0400)]
Cleanup metadata formatting.
W. Trevor King [Thu, 4 Oct 2012 11:51:31 +0000 (07:51 -0400)]
Convert tabs to spaces and strip trailing whitespace.
W. Trevor King [Thu, 4 Oct 2012 11:50:01 +0000 (07:50 -0400)]
Nominally convert to Python >=3.2.
W. Trevor King [Thu, 4 Oct 2012 11:45:04 +0000 (07:45 -0400)]
readme: cleanup formatting.
W. Trevor King [Thu, 4 Oct 2012 11:19:53 +0000 (07:19 -0400)]
readme: strip trailing whitespace.
W. Trevor King [Thu, 4 Oct 2012 11:19:14 +0000 (07:19 -0400)]
I'm going to rework the configuration to use ConfigParser.