======================== Changes in version 0.9.2 ======================== The following changes were implemented in Fabric 0.9.2: Feature additions ================= * The `~fabric.operations.reboot` operation has been added, providing a way for Fabric to issue a reboot command and then reconnect after the system has restarted. * ``python setup.py test`` now runs Fabric's test suite (provided you have all the prerequisites from the ``requirements.txt`` installed). Thanks to Eric Holscher for the patch. * Added functionality for loading fabfiles which are Python packages (directories) instead of just modules (single files.) See :ref:`fabfile-discovery`. * Added output lines informing the user of which tasks are being executed (e.g. ``[myserver] Executing task 'foo'``.) * Added support for lazy (callable) role definition values in ``env.roledefs``. * Added `contrib.django ` module with basic Django integration. * :ref:`env.local_user ` was added, providing easy and permanent access to the local system username, even if an alternate remote username has been specified. * :issue:`29`: Added support for arbitrary command-line-driven anonymous tasks via ``fab [options] -- [shell command]``. See :ref:`arbitrary-commands`. * :issue:`52`: Full tracebacks during aborts are now displayed if the user has opted to see debug-level output. * :issue:`101`: Added `~fabric.colors` module with basic color output support. (:issue:`101` is still open: we plan to leverage the new module in Fabric's own output in the future.) * :issue:`137`: Commas used to separate per-task arguments may now be escaped with a backslash. Thanks to Erich Heine for the patch. * :issue:`144`: `~fabric.decorators.hosts` (and `~fabric.decorators.roles`) will now expand a single, iterable argument instead of requiring one to use e.g. ``@hosts(*iterable)``. * :issue:`151`: Added a `~fabric.utils.puts` utility function, which allows greater control over fabfile-generated (as opposed to Fabric-generated) output. Also added `~fabric.utils.fastprint`, an alias to `~fabric.utils.puts` allowing for convenient unbuffered, non-newline-terminated printing. * :issue:`208`: Users rolling their own shell completion or who otherwise find themselves performing text manipulation on the output of :option:`--list <-l>` may now use :option:`--shortlist` to get a plain, newline-separated list of task names. Bugfixes ======== * The interactive "what host to connect to?" prompt now correctly updates the appropriate environment variables (hostname, username, port) based on user input. * Fixed a bug where Fabric's own internal fabfile would pre-empt the user's fabfile due to a PYTHONPATH order issue. User fabfiles are now always loaded at the front of the PYTHONPATH during import. * Disabled some DeprecationWarnings thrown by Paramiko when that library is imported into Fabric under Python 2.6. * :issue:`44`, :issue:`63`: Modified `~fabric.contrib.project.rsync_project` to honor the SSH port and identity file settings. Thanks to Mitch Matuson and Morgan Goose. * :issue:`123`: Removed Cygwin from the "are we on Windows" test; now, only Python installs whose ``sys.platform`` says ``'win32'`` will use Windows-only code paths (e.g. importing of ``pywin32``). Documentation updates ===================== * Added a few new items to the :doc:`FAQ `. * :issue:`173`: Simple but rather embarrassing typo fix in README. Thanks to Ted Nyman for the catch. * :issue:`194`: Added a note to :doc:`the install docs ` about a possible edge case some Windows 64-bit Python users may encounter. * :issue:`216`: Overhauled the :ref:`process backgrounding FAQ ` to include additional techniques and be more holistic. Packaging updates ================= * :issue:`86`, :issue:`158`: Removed the bundled Paramiko 1.7.4 and updated the ``setup.py`` to require Paramiko >=1.7.6. This lets us skip the known-buggy Paramiko 1.7.5 while getting some much needed bugfixes in Paramiko 1.7.6.