Supported software¶
Alfred 2 versions¶
Alfred-Workflow works with all versions of Alfred 2, but you must own the Powerpack to use Alfred’s workflow feature.
All Script Filter features provided by Alfred 2 as of v2.8.3 are supported in the latest version of Alfred-Workflow.
OS X versions¶
Alfred-Workflow supports the same OS X versions as Alfred 2, namely 10.6 (Snow Leopard) and later.
Note
Notifications, added in version 1.15 of Alfred-Workflow, are only available on Mountain Lion (10.8) and above.
Python versions¶
Alfred-Workflow supports versions 2.6 and 2.7 of Python. Python 3 is not supported.
Alfred-Workflow is intended to run on the OS X default system Python
(/usr/bin/python
), which is version 2.6 on OS X 10.6 and 2.7 on all later
versions.
Here is the full list of new features in Python 2.7, but the most important things if you want your workflow to run on Snow Leopard/Python 2.6 are:
argparse
is not available in 2.6. Usegetopt
or include argparse in your workflow. Personally, I’m a big fan of docopt for parsing command-line arguments, butargparse
is better for certain use cases.- No dictionary views in 2.6.
- No set literals.
- No dictionary or set comprehensions.
- You must specify field numbers for
str.format()
, i.e.'{0}.{1}'.format(first, second)
not just'{}.{}'.format(first, second)
. - No
Counter
orOrderedDict
incollections
.
Python 2.6 is still included in later versions of OS X (up to and including
Yosemite), so run your Python scripts with /usr/bin/python2.6
in addition to
/usr/bin/python
(2.7) to make sure they will run on Snow Leopard.
Why no Python 3 support?¶
Three main reasons:
- Python 3 isn’t installed by default on any version of OS X.
- Python 3 doesn’t get along well with Alfred 2.
- Alfred-Workflow is precisely the kind of project that’s hard to make 2- and 3-compatible.
Bluntly put, because of 3, Python 3 support won’t come until 1 and/or 2 changes.
Python 3 is awesome for writing workflows in theory. The encoding errors that are such a pain in Python 2 mostly just disappear.
In practice, Alfred 2 has a long-standing bug (which won’t be fixed in v2) [1] that makes it one of those places where Python 3 chokes and its automatic text decoding breaks the world.
My working assumption is that Alfred 3 (whenever that may arrive) will require the library to be significantly rewritten due to an updated API, and will fix the incorrect encoding issue. At some point, Apple will surely add Python 3 to OS X by default, too.
Python 3 support will most likely come when either of those things happens.
[1] | Alfred 2 uses UTF-8 but tells workflows by omission that it’s an ASCII
environment (no locale is set, so Python 3 defaults to the C locale,
i.e. ASCII, as per the POSIX spec). You must specify UTF-8 in the
environment, e.g. by setting PYTHONIOENCODING=UTF-8 , before calling
python3 otherwise your workflow (any Python 3 code, in fact) will
die in flames. |