Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #1

Closed
wants to merge 3 commits into from
Closed

Initial Update #1

wants to merge 3 commits into from

Conversation

pyup-bot
Copy link
Collaborator

This is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

flake8 3.5.0 » 3.5.0 PyPI | Changelog | Repo
mock 2.0.0 » 2.0.0 PyPI | Repo
paramiko 2.4.0 » 2.4.0 PyPI | Changelog | Repo

Changelogs

flake8 -> 3.5.0

3.5.0


You can view the 3.5.0 milestone_ on GitLab for more details.

New Dependency Information

  • Allow for PyFlakes 1.6.0 (See also GitLab359_)
  • Start using new PyCodestyle checks for bare excepts and ambiguous identifier
    (See also GitLab361_)

Features

  • Print out information about configuring VCS hooks (See also GitLab335_)
  • Allow users to develop plugins "local" to a repository without using
    setuptools. See our documentation on local plugins for more information.
    (See also GitLab357_)

Bugs Fixed

  • Catch and helpfully report UnicodeDecodeError\ s when parsing
    configuration files. (See also GitLab358_)

.. all links
.. _3.5.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/20

.. issue links
.. _GitLab335:
https://gitlab.com/pycqa/flake8/issues/335
.. _GitLab357:
https://gitlab.com/pycqa/flake8/issues/357
.. _GitLab358:
https://gitlab.com/pycqa/flake8/issues/358
.. _GitLab359:
https://gitlab.com/pycqa/flake8/issues/359
.. _GitLab361:
https://gitlab.com/pycqa/flake8/issues/361

.. merge request links

3.4.1


You can view the 3.4.1 milestone_ on GitLab for more details.

  • Fix minor regression when users specify only a --select list with items
    in the enabled/extended select list. (See also GitLab354_)

.. all links
.. _3.4.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/19

.. issue links
.. _GitLab354:
https://gitlab.com/pycqa/flake8/issues/354

.. merge request links

3.4.0


You can view the 3.4.0 milestone_ on GitLab for more details.

  • Refine logic around --select and --ignore when combined with the
    default values for each. (See also GitLab318_)
  • Handle spaces as an alternate separate for error codes, e.g.,
    --ignore 'E123 E234'. (See also GitLab329_)
  • Filter out empty select and ignore codes, e.g., --ignore E123,,E234.
    (See also GitLab330_)
  • Specify dependencies appropriately in setup.py (See also Gitlab341_)
  • Fix bug in parsing --quiet and --verbose from config files.
    (See also GitLab!193_)
  • Remove unused import of os in the git hook template (See also
    GitLab!194_)

.. all links
.. _3.4.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/18

.. issue links
.. _GitLab318:
https://gitlab.com/pycqa/flake8/issues/318
.. _GitLab329:
https://gitlab.com/pycqa/flake8/issues/329
.. _GitLab330:
https://gitlab.com/pycqa/flake8/issues/330
.. _GitLab341:
https://gitlab.com/pycqa/flake8/issues/341

.. merge request links
.. _GitLab!193:
https://gitlab.com/pycqa/flake8/merge_requests/193
.. _GitLab!194:
https://gitlab.com/pycqa/flake8/merge_requests/194

3.3.0


You can view the 3.3.0 milestone_ on GitLab for more details.

  • Add support for Python 3.6 (via dependencies). Note Flake8 does not
    guarantee that all plugins will support Python 3.6.
  • Added unique error codes for all missing PyFlakes messages. (14 new
    codes, see "Error / Violation Codes")
  • Dramatically improve the performance of Flake8. (See also GitLab!156_)
  • Display the local file path instead of the temporary file path when
    using the git hook. (See also GitLab244_)
  • Add methods to Report class that will be called when Flake8 starts and
    finishes processing a file. (See also GitLab251_)
  • Fix problem where hooks should only check *.py files. (See also
    GitLab268_)
  • Fix handling of SyntaxErrors that do not include physical line information.
    (See also GitLab279_)
  • Update upper bound on PyFlakes to allow for PyFlakes 1.5.0. (See also
    GitLab290_)
  • Update setuptools integration to less eagerly deduplicate packages.
    (See also GitLab295_)
  • Force flake8 --version to be repeatable between invocations. (See also
    GitLab297_)

.. all links
.. _3.3.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/16

.. issue links
.. _GitLab244:
https://gitlab.com/pycqa/flake8/issues/244
.. _GitLab251:
https://gitlab.com/pycqa/flake8/issues/251
.. _GitLab268:
https://gitlab.com/pycqa/flake8/issues/268
.. _GitLab279:
https://gitlab.com/pycqa/flake8/issues/279
.. _GitLab290:
https://gitlab.com/pycqa/flake8/issues/290
.. _GitLab295:
https://gitlab.com/pycqa/flake8/issues/295
.. _GitLab297:
https://gitlab.com/pycqa/flake8/issues/297

.. merge request links
.. _GitLab!156:
https://gitlab.com/pycqa/flake8/merge_requests/156

3.2.1


You can view the 3.2.1 milestone_ on GitLab for more details.

  • Fix subtle bug when deciding whether to report an on-by-default's violation
    (See also GitLab257_)
  • Fix another bug around SyntaxErrors not being reported at the right column
    and row (See also GitLab259_ and GitLab237_ for a related, previously
    fixed bug)
  • Fix regression from 2.x where we run checks against explicitly provided
    files, even if they don't match the filename patterns. (See also
    GitLab266_)

.. links
.. _3.2.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/15
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab257:
https://gitlab.com/pycqa/flake8/issues/257
.. _GitLab259:
https://gitlab.com/pycqa/flake8/issues/259
.. _GitLab266:
https://gitlab.com/pycqa/flake8/issues/266

3.2.0


You can view the 3.2.0 milestone_ on GitLab for more details.

  • Allow for pycodestyle 2.2.0 which fixes a bug in E305 (See also
    GitLab256_)

.. links
.. _3.2.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/14
.. _GitLab256:
https://gitlab.com/pycqa/flake8/issues/256

3.1.1


You can view the 3.1.1 milestone_ on GitLab for more details.

  • Do not attempt to install/distribute a man file with the Python package;
    leave this for others to do. (See also GitLab254_)
  • Fix packaging bug where wheel version constraints specified in setup.cfg did
    not match the constraints in setup.py. (See also GitLab255_)

.. links
.. _3.1.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/13
.. _GitLab254:
https://gitlab.com/pycqa/flake8/issues/254
.. _GitLab255:
https://gitlab.com/pycqa/flake8/issues/255

3.1.0


You can view the 3.1.0 milestone_ on GitLab for more details.

  • Add --bug-report flag to make issue reporters' lives easier.
  • Collect configuration files from the current directory when using our Git
    hook. (See also GitLab210, GitLab218, GitLab223_)
  • Avoid unhandled exceptions when dealing with SyntaxErrors. (See also
    GitLab214, GitLab238)
  • Exit early if the value for --diff is empty. (See also GitLab226_)
  • Handle empty --stdin-display-name values. (See also GitLab235_)
  • Properly report the column number of Syntax Errors. We were assuming that
    all reports of column numbers were 0-indexed, however, SyntaxErrors report
    the column number as 1-indexed. This caused us to report a column number
    that was 1 past the actual position. Further, when combined with
    SyntaxErrors that occur at a newline, this caused the position to be
    visually off by two. (See also GitLab237_)
  • Fix the behaviour of --enable-extensions. Previously, items specified
    here were still ignored due to the fact that the off-by-default extension
    codes were being left in the ignore list. (See also GitLab239_)
  • Fix problems around --select and --ignore behaviour that prevented
    codes that were neither explicitly selected nor explicitly ignored from
    being reported. (See also GitLab242_)
  • Truly be quiet when the user specifies -q one or more times. Previously,
    we were showing the if the user specified -q and --show-source. We
    have fixed this bug. (See also GitLab245_)
  • Add new File Processor attribute, previous_unindented_logical_line to
    accommodate pycodestyle 2.1.0. (See also GitLab246_)
  • When something goes wrong, exit non-zero. (See also GitLab248,
    GitLab209
    )
  • Add --tee as an option to allow use of --output-file and printing to
    standard out.
  • Allow the git plugin to actually be lazy when collecting files.
  • Allow for pycodestyle 2.1 series and pyflakes 1.3 series.

.. links
.. _3.1.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/12
.. _GitLab209:
https://gitlab.com/pycqa/flake8/issues/209
.. _GitLab210:
https://gitlab.com/pycqa/flake8/issues/210
.. _GitLab214:
https://gitlab.com/pycqa/flake8/issues/214
.. _GitLab218:
https://gitlab.com/pycqa/flake8/issues/218
.. _GitLab223:
https://gitlab.com/pycqa/flake8/issues/223
.. _GitLab226:
https://gitlab.com/pycqa/flake8/issues/226
.. _GitLab235:
https://gitlab.com/pycqa/flake8/issues/235
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab238:
https://gitlab.com/pycqa/flake8/issues/238
.. _GitLab239:
https://gitlab.com/pycqa/flake8/issues/239
.. _GitLab242:
https://gitlab.com/pycqa/flake8/issues/242
.. _GitLab245:
https://gitlab.com/pycqa/flake8/issues/245
.. _GitLab246:
https://gitlab.com/pycqa/flake8/issues/246
.. _GitLab248:
https://gitlab.com/pycqa/flake8/issues/248

3.0.4


  • Side-step a Pickling Error when using Flake8 with multiprocessing on Unix
    systems. (See also GitLab164_)
  • Fix an Attribute Error raised when dealing with Invalid Syntax. (See also
    GitLab203_)
  • Fix an unhandled Syntax Error when tokenizing files. (See also
    GitLab205_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab203:
https://gitlab.com/pycqa/flake8/issues/203
.. _GitLab205:
https://gitlab.com/pycqa/flake8/issues/205

3.0.3


  • Disable --jobs for any version of Python on Windows.
    (See also this Python bug report_)
  • Raise exception when entry_point in plugin not callable.
    This raises an informative error when a plugin fails to load because its
    entry_point is not callable, which can happen with a plugin which is buggy or
    not updated for the current version of flake8. This is nicer than raising a
    PicklingError about failing to pickle a module (See also GitLab164_)
  • Fix noqa comments followed by a : and explanation broken by
    3.0.0 (See also GitLab178_)
  • Always open our output file in append mode so we do not overwrite log
    messages. (See also GitLab193_)
  • When normalizing path values read from configuration, keep in context the
    directory where the configuration was found so that relative paths work.
    (See also GitLab194_)
  • Fix issue where users were unable to ignore plugin errors that were on
    by default. (See also GitLab195_)
  • Fix our legacy API StyleGuide's init_report method to actually override
    the previous formatter. (See also GitLab200_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab178:
https://gitlab.com/pycqa/flake8/issues/178
.. _GitLab193:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab194:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab195:
https://gitlab.com/pycqa/flake8/issues/195
.. _GitLab200:
https://gitlab.com/pycqa/flake8/issues/200
.. _this Python bug report:
https://bugs.python.org/issue27649

3.0.2


  • Fix local config file discovery. (See also GitLab181_)
  • Fix indexing of column numbers. We accidentally were starting column indices
    at 0 instead of 1.
  • Fix regression in handling of errors like E402 that rely on a combination of
    attributes. (See also GitLab186_)

.. links
.. _GitLab181:
https://gitlab.com/pycqa/flake8/issues/181
.. _GitLab186:
https://gitlab.com/pycqa/flake8/issues/186

3.0.1


  • Fix regression in handling of noqa for multiline strings.
    (See also GitLab177_)
  • Fix regression in handling of --output-file when not also using
    --verbose. (See also GitLab180_)
  • Fix regression in handling of --quiet. (See also GitLab180_)
  • Fix regression in handling of --statistics. (See also GitLab180_)

.. links
.. _GitLab177:
https://gitlab.com/pycqa/flake8/issues/177
.. _GitLab180:
https://gitlab.com/pycqa/flake8/issues/180

3.0.0


  • Drop explicit support for Pythons 2.6, 3.2, and 3.3.
  • Remove dependence on pep8/pycodestyle for file processing, plugin
    dispatching, and more. We now control all of this while keeping backwards
    compatibility.
  • --select and --ignore can now both be specified and try to find the
    most specific rule from each. For example, if you do --select E --ignore E123 then we will report everything that starts with E except for
    E123. Previously, you would have had to do --ignore E123,F,W which
    will also still work, but the former should be far more intuitive.
  • Add support for in-line noqa comments to specify only the error
    codes to be ignored, e.g., noqa: E123,W503
  • Add entry-point for formatters as well as a base class that new formatters
    can inherit from. See the documentation for more details.
  • Add detailed verbose output using the standard library logging module.
  • Enhance our usage of optparse for plugin developers by adding new parameters
    to the add_option that plugins use to register new options.
  • Update --install-hook to require the name of version control system hook
    you wish to install a Flake8.
  • Stop checking sub-directories more than once via the setuptools command
  • When passing a file on standard-in, allow the caller to specify
    --stdin-display-name so the output is properly formatted
  • The Git hook now uses sys.executable to format the shebang line.
    This allows Flake8 to install a hook script from a virtualenv that points to
    that virtualenv's Flake8 as opposed to a global one (without the virtualenv
    being sourced).
  • Print results in a deterministic and consistent ordering when used with
    multiprocessing
  • When using --count, the output is no longer written to stderr.
  • AST plugins can either be functions or classes and all plugins can now
    register options so long as there are callable attributes named as we
    expect.
  • Stop forcibly re-adding .tox, .eggs, and *.eggs to
    --exclude. Flake8 2.x started always appending those three patterns
    to any exclude list (including the default and any user supplied list).
    Flake8 3 has stopped adding these in, so you may see errors when upgrading
    due to these patterns no longer being forcibly excluded by default if you
    have your own exclude patterns specified.

To fix this, add the appropriate patterns to your exclude patterns list.

.. note::

 This item was added in November of 2016, as a result of a bug
 report.

2.6.2


  • Bug Fix packaging error during release process.

2.6.1


  • Bug Update the config files to search for to include setup.cfg and
    tox.ini. This was broken in 2.5.5 when we stopped passing
    config_file to our Style Guide

2.6.0


  • Requirements Change Switch to pycodestyle as all future pep8 releases
    will use that package name
  • Improvement Allow for Windows users on select versions of Python to
    use --jobs and multiprocessing
  • Improvement Update bounds on McCabe
  • Improvement Update bounds on PyFlakes and blacklist known broken
    versions
  • Improvement Handle new PyFlakes warning with a new error code: F405

2.5.5


  • Bug Fix setuptools integration when parsing config files
  • Bug Don't pass the user's config path as the config_file when creating a
    StyleGuide

2.5.4


  • Bug Missed an attribute rename during the v2.5.3 release.

2.5.3


  • Bug Actually parse output_file and enable_extensions from config
    files

2.5.2


  • Bug Parse output_file and enable_extensions from config files
  • Improvement Raise upper bound on mccabe plugin to allow for version
    0.4.0

2.5.1


  • Bug Properly look for .flake8 in current working directory
    (GitLab103_)
  • Bug Monkey-patch pep8.stdin_get_value to cache the actual value in
    stdin. This helps plugins relying on the function when run with
    multiprocessing. (GitLab105, GitLab107)

.. _GitLab103: https://gitlab.com/pycqa/flake8/issues/103
.. _GitLab105: https://gitlab.com/pycqa/flake8/issues/105
.. _GitLab107: https://gitlab.com/pycqa/flake8/issues/107

2.5.0


  • Improvement Raise cap on PyFlakes for Python 3.5 support
  • Improvement Avoid deprecation warnings when loading extensions
    (GitLab59, GitLab90)
  • Improvement Separate logic to enable "off-by-default" extensions
    (GitLab67_)
  • Bug Properly parse options to setuptools Flake8 command (GitLab!41_)
  • Bug Fix exceptions when output on stdout is truncated before Flake8
    finishes writing the output (GitLab69_)
  • Bug Fix error on OS X where Flake8 can no longer acquire or create new
    semaphores (GitLab74_)

.. _GitLab!41: https://gitlab.com/pycqa/flake8/merge_requests/41
.. _GitLab59: https://gitlab.com/pycqa/flake8/issues/59
.. _GitLab67: https://gitlab.com/pycqa/flake8/issues/67
.. _GitLab69: https://gitlab.com/pycqa/flake8/issues/69
.. _GitLab74: https://gitlab.com/pycqa/flake8/issues/74
.. _GitLab90: https://gitlab.com/pycqa/flake8/issues/90

2.4.1


  • Bug Do not raise a SystemError unless there were errors in the
    setuptools command. (GitLab39, GitLab!23)
  • Bug Do not verify dependencies of extensions loaded via entry-points.
  • Improvement Blacklist versions of pep8 we know are broken

.. _GitLab39: https://gitlab.com/pycqa/flake8/issues/39
.. _GitLab!23: https://gitlab.com/pycqa/flake8/merge_requests/23

2.4.0


  • Bug Print filenames when using multiprocessing and -q option.
    (GitLab31_)
  • Bug Put upper cap on dependencies. The caps for 2.4.0 are:
  • pep8 < 1.6 (Related to GitLab35_)
  • mccabe < 0.4
  • pyflakes < 0.9

See also GitLab32_

  • Bug Files excluded in a config file were not being excluded when flake8
    was run from a git hook. (GitHub2_)
  • Improvement Print warnings for users who are providing mutually
    exclusive options to flake8. (GitLab8, GitLab!18)
  • Feature Allow git hook configuration to live in .git/config.
    See the updated VCS hooks docs_ for more details. (GitLab!20_)

.. _GitHub2: PyCQA/flake8#2
.. _GitLab8: https://gitlab.com/pycqa/flake8/issues/8
.. _GitLab31: https://gitlab.com/pycqa/flake8/issues/31
.. _GitLab32: https://gitlab.com/pycqa/flake8/issues/32
.. _GitLab35: https://gitlab.com/pycqa/flake8/issues/35
.. _GitLab!18: https://gitlab.com/pycqa/flake8/merge_requests/18
.. _GitLab!20: https://gitlab.com/pycqa/flake8/merge_requests/20
.. _VCS hooks docs: https://flake8.readthedocs.org/en/latest/vcs.html

2.3.0


  • Feature: Add --output-file option to specify a file to write to
    instead of stdout.
  • Bug Fix interleaving of output while using multiprocessing
    (GitLab17_)

.. _GitLab17: https://gitlab.com/pycqa/flake8/issues/17

2.2.5


  • Flush standard out when using multiprocessing
  • Make the check for " flake8: noqa" more strict

2.2.4


  • Fix bugs triggered by turning multiprocessing on by default (again)

Multiprocessing is forcibly disabled in the following cases:

  • Passing something in via stdin
  • Analyzing a diff
  • Using windows
  • Fix --install-hook when there are no config files present for pep8 or
    flake8.
  • Fix how the setuptools command parses excludes in config files
  • Fix how the git hook determines which files to analyze (Thanks Chris
    Buccella!)

2.2.3


  • Actually turn multiprocessing on by default

2.2.2


  • Re-enable multiprocessing by default while fixing the issue Windows users
    were seeing.

2.2.1


  • Turn off multiple jobs by default. To enable automatic use of all CPUs, use
    --jobs=auto. Fixes 155 and 154.

2.2.0


  • New option doctests to run Pyflakes checks on doctests too
  • New option jobs to launch multiple jobs in parallel
  • Turn on using multiple jobs by default using the CPU count
  • Add support for python -m flake8 on Python 2.7 and Python 3
  • Fix Git and Mercurial hooks: issues 88, 133, 148 and 149
  • Fix crashes with Python 3.4 by upgrading dependencies
  • Fix traceback when running tests with Python 2.6
  • Fix the setuptools command python setup.py flake8 to read
    the project configuration

2.1.0


  • Add FLAKE8_LAZY and FLAKE8_IGNORE environment variable support to git and
    mercurial hooks
  • Force git and mercurial hooks to repsect configuration in setup.cfg
  • Only check staged files if that is specified
  • Fix hook file permissions
  • Fix the git hook on python 3
  • Ignore non-python files when running the git hook
  • Ignore .tox directories by default
  • Flake8 now reports the column number for PyFlakes messages

2.0.0


  • Pyflakes errors are prefixed by an F instead of an E
  • McCabe complexity warnings are prefixed by a C instead of a W
  • Flake8 supports extensions through entry points
  • Due to the above support, we require setuptools
  • We publish the documentation <https://flake8.readthedocs.org/>_
  • Fixes 13: pep8, pyflakes and mccabe become external dependencies
  • Split run.py into main.py, engine.py and hooks.py for better logic
  • Expose our parser for our users
  • New feature: Install git and hg hooks automagically
  • By relying on pyflakes (0.6.1), we also fixed 45 and 35

1.7.0


  • Fixes part of 35: Exception for no WITHITEM being an attribute of Checker
    for Python 3.3
  • Support stdin
  • Incorporate phd's builtins pull request
  • Fix the git hook
  • Update pep8.py to the latest version

1.6.2


  • fixed the NameError: global name 'message' is not defined (46)

1.6.1


  • fixed the mercurial hook, a change from a previous patch was not properly
    applied
  • fixed an assumption about warnings/error messages that caused an exception
    to be thrown when McCabe is used

1.6


  • changed the signatures of the check_file function in flake8/run.py,
    skip_warning in flake8/util.py and the check, checkPath
    functions in flake8/pyflakes.py.
  • fix --exclude and --ignore command flags (14, 19)
  • fix the git hook that wasn't catching files not already added to the index
    (29)
  • pre-emptively includes the addition to pep8 to ignore certain lines.
    Add nopep8 to the end of a line to ignore it. (37)
  • check_file can now be used without any special prior setup (21)
  • unpacking exceptions will no longer cause an exception (20)
  • fixed crash on non-existent file (38)

1.5


  • fixed the stdin
  • make sure mccabe catches the syntax errors as warnings
  • pep8 upgrade
  • added max_line_length default value
  • added Flake8Command and entry points if setuptools is around
  • using the setuptools console wrapper when available

1.4


  • git_hook: Only check staged changes for compliance
  • use pep8 1.2

1.3.1


  • fixed support for Python 2.5

1.3


  • fixed false W402 warning on exception blocks.

1.2


  • added a git hook
  • now Python 3 compatible
  • mccabe and pyflakes have warning codes like pep8 now

1.1


  • fixed the value returned by --version
  • allow the flake8: header to be more generic
  • fixed the "hg hook raises 'physical lines'" bug
  • allow three argument form of raise
  • now uses setuptools if available, for 'develop' command

1.0


  • Deactivates by default the complexity checker
  • Introduces the complexity option in the HG hook and the command line.

0.9


  • update pep8 version to 0.6.1
  • mccabe check: gracefully handle compile failure

0.8


  • fixed hg hook
  • discard unexisting files on hook check

0.7


  • Fix pep8 initialization when run through Hg
  • Make pep8 short options work when run through the command line
  • Skip duplicates when controlling files via Hg

0.6


  • Fix the McCabe metric on some loops

paramiko -> 2.4.0

1.9.0


  • 97 (with a little 93): Improve config parsing of ProxyCommand directives
    and provide a wrapper class to allow subprocess-driven proxy commands to be
    used as sock= arguments for SSHClient.connect.
  • 77: Allow SSHClient.connect() to take an explicit sock parameter
    overriding creation of an internal, implicit socket object.
  • 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 the various and sundry patches
    leading to the above changes.

1.8.1


  • 90: Ensure that callbacks handed to SFTPClient.get() always fire at least
    once, even for zero-length files downloaded. Thanks to Github user enB for
    the catch.
  • 85: Paramiko's test suite overrides
    unittest.TestCase.assertTrue/assertFalse to provide these modern assertions
    to Python 2.2/2.3, which lacked them. However on newer Pythons such as 2.7,
    this now causes deprecation warnings. The overrides have been patched to only
    execute when necessary. Thanks to Arfrever for catch & patch.

1.8.0


  • 17 ('ssh' 28): Fix spurious NoneType has no attribute 'error' and similar
    exceptions that crop up on interpreter exit.
  • 'ssh' 32: Raise a more useful error explaining which known_hosts key line was
    problematic, when encountering binascii issues decoding known host keys.
    Thanks to thomasvs for catch & patch.
  • 'ssh' 33: Bring ssh_config parsing more in line with OpenSSH spec, re: order of
    setting overrides by Host specifiers. Specifically, the overrides now go by
    file order instead of automatically sorting by Host value length. In
    addition, the first value found per config key (e.g. Port, User etc)
    wins, instead of the last. Thanks to Jan Brauer for the contribution.
  • 'ssh' 36: Support new server two-factor authentication option
    (RequiredAuthentications2), at least re: combining key-based & password
    auth. Thanks to Github user bninja.
  • 'ssh' 11: When raising an exception for hosts not listed in
    known_hosts (when RejectPolicy is in effect) the exception message was
    confusing/vague. This has been improved somewhat. Thanks to Cal Leeming for
    highlighting the issue.
  • 'ssh' 40: Fixed up & expanded EINTR signal handling. Thanks to Douglas Turk.
  • 'ssh' 15: Implemented parameter substitution in SSHConfig, matching the
    implementation of ssh_config(5). Thanks to Olle Lundberg for the patch.
  • 'ssh' 24: Switch some internal type checking to use isinstance to help prevent
    problems with client libraries using subclasses of builtin types. Thanks to
    Alex Morega for the patch.
  • Fabric 562: Agent forwarding would error out (with Authentication response too long) or freeze, when more than one remote connection to the local agent
    was active at the same time. This has been fixed. Thanks to Steven McDonald
    for assisting in troubleshooting/patching, and to GitHub user lynxis for
    providing the final version of the patch.
  • 'ssh' 5: Moved a fcntl import closer to where it's used to help avoid
    ImportError problems on Windows platforms. Thanks to Jason Coombs for the
    catch + suggested fix.
  • 'ssh' 4: Updated implementation of WinPageant integration to work on 64-bit
    Windows. Thanks again to Jason Coombs for the patch.
  • Added an IO loop sleep() call to avoid needless CPU usage when agent
    forwarding is in use.
  • Handful of internal tweaks to version number storage.
  • Updated setup.py with ==dev install URL for pip users.
  • Updated setup.py to account for packaging problems in PyCrypto 2.4.0
  • Added an extra atfork() call to help prevent spurious RNG errors when
    running under high parallel (multiprocess) load.
  • Merge PR 28: adding a demo to show how to use paramiko key generator to generate priv/pub keys pairs paramiko/paramiko#28 which adds a
    ssh-keygen like demo module. (Sofian Brabez)

1.7.7.2


1.7.7.1


  • Make the verification phase of SFTP.put optional (Larry Wright)
  • Patches to fix AIX support (anonymous)
  • Patch from Michele Bertoldi to allow compression to be turned on in the
    client constructor.
  • Patch from Shad Sharma to raise an exception if the transport isn't active
    when you try to open a new channel.
  • Stop leaking file descriptors in the SSH agent (John Adams)
  • More fixes for Windows address family support (Andrew Bennetts)
  • Use Crypto.Random rather than Crypto.Util.RandomPool
    (Gary van der Merwe, 271791)
  • Support for openssl keys (tehfink)
  • Fix multi-process support by calling Random.atfork (sugarc0de)

1.7.6


  • fixed bugs 411099 (sftp chdir isn't unicode-safe), 363163 & 411910 (more
    IPv6 problems on windows), 413850 (race when server closes the channel),
    426925 (support port numbers in host keys)

1.7.5


  • added support for ARC4 cipher and CTR block chaining (Denis Bernard)
  • made transport threads daemonize, to fix python 2.6 atexit behavior
  • support unicode hostnames, and IP6 addresses (Maxime Ripard, Shikhar
    Bhushan)
  • various small bug fixes

1.7.4


  • more randpool fixes for windows, from Dwayne Litzenberger
    (NOTE: this may require a pycrypto upgrade on windows)
  • fix potential deadlock during key exchange (Dwayne Litzenberger)
  • remove MFC dependency from windows (Mark Hammond)
  • added some optional API improvements for SFTPClient get() and put()

1.7.3


  • SSHClient can be asked not to use an SSH agent now, and not to search
    for private keys
  • added WarningPolicy option for SSHClient (warn, but allow, on unknown
    server keys)
  • added Channel.exit_status_ready to poll if a channel has received an
    exit status yet
  • new demo for reverse port forwarding
  • (bug 177117) fix UTF-8 passwords
  • (bug 189466) fix typo in osrandom.py
  • (bug 191657) potentially fix a race at channel shutdown
  • (bug 192749) document that SSHClient.connect may raise socket.error
  • (bug 193779) translate EOFError into AuthException during authentication
  • (bug 200416) don't create a new logger object for each channel

1.7.2


  • (bug 137219) catch EINTR and handle correctly
  • (bug 157205) fix select() to trigger on stderr for a channel too
  • added SSHClient.get_transport()
  • added Channel.send_ready()
  • added direct-tcpip forwarding [patch from david guerizec]
  • fixed the PRNG to be more secure on windows and in cases where fork() is
    called [patch from dwayne litzenberger]

1.7.1


  • windows SSH agent support can use the 'ctypes' module now if 'win32all' is
    not available [patch from alexander belchenko]
  • SFTPClient.listdir_attr() now preserves the 'longname' field [patch from
    wesley augur]
  • SFTPClient.get_channel() API added
  • SSHClient constuctor takes an optional 'timeout' parameter [patch from
    james bardin]

1.7


  • added x11 channel support (patch from david guerizec)
  • added reverse port forwarding support
  • (bug 75370) raise an exception when contacting a broken SFTP server
  • (bug 80295) SSHClient shouldn't expand the user directory twice when reading
    RSA/DSS keys
  • (bug 82383) typo in DSS key in SSHClient
  • (bug 83523) python 2.5 warning when encoding a file's modification time
  • if connecting to an SSH agent fails, silently fallback instead of raising
    an exception

1.6.4


  • fix setup.py on osx (oops!)
  • (bug 69330) check for the existence of RSA/DSA keys before trying to open
    them in SFTPClient
  • (bug 69222) catch EAGAIN in socket code to workaround a bug in recent
    Linux 2.6 kernels
  • (bug 70398) improve dict emulation in HostKeys objects
  • try harder to make sure all worker threads are joined on Transport.close()

1.6.3


  • fixed bug where HostKeys.setitem wouldn't always do the right thing
  • fixed bug in SFTPClient.chdir and SFTPAttributes.str [patch from
    mike barber]
  • try harder not to raise EOFError from within SFTPClient
  • fixed bug where a thread waiting in accept() could block forever if the
    transport dies [patch from mike looijmans]

1.6.2


  • added support for "old" group-exchange server mode, for compatibility
    with the windows putty client
  • fixed some more interactions with SFTP file readv() and prefetch()
  • when saving the known_hosts file, preserve the original order [patch from
    warren young]
  • fix a couple of broken lines when exporting classes (bug 55946)

1.6.1


  • more unit tests fixed for windows/cygwin (thanks to alexander belchenko)
  • a couple of fixes related to exceptions leaking out of SFTPClient
  • added ability to set items in HostKeys via setitem
  • HostKeys now retains order and has a save() method
  • added PKey.write_private_key and PKey.from_private_key

1.6


  • pageant support on Windows thanks to john arbash meinel and todd whiteman
  • fixed unit tests to work under windows and cygwin (thanks to alexander
    belchenko for debugging)
  • various bugfixes/tweaks to SFTP file prefetch
  • added SSHClient for a higher-level API
  • SFTP readv() now yields results as it gets them
  • several APIs changed to throw an exception instead of "False" on failure

1.5.4


  • fixed HostKeys to more correctly emulate a python dict
  • fixed a bug where file read buffering was too aggressive
  • improved prefetching so that out-of-order reads still use the prefetch
    buffer
  • added experimental SFTPFile.readv() call
  • more unit tests

1.5.3


  • a few performance enhancements
  • added HostKeys, for dealing with openssh style "known_hosts" files, and
    added support for hashed hostnames
  • added Transport.atfork() for dealing with forked children
  • added SFTPClient.truncate, SFTPFile.chmod, SFTPFile.chown, SFTPFile.utime,
    and SFTPFile.truncate
  • improved windows demos [patch from mike looijmans], added an sftp demo, and
    moved demos to the demos/ folder
  • fixed a few interoperability bugs
  • cleaned up logging a bit
  • fixed a bug where EOF on a Channel might not be detected by select [found
    by thomas steinacher]
  • fixed python 2.4-ism that crept in [patch by jan hudec]
  • fixed a few reference loops that could have interacted badly with the python
    garbage collector
  • fixed a bunch of pychecker warnings, some of which were bugs

1.5.2


  • compression support (opt-in via Transport.use_compression)
  • sftp files may be opened with mode flag 'x' for O_EXCL (exclusive-open)
    behavior, which has no direct python equivalent
  • added experimental util functions for parsing openssh config files
  • fixed a few bugs (and potential deadlocks) with key renegotiation
  • fixed a bug that caused SFTPFile.prefetch to occasionally lock up
  • fixed an sftp bug which affected van dyke sftp servers
  • fixed the behavior of select()ing on a closed channel, such that it will
    always trigger as readable

1.5.1


  • SFTPFile.prefetch() added to dramatically speed up downloads (automatically
    turned on in SFTPClient.get())
  • fixed bug where garbage-collected Channels could trigger the Transport to
    close the session (reported by gordon good)
  • fixed a deadlock in rekeying (reported by wendell wood)
  • fixed some windows bugs and SFTPAttributes.str() (reported by grzegorz
    makarewicz)
  • better sftp error reporting by adding fake "errno" info to IOErrors

1.5


  • added support for "keyboard-interactive" authentication
  • added mode (on by default) where password authentication will try to
    fallback to "keyboard-interactive" if it's supported
  • added pipelining to SFTPFile.write and SFTPClient.put
  • fixed bug with SFTPFile.close() not guarding against being called more
    than once (thanks to Nathaniel Smith)
  • fixed broken 'a' flag in SFTPClient.file() (thanks to Nathaniel Smith)
  • fixed up epydocs to look nicer
  • reorganized auth_transport into auth_handler, which seems to be a cleaner
    separation
  • demo scripts fixed to have a better chance of loading the host keys
    correctly on windows/cygwin

1.4


  • added SSH-agent support (for posix) from john rochester
  • added chdir() and getcwd() to SFTPClient, to emulate a "working directory"
  • added get() and put() to SFTPClient, to emulate ftp whole-file transfers
  • added check() to SFTPFile (a file hashing protocol extension)
  • fixed Channels and SFTPFiles (among others) to auto-close when GC'd
  • fixed Channel.fileno() for Windows, this time really
  • don't log socket errors as "unknown exception"
  • some misc. backward-compatible API improvements (like allowing
    Transport.start_client() and start_server() to be called in a blocking way)

1.3.1


  • added SFTPClient.close()
  • fixed up some outdated documentation
  • made SFTPClient.file() an alias for open()
  • added Transport.open_sftp_client() for convenience
  • refactored packetizing out of Transport
  • fixed bug (reported by alain s.) where connecting to a non-SSH host could
    cause paramiko to freeze up
  • fixed Channel.fileno() for Windows (again)
  • some more unit tests

1.3


  • fixed a bug where packets larger than about 12KB would cause the session
    to die on all platforms except osx
  • added a potential workaround for windows to let Channel.fileno() (and
    therefore the select module) work!
  • changed API for subsystem handlers (sorry!) to pass more info and make it
    easier to write a functional SFTP server

1.2


  • added SFTPClient.listdir_attr() for fetching a list of files and their
    attributes in one call
  • added Channel.recv_exit_status() and Channel.send_exit_status() for
    manipulating the exit status of a command from either client or server
    mode
  • moved check_global_request into ServerInterface, where it should've been
    all along (oops)
  • SFTPHandle's default implementations are fleshed out more
  • made logging a bit more consistent, and started logging thread ids
  • fixed a few race conditions, one of which would sometimes cause a Transport
    to fail to start on slow machines
  • more unit tests

1.1


  • server-side SFTP support
  • added support for stderr streams on client & server channels
  • added a new distinct exception for failed client authentication
    when caused by the server rejecting that type of auth
  • added support for multi-part authentication
  • fixed bug where get_username() wasn't working in server mode

1.0


  • fixed bug that broke server-mode authentication by private key
  • fixed bug where closing a Channel could end up killing the entire
    Transport
  • actually include demo_windows.py this time (oops!)
  • fixed recently-introduced bug in group-exchange key negotiation that
    would generate the wrong hash (and therefore fail the initial handshake)
  • server-mode subsystem handler is a bit more flexible

0.9


0.1


Once you have closed this pull request, I'll create separate pull requests for every update as soon as I find them.

That's it for now!

Happy merging! 🤖

tnir pushed a commit that referenced this pull request May 29, 2021
@tnir tnir self-requested a review May 30, 2021 06:21
@tnir tnir self-assigned this May 30, 2021
@tnir tnir closed this May 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants