- backported
Update packaging metadata so wheel archives include theLICENSE
file.1539 backported
Add documentation forenv.output_prefix <output_prefix>
. Thanks@jphalip
.1.10.5 <2016-12-05>
1470
When using ~fabric.operations.get with glob expressions, a lack of matches for the glob would result in an empty file named after the glob expression (in addition to raising an error). This has been fixed so the empty file is no longer generated. Thanks to Georgy Kibardin for the catch & initial patch.1483 backported
(also re:1386
,1374
,1300
) Addan FAQ <faq-csh>
about quote problems in remotecsh
causing issues with Fabric's shell-wrapping and quote-escaping. Thanks to Michael Radziej for the update.1379 backported
(also1464
) Clean up a lot of unused imports and similar cruft (many found viaflake8 --select E4
). Thanks to Mathias Ertl for the original patches.1458
Detectknown_hosts
-related instances ofparamiko.SSHException
and prevent them from being handled like authentication errors (which is the default behavior). This fixes issues with incorrect password prompts or prompt-related exceptions when usingreject_unknown_hosts
and encountering missing or badknown_hosts
entries. Thanks to Lukáš Doktor for catch & patch.1.10.4 <2016-07-25>
1447
Fix a relative import infabric.network
to be correctly/consistently absolute instead. Thanks to@bildzeitung
for catch & patch.1.10.3 <2016-04-09>
943 backported
Tweakenv.warn_only
docs to note that it applies to all operations, not justrun
/sudo
. Thanks@akitada
.1257 backported
Add notes to the usage docs forfab
regarding the program's exit status. Credit:@koalaman
.1454 backported
Remove use of:option:
directives in the changelog, it's currently broken in modern Sphinx & doesn't seem to have actually functioned on Renaissance-era Sphinx either.1365
(via1372
) Classic-style fabfiles (ones not using@task
) erroneously included custom exception subclasses when collecting tasks. This is now fixed thanks to@mattvonrocketstein
.1348
(via1361
) Fix a bug in ~fabric.operations.get where remote file paths containing Python string formatting escape codes caused an exception. Thanks to@natecode
for the report and Bradley Spink for the fix.1.10.2 <2015-06-19>
1325
Clarify ~fabric.operations.put docs re: themode
argument. Thanks to@mjmare
for the catch.1318
Update functionality added in1213
so abort error messages don't get printed twice (once by us, once bysys.exit
) but the annotated exception error message is retained. Thanks to Felix Almeida for the report.1305
(also1313
) Fix a couple minor issues with the operation of & demo code for theJobQueue
class. Thanks to@dioh
and Horst Gutmann for the report & Cameron Lane for the patch.980
(also1312
) Redirect output ofcd
to/dev/null
so users enabling bash'sCDPATH
(or similar features in other shells) don't have polluted output captures. Thanks to Alex North-Keys for the original report & Steve Ivy for the fix.1289
Fix "NameError: free variable referenced before assignment in enclosing scope". Thanks to@SamuelMarks
for catch & patch.1286
(also971
,1032
) Recursively unwrap decorators instead of only unwrapping a single decorator level, when obtaining task docstrings. Thanks to Avishai Ish-Shalom for the original report & Max Kovgan for the patch.1273
Fix issue with ssh/config not having a cross-platform default path. Thanks to@SamuelMarks
for catch & patch.1200
Introducedexceptions
output level, so users don't have to deal with the debug output just to see tracebacks.1239
Update README to work better under raw docutils so the example code block is highlighted as Python on PyPI (and not just on our Sphinx-driven website). Thanks to Marc Abramowitz.1.10.1 <2014-12-19>
1.9.2 <2014-12-19>
1201
Don't naively glob all ~fabric.operations.get targets - only glob actual directories. This avoids incorrectly yielding permission errors in edge cases where a requested file is within a directory lacking the read permission bit. Thanks to Sassa Nf for the original report.1019
(also1022
,1186
) Fix "is a tty" tests in environments where streams (egsys.stdout
) have been replaced with objects lacking a.isatty()
method. Thanks to Miki Tebeka for the original report, Lele Long for a subsequent patch, and Julien Phalip for the final/merged patch.1213 backported
Add useful exception message to the implicitSystemExit
raised by Fabric's use ofsys.exit
inside the ~fabric.api.abort function. This allows client code catchingSystemExit
to have better introspection into the error. Thanks to Ioannis Panousis.1228
Update theCommandTimeout
class so it has a usefulstr
instead of appearing blank when caught by Fabric's top level exception handling. Catch & patch from Tomaz Muraus.1180
Fix issue with unicode steam outputs crashing if stream encoding type is None. Thanks to@joekiller
for catch & patch.958 backported
Remove the Git SHA portion of our version string generation; it was rarely useful & occasionally caused issues for users with non-Git-based source checkouts.1229 backported
Add some missing API doc hyperlink references. Thanks to Tony Narlock.1226
Update ~fabric.operations.get to ensure that env.user has access to tempfiles before changing permissions. Also corrected permissions from 404 to 0400 to match comment. Patch by Curtis Mattoon; original report from Daniel Watkins.1.10.0 <2014-09-04>
1188 major
Update ~fabric.operations.local to close non-pipe file descriptors in the child process so subsequent calls to ~fabric.operations.local aren't blocked on e.g. already-connected network sockets. Thanks to Tolbkni Kao for catch & patch.700
Addeduse_sudo
andtemp_dir
params to ~fabric.operations.get. This allows downloading files normally not accessible to the user usingsudo
. Thanks to Jason Coombs for initial report and to Alex Plugaru for the patch (1121
).1098
Add support for dict style roledefs. Thanks to Jonas Lundberg.1090
Add option to skip unknown tasks. Credit goes to Jonas Lundberg.975
Fabric can now be invoked viapython -m fabric
in addition to the typical use of thefab
entrypoint. Patch courtesy of Jason Coombs.Note
This functionality is only available under Python 2.7.
1.9.1 <2014-08-06>
1.8.5 <2014-08-06>
1.7.5 <2014-08-06>
1165
Prevent infinite loop condition when a gateway host is enabled & the same host is in the regular target host list. Thanks to@CzBiX
for catch & patch.1147
Usestat
instead oflstat
when testing directory-ness in the SFTP module. This allows recursive downloads to avoid recursing into symlinks unexpectedly. Thanks to Igor Kalnitsky for the patch.1146
Fix a bug where ~fabric.contrib.files.upload_template failed to honorlcd
whenmirror_local_mode
isTrue
. Thanks to Laszlo Marai for catch & patch.1134
Skip bad hosts when the tasks are executed in parallel. Thanks to Igor Maravić@i-maravic
.852
Fix to respecttemplate_dir
for non Jinja2 templates in ~fabric.contrib.files.upload_template. Thanks to Adam Kowalski for the patch and Alex Plugaru for the initial test case.1096
Encode Unicode text appropriately for its target stream object to avoid issues on non-ASCII systems. Thanks to Toru Uetani for the original patch.1059
Update IPv6 support to work with link-local address formats. Fix courtesy of@obormot
.1026
Fix a typo preventing quiet operation of ~fabric.contrib.files.is_link. Caught by@dongweiming
.600
Clear out connection caches in full when prepping parallel-execution subprocesses. This avoids corner cases causing hangs/freezes due to client/socket reuse. Thanks to Ruslan Lutsenko for the initial report and Romain Chossart for the suggested fix.1167
Add Jinja totest_requires
insetup.py
for the couple of newish tests that now require it. Thanks to Kubilay Kocak for the catch.1.9.0 <2014-06-08>
1078
Add.command
and.real_command
attributes tolocal
return value. Thanks to Alexander Teves (@alexanderteves
) and Konrad Hałas (@konradhalas
).938
Add an env varenv.effective_roles <effective_roles>
specifying roles used in the currently executing command. Thanks to Piotr Betkier for the patch.1101
Reboot operation now supports custom command. Thanks to Jonas Lejon.1106
Fix a misleading/ambiguous example snippet in thefab
usage docs to be clearer. Thanks to@zed
.1.8.4 <2014-06-08>
1.7.4 <2014-06-08>
898
Treat paths that begin with tilde "~" as absolute paths instead of relative. Thanks to Alex Plugaru for the patch and Dan Craig for the suggestion.1105 backported
Enhancesetup.py
to allow Paramiko 1.13+ under Python 2.6+. Thanks to to@Arfrever
for catch & patch.1.8.3 <2014-03-21>
1.7.3 <2014-03-21>
- backported
Modified packaging data to reflect that Fabric requires Paramiko < 1.13 (which dropped Python 2.5 support.)1082
Addpty
passthrough kwarg to ~fabric.contrib.files.upload_template.1.8.2 <2014-02-14>
1.7.2 <2014-02-14>
955
Quote directories created as part ofput
's recursive directory uploads whenuse_sudo=True
so directories with shell meta-characters (such as spaces) work correctly. Thanks to John Harris for the catch.917
Correct an issue withput(use_sudo=True, mode=xxx)
where thechmod
was trying to apply to the wrong location. Thanks to Remco (@nl5887
) for catch & patch.1046
Fix typo preventing use of ProxyCommand in some situations. Thanks to Keith Yang.1.8.1 <2013-12-24>
1.7.1 <2013-12-24>
1.6.4 <2013-12-24>
956, 9571.5.5 <2013-12-24>
956, 957956
Fix pty size detection when running inside Emacs. Thanks to @akitada for catch & patch.957
Fix bug preventing use ofenv.gateway <gateway>
with targets requiring password authentication. Thanks to Daniel González, @Bengrunt and @adrianbn for their bug reports.741
Addenv.prompts <prompts>
dictionary, allowing users to set up custom prompt responses (similar to the built-in sudo prompt auto-responder.) Thanks to Nigel Owens and David Halter for the patch.965 major
Tweak IO flushing behavior when in linewise (& thus parallel) mode so interwoven output is less frequent. Thanks to @akidata for catch & patch.948
Handle connection failures due to server load and try connecting to hosts a number of times specified inenv.connection_attempts <connection-attempts>
.1.8.0 <2013-09-20>
931
Allow overriding of .abort behavior via a custom exception-returning callable set asenv.abort_exception <abort-exception>
. Thanks to Chris Rose for the patch.984 backported
Make this changelog easier to read! Now with per-release sections, generated automatically from the old timeline source format.910
Added a keyword argument to rsync_project to configure the default options. Thanks to@moorepants
for the patch.1.7.0 <2013-07-26>
1.6.2 <2013-07-26>
925
Added contrib.files.is_link <.is_link>. Thanks to @jtangas for the patch.922
Task argument strings are now displayed when usingfab -d
. Thanks to Kevin Qiu for the patch.912
Leavingtemplate_dir
un-specified when using .upload_template in Jinja mode used to cause'NoneType' has no attribute 'startswith'
errors. This has been fixed. Thanks to Erick Yellott for catch & to Erick Yellott + Kevin Williams for patches.924
Add new env var optioncolorize-errors
to enable coloring errors and warnings. Thanks to Aaron Meurer for the patch.593
Non-ASCII character sets in Jinja templates rendered within .upload_template would causeUnicodeDecodeError
when uploaded. This has been addressed by encoding asutf-8
prior to upload. Thanks to Sébastien Fievet for the catch.908
Support loading SSH keys from memory. Thanks to Caleb Groom for the patch.171
Added missing cross-references fromenv
variables documentation to corresponding command-line options. Thanks to Daniel D. Beck for the contribution.884
The password cache feature was not working correctly with password-requiring SSH gateway connections. That's fixed now. Thanks to Marco Nenciarini for the catch.826
Enable sudo extraction of compressed archive via use_sudo kwarg in .upload_project. Thanks to@abec
for the patch.694 major
Allow users to work around ownership issues in the default remote login directory: addtemp_dir
kwarg for explicit specification of which "bounce" folder to use when calling .put withuse_sudo=True
. Thanks to Devin Bayer for the report & Dieter Plaetinck / Jesse Myers for suggesting the workaround.882
Fix a .get bug regarding spaces in remote working directory names. Thanks to Chris Rose for catch & patch.1.6.1 <2013-05-23>
868
Substantial speedup of parallel tasks by removing an unnecessary blocking timeout in theJobQueue
loop. Thanks to Simo Kinnunen for the patch.328
.lcd was no longer being correctly applied to .upload_template; this has been fixed. Thanks to Joseph Lawson for the catch.812
Adduse_glob
option to .put so users trying to upload real filenames containing glob patterns (*
,[
etc) can disable the default globbing behavior. Thanks to Michael McHugh for the patch.864 major
Allow users to disable Fabric's auto-escaping in .run/.sudo. Thanks to Christian Long and Michael McHugh for the patch.870
Changes to shell env var escaping highlighted some extraneous and now damaging whitespace in with path(): <.path>. This has been removed and a regression test added.871
Use of string mode values in put(local, remote, mode="NNNN") <.put> would sometimes causeUnsupported operand
errors. This has been fixed.84 major
Fixed problem with missing -r flag in Mac OS X sed version. Thanks to Konrad Hałas for the patch.861
Gracefully handle situations where users give a single string literal toenv.hosts
. Thanks to Bill Tucker for catch & patch.367
Expand paths with tilde inside (contrib.files
). Thanks to Konrad Hałas for catch & patch.845 backported
Downstream synchronization option implemented for ~fabric.contrib.project.rsync_project. Thanks to Antonio Barrero for the patch.1.6.0 <2013-03-01>
1.5.4 <2013-03-01>
844
Account for SSH config overhaul in Paramiko 1.10 by e.g. updating treatment ofIdentityFile
to handle multiple values. This and related SSH config parsing changes are backwards incompatible; we are including them in this release because they do fix incorrect, off-spec behavior.843
Ensure stringpool_size
values get run throughint()
before deriving final result (stdlibmin()
has odd behavior here...). Thanks to Chris Kastorff for the catch.839
Fix bug in ~fabric.contrib.project.rsync_project where IPv6 address were not always correctly detected. Thanks to Antonio Barrero for catch & patch.587
Warn instead of aborting whenenv.use_ssh_config <use-ssh-config>
is True but the configured SSH conf file doesn't exist. This allows multi-user fabfiles to enable SSH config without causing hard stops for users lacking SSH configs. Thanks to Rodrigo Pimentel for the report.821
Add ~fabric.context_managers.remote_tunnel to allow reverse SSH tunneling (exposing locally-visible network ports to the remote end). Thanks to Giovanni Bajo for the patch.823
Addenv.remote_interrupt <remote-interrupt>
which controls whether Ctrl-C is forwarded to the remote end or is captured locally (previously, only the latter behavior was implemented). Thanks to Geert Jansen for the patch.1.5.3 <2013-01-28>
806
Force strings given togetpass
during password prompts to be ASCII, to prevent issues on some platforms when Unicode is encountered. Thanks to Alex Louden for the patch.805
Update ~fabric.context_managers.shell_env to play nice with Windows (7, at least) systems and ~fabric.operations.local. Thanks to Fernando Macedo for the patch.654
Parallel runs whose sum total of returned data was large (e.g. large return values from the task, or simply a large number of hosts in the host list) were causing frustrating hangs. This has been fixed.402
Attempt to detect stale SSH sessions and reconnect when they arise. Thanks to @webengineer for the patch.791
Cast ~fabric.operations.reboot'swait
parameter to a numeric type in case the caller submitted a string by mistake. Thanks to Thomas Schreiber for the patch.703 major
Add ashell
kwarg to many methods in ~fabric.contrib.files to help avoid conflicts with ~fabric.context_managers.cd and similar. Thanks to @mikek for the patch.730
Addenv.system_known_hosts/--system-known-hosts <system-known-hosts>
to allow loading a user-specified system-level SSHknown_hosts
file. Thanks to Roy Smith for the patch.1.5.2 <2013-01-15>
818
Addedenv.eagerly_disconnect <eagerly-disconnect>
option to help prevent pile-up of many open connections.706
Addedenv.tasks <env-tasks>
, returning list of tasks to be executed by currentfab
command.766
Use the variable name of a new-stylefabric.tasks.Task
subclass object when the object name attribute is undefined. Thanks to @todddeluca for the patch.604
Fixed wrong treatment of backslashes in put operation when uploading directory tree on Windows. Thanks to Jason Coombs for the catch and @diresys & Oliver Janik for the patch. for the patch.792
The newish ~fabric.context_managers.shell_env context manager was incorrectly omitted from thefabric.api
import endpoint. This has been remedied. Thanks to Vishal Rana for the catch.735
Addok_ret_codes
option toenv
to allow alternate return codes to be treated os "ok". Thanks to Andy Kraut for the pull request.775
Shell escaping was incorrectly applied to the value of$PATH
updates in our shell environment handling, causing (at the very least) ~fabric.operations.local binary paths to become inoperable in certain situations. This has been fixed.787
Utilize new Paramiko feature allowing us to skip the use of temporary local files when using file-like objects in ~fabric.operations.get/~fabric.operations.put.249
Allow specification of remote command timeout value by settingenv.command_timeout <command-timeout>
. Thanks to Paul McMillan for suggestion & initial patch.- Added current host string to prompt abort error messages.
1.5.1 <2012-11-15>
776
Fixed serious-but-non-obvious bug in direct-tcpip driven gatewaying (e.g. that triggered by-g
orenv.gateway
.) Should work correctly now.771
Sphinx autodoc helper ~fabric.docs.unwrap_tasks didn't play nice with@task(name=xxx)
in some situations. This has been fixed.1.5.0 <2012-11-06>
1.4.4 <2012-11-06>
38
(also698
) Implement both SSH-level andProxyCommand
-based gatewaying for SSH traffic. (This is distinct from tunneling non-SSH traffic over the SSH connection, which is78
and not implemented yet.)- Thanks in no particular order to Erwin Bolwidt, Oskari Saarenmaa, Steven Noonan, Vladimir Lazarenko, Lincoln de Sousa, Valentino Volonghi, Olle Lundberg and Github user @acrish for providing the original patches to both Fabric and Paramiko.
684 backported
(also569
) Update how ~fabric.decorators.task wraps task functions to preserve additional metadata; this allows decorated functions to play nice with Sphinx autodoc. Thanks to Jaka Hudoklin for catch & patch.103
(via748
) Long standing Sphinx autodoc issue requiring error-prone duplication of function signatures in our API docs has been fixed. Thanks to Alex Morega for the patch.767 major
Fix (and add test for) regression re: having linewise output automatically activate when parallelism is in effect. Thanks to Alexander Fortin and Dustin McQuay for the bug reports.736 major
Ensure context managers that build env vars play nice withcontextlib.nested
by deferring env var reference to entry time, not call time. Thanks to Matthew Tretter for catch & patch.763
Add--initial-password-prompt
to allow prefilling the password cache at the start of a run. Great for sudo-powered parallel runs.665
(and #629) Update ~fabric.contrib.files.upload_template to have a more useful return value, namely that of its internal ~fabric.operations.put call. Thanks to Miquel Torres for the catch & Rodrigue Alcazar for the patch.578
Addname
argument to ~fabric.decorators.task (docs <task-decorator-arguments>
) to allow overriding of the default "function name is task name" behavior. Thanks to Daniel Simmons for catch & patch.761
Allow advanced users to parameterizefabric.main.main()
to force loading of specific fabfiles.749
Gracefully work around calls tofabric.version
on systems lacking/bin/sh
(which causes anOSError
insubprocess.Popen
calls.)723
Add thegroup=
argument to ~fabric.operations.sudo. Thanks to Antti Kaihola for the pull request.725
Updated ~fabric.operations.local to allow override of which local shell is used. Thanks to Mustafa Khattab.704 major
Fix up a bunch of Python 2.x styleprint
statements to be forwards compatible. Thanks to Francesco Del Degan for the patch.491
(also385
) IPv6 host string support. Thanks to Max Arnold for the patch.699
Allow name attribute on file-like objects for get/put. Thanks to Peter Lyons for the pull request.711 major
~fabric.sftp.get would fail when filenames had % in their path. Thanks to John Begeman702 major
~fabric.operations.require failed to test for "empty" values in the env keys it checks (e.g.require('a-key-whose-value-is-an-empty-list')
would register a successful result instead of alerting that the value was in fact empty. This has been fixed, thanks to Rich Schumacher.718
isinstance(foo, Bar)
is used in ~fabric.main instead oftype(foo) == Bar
in order to fix some edge cases. Thanks to Mikhail Korobov.693
Fixed edge case whereabort
driven failures within parallel tasks could result in a top level exception (aKeyError
) regarding error handling. Thanks to Marcin Kuźmiński for the report.681 backported
Fixed outdated docstring for ~fabric.decorators.runs_once which claimed it would get run multiple times in parallel mode. That behavior was fixed in an earlier release but the docs were not updated. Thanks to Jan Brauer for the catch.1.4.3 <2012-07-06>
1.3.8 <2012-07-06>
263
Shell environment variable support for ~fabric.operations.run/~fabric.operations.sudo added in the form of the ~fabric.context_managers.shell_env context manager. Thanks to Oliver Tonnhofer for the original pull request, and to Kamil Kisiel for the final implementation.669
Updates to our Windows compatibility to rely more heavily on cross-platform Python stdlib implementations. Thanks to Alexey Diyan for the patch.671
reject-unknown-hosts
sometimes resulted in a password prompt instead of an abort. This has been fixed. Thanks to Roy Smith for the report.659
Update docs to reflect that ~fabric.operations.local currently honorsenv.path <env-path>
. Thanks to @floledermann for the catch.652
Show available commands when aborting on invalid command names.651 backported
Added note about nestingwith
statements on Python 2.6+. Thanks to Jens Rantil for the patch.649
Don't swallow non-abort
-driven exceptions in parallel mode. Fabric correctly printed such exceptions, and returned them from ~fabric.tasks.execute, but did not actually cause the child or parent processes to halt with a nonzero status. This has been fixed. ~fabric.tasks.execute now also honorsenv.warn_only <warn_only>
so users may still opt to call it by hand and inspect the returned exceptions, instead of encountering a hard stop. Thanks to Matt Robenolt for the catch.241
Add the command executed as a.command
attribute to the return value of ~fabric.operations.run/~fabric.operations.sudo. (Also includes a second attribute containing the "real" command executed, including the shell wrapper and any escaping.)646
Allow specification of which local streams to use when ~fabric.operations.run/~fabric.operations.sudo print the remote stdout/stderr, via e.g.run("command", stderr=sys.stdout)
.645 backported
Update Sphinx docs to work well when run out of a source tarball as opposed to a Git checkout. Thanks again to @Arfrever for the catch.640 backported
(also644
) Update packaging manifest so sdist tarballs include all necessary test & doc files. Thanks to Mike Gilbert and @Arfrever for catch & patch.627
Added convenientquiet
andwarn_only
keyword arguments to ~fabric.operations.run/~fabric.operations.sudo which are aliases forsettings(hide('everything'), warn_only=True)
andsettings(warn_only=True)
, respectively. (Also added corresponding context <fabric.context_managers.quiet> managers <fabric.context_managers.warn_only>.) Useful for remote program calls which are expected to fail and/or whose output doesn't need to be shown to users.633
Allow users to turn off host list deduping by settingenv.dedupe_hosts <dedupe_hosts>
toFalse
. This enables running the same task multiple times on a single host, which was previously not possible.634 backported
Clarified that ~fabric.context_managers.lcd does no special handling re: the user's current working directory, and thus relative paths given to it will be relative toos.getcwd()
. Thanks to @techtonik for the catch.1.4.2 <2012-05-07>
1.3.7 <2012-05-07>
562
Agent forwarding would error out or freeze when multiple uses of the forwarded agent were used per remote invocation (e.g. a single ~fabric.operations.run command resulting in multiple Git or SVN checkouts.) This has been fixed thanks to Steven McDonald and GitHub user @lynxis.626 backported
Clarity updates to the tutorial. Thanks to GitHub user m4z for the patches.625
~fabric.context_managers.hide/~fabric.context_managers.show did not correctly restore prior display settings if an exception was raised inside the block. This has been fixed.624
Login password prompts did not always display the username being authenticated for. This has been fixed. Thanks to Nick Zalutskiy for catch & patch.617
Fix theclean_revert
behavior of ~fabric.context_managers.settings so it doesn'tKeyError
for newly created settings keys. Thanks to Chris Streeter for the catch.615
Updated ~fabric.operations.sudo to honor the new settingenv.sudo_user <sudo_user>
as a default for itsuser
kwarg.616
Add port number to the error message displayed upon connection failures.609
(and564
) Document and clean upenv.sudo_prefix <sudo_prefix>
so it can be more easily modified by users facing uncommon use cases. Thanks to GitHub users 3point2 for the cleanup and SirScott for the documentation catch.610
Change detection ofenv.key_filename
's type (added as part of SSH config support in 1.4) so it supports arbitrary iterables. Thanks to Brandon Rhodes for the catch.1.4.1 <2012-04-04>
1.3.6 <2012-04-04>
608
Addcapture
kwarg to ~fabric.contrib.project.rsync_project to aid in debugging rsync problems.607
Allow ~fabric.operations.local to display stdout/stderr when it warns/aborts, if it was capturing them.395
Addedan FAQ entry <init-scripts-pty>
detailing how to handle init scripts which misbehave when a pseudo-tty is allocated.568
~fabric.tasks.execute allowed too much of its internal state changes (to variables such asenv.host_string
andenv.parallel
) to persist after execution completed; this caused a number of different incorrect behaviors. ~fabric.tasks.execute has been overhauled to clean up its own state changes -- while preserving any state changes made by the task being executed.584
~fabric.contrib.project.upload_project did not take explicit remote directory location into account when untarring, and now uses ~fabric.context_managers.cd to address this. Thanks to Ben Burry for the patch.458
~fabric.decorators.with_settings did not perfectly match ~fabric.context_managers.settings, re: ability to inline additional context managers. This has been corrected. Thanks to Rory Geoghegan for the patch.499
contrib.files.first <fabric.contrib.files.first> used an outdated function signature in its wrapped ~fabric.contrib.files.exists call. This has been fixed. Thanks to Massimiliano Torromeo for catch & patch.551
--list
output now detects terminal window size and truncates (or doesn't truncate) accordingly. Thanks to Horacio G. de Oro for the initial pull request.572
Parallel task aborts (as oppposed to unhandled exceptions) now correctly print their abort messages instead of tracebacks, and cause the parent process to exit with the correct (nonzero) return code. Thanks to Ian Langworth for the catch.306
Remote paths now use posixpath for a separator. Thanks to Jason Coombs for the patch.1.4.0 <2012-02-13>
1.3.5 <2012-02-13>
1.2.6 <2012-02-13>
1.1.8 <2012-02-13>
495
Fixed documentation example showing how to subclass ~fabric.tasks.Task. Thanks to Brett Haydon for the catch and Mark Merritt for the patch.410
Fixed a bug where using the ~fabric.decorators.task decorator inside/under another decorator such as ~fabric.decorators.hosts could cause that task to become invalid when invoked by name (due to how old-style vs new-style tasks are detected.) Thanks to Dan Colish for the initial patch.559
~fabric.contrib.project.rsync_project now allows users to append extra SSH-specific arguments torsync
's--rsh
flag.138
env.port <port>
may now be written to at fabfile module level to set a default nonstandard port number. Previously this value was read-only.3
Fabric can now load a subset of SSH config functionality directly from your local~/.ssh/config
ifenv.use_ssh_config <use-ssh-config>
is set toTrue
. Seessh-config
for details. Thanks to Kirill Pinchuk for the initial patch.12
Added the ability to try connecting multiple times to temporarily-down remote systems, instead of immediately failing. (Default behavior is still to only try once.) Seeenv.timeout <timeout>
andenv.connection_attempts <connection-attempts>
for controlling both connection timeouts and total number of attempts. ~fabric.operations.reboot has also been overhauled (but practically deprecated -- see its updated docs.)474
~fabric.tasks.execute now allows you to access the executed task's return values, by itself returning a dictionary whose keys are the host strings executed against.487 major
Overhauled the regular expression escaping performed in ~fabric.contrib.files.append and ~fabric.contrib.files.contains to try and handle more corner cases. Thanks to Neilen Marais for the patch.532
Reorganized and cleaned up the output offab --help
.8
Added--skip-bad-hosts
/env.skip_bad_hosts <skip-bad-hosts>
option to allow skipping past temporarily down/unreachable hosts.13
Env vars may now be set at runtime via the new--set
command-line flag.506
A newoutput alias <output-aliases>
,commands
, has been added, which allows hiding remote stdout and local "running command X" output lines.72
SSH agent forwarding support has made it into Fabric's SSH library, and hooks for using it have been added (disabled by default; use-A
orenv.forward_agent <forward-agent>
to enable.) Thanks to Ben Davis for porting an existing Paramiko patch to ssh and providing the necessary tweak to Fabric.1.3.4 <2012-01-12>
492
@parallel <fabric.decorators.parallel> did not automatically triggerlinewise output <linewise-output>
, as was intended. This has been fixed. Thanks to Brandon Huey for the catch.510
Parallel mode is incompatible with user input, such as password/hostname prompts, and was causing cryptic Operation not supported by device errors when such prompts needed to be displayed. This behavior has been updated to cleanly and obviouslyabort
instead.494
Fixed regression bug affecting some env values such as env.port under parallel mode. Symptoms included ~fabric.contrib.project.rsync_project bailing out due to a None port value when run under @parallel <fabric.decorators.parallel>. Thanks to Rob Terhaar for the report.339
Don't show imported ~fabric.colors members in--list
output. Thanks to Nick Trew for the report.1.3.3 <2011-11-23>
1.2.5 <2011-11-23>
1.1.7 <2011-11-23>
441
Specifying a task module as a task on the command line no longer blows up but presents the usual "no task by that name" error message instead. Thanks to Mitchell Hashimoto for the catch.475
Allow escaping of equals signs in per-task args/kwargs.450
Improve traceback display when handlingImportError
for dependencies. Thanks to David Wolever for the patches.446
Add QNX to list of secondary-case ~fabric.contrib.files.sed targets. Thanks to Rodrigo Madruga for the tip.443
~fabric.contrib.files.exists didn't expand tildes; now it does. Thanks to Riccardo Magliocchetti for the patch.437
~fabric.decorators.with_settings now correctly preserves the wrapped function's docstring and other attributes. Thanks to Eric Buckley for the catch and Luke Plant for the patch.400
Handle corner case of systems wherepwd.getpwuid
raisesKeyError
for the user's UID instead of returning a valid string. Thanks to Dougal Matthews for the catch.397
Some poorly behaved objects in third party modules triggered exceptions during Fabric's "classic or new-style task?" test. A fix has been added which tries to work around these.341
~fabric.contrib.files.append incorrectly failed to detect that the line(s) given already existed in files hidden to the remote user, and continued appending every time it ran. This has been fixed. Thanks to Dominique Peretti for the catch and Martin Vilcans for the patch.342
Combining ~fabric.context_managers.cd with ~fabric.operations.put and itsuse_sudo
keyword caused an unrecoverable error. This has been fixed. Thanks to Egor M for the report.482
Parallel mode should imply linewise output; omission of this behavior was an oversight.230
Fix regression re: combo of no fabfile & arbitrary command use. Thanks to Ali Saifee for the catch.1.3.2 <2011-11-07>
1.2.4 <2011-11-07>
1.1.6 <2011-11-07>
459 backported
Update our setup.py files to note that PyCrypto released 2.4.1, which fixes the setuptools problems.467 backported
(also468
,469
) Handful of documentation clarification tweaks. Thanks to Paul Hoffman for the patches.1.3.1 <2011-10-24>
457
Ensured that Fabric fast-fails parallel tasks if any child processes encountered errors. Previously, multi-task invocations would continue to the 2nd, etc task when failures occurred, which does not fit with how Fabric usually behaves. Thanks to Github usersdcooke
for the report and Morgan Goose for the fix.1.3.0 <2011-10-23>
1.2.3 <2011-10-23>
1.1.5 <2011-10-23>
1.0.5 <2011-10-23>
275
To support an edge use case of the features released in19
, and to lay the foundation for275
, we have forked Paramiko into the Python 'ssh' library and changed our dependency to it for Fabric 1.3 and higher. This may have implications for the more uncommon install use cases, and package maintainers, but we hope to iron out any issues as they come up.323
~fabric.operations.put forgot how to expand leading tildes in the remote file path. This has been corrected. Thanks to Piet Delport for the catch.21
It is now possible, using the new ~fabric.tasks.execute API call, to execute task objects (by reference or by name) from within other tasks or in library mode. ~fabric.tasks.execute honors the other tasks' ~fabric.decorators.hosts/~fabric.decorators.roles decorators, and also supports passing in explicit host and/or role arguments.19
Tasks may now be optionally executed in parallel. Please see theparallel execution docs <parallel-execution>
for details. Major thanks to Morgan Goose for the initial implementation.182
During display of remote stdout/stderr, Fabric occasionally printed extraneous line prefixes (which in turn sometimes overwrote wrapped text.) This has been fixed.430
Tasks decorated with ~fabric.decorators.runs_once printed extraneous 'Executing...' status lines on subsequent invocations. This is noisy at best and misleading at worst, and has been corrected. Thanks to Jacob Kaplan-Moss for the report.1.2.2 <2011-09-01>
1.1.4 <2011-09-01>
1.0.4 <2011-09-01>
252
~fabric.context_managers.settings would silently fail to setenv
values for keys which did not exist outside the context manager block. It now works as expected. Thanks to Will Maier for the catch and suggested solution.393 backported
Fixed a typo in an example code snippet in the task docs. Thanks to Hugo Garza for the catch.396
--shortlist
broke after the addition of--list-format
and no longer displayed the short list format correctly. This has been fixed.373
Re-added missing functionality preventinghost exclusion <excluding-hosts>
from working correctly.303
Updated terminal size detection to correctly skip over non-tty stdout, such as when runningfab taskname | other_command
.1.2.1 <2011-08-21>
1.1.3 <2011-08-21>
1.0.3 <2011-08-21>
417
abort-on-prompts
would incorrectly abort when set to True, even if both password and host were defined. This has been fixed. Thanks to Valerie Ishida for the report.416 backported
Updated documentation to reflect move from Redmine to Github.389
Fixed/improved error handling when Paramiko import fails. Thanks to Brian Luft for the catch.1.2.0 <2011-07-12>
22
Enhanced @task <fabric.decorators.task> to addaliasing <task-aliases>
,per-module default tasks <default-tasks>
, andcontrol over the wrapping task class <task-decorator-and-classes>
. Thanks to Travis Swicegood for the initial work and collaboration.380
Improved unicode support when testing objects for being string-like. Thanks to Jiri Barton for catch & patch.382
Experimental overhaul of changelog formatting & process to make supporting multiple lines of development less of a hassle.1.1.2 <2011-07-07>
1.0.2 <2011-06-24>