* Adding ssh-audit.py to algorithm_lookup_branch
* Removed the use of an error handler from algorithm_lookup and implemented suggestions made by jugmac00 and jtesta
* Fix RuntimeError for the JSON export
It is never a good idea to modify an iterable while iterating over it.
Copying the iterable fixes#41
modified: ssh-audit.py
* Add test case for #41
new file: test/test_build_struct.py
* Fix linting error
modified: test/test_build_struct.py
* Convert type comments to annotations
Notes:
- variable annotations are only possible for Python 3.6 and upwards
- class names as a result of a function have to be quoted
cf https://www.python.org/dev/peps/pep-0563/#enabling-the-future-behavior-in-python-3-7
This is ongoing work for #32
modified: ssh-audit.py
* Do not use variable annotation
... as this feature works only for Python 3.6 and above only.
modified: ssh-audit.py
* Re-enable strict_optional
`None` is a valid return type for mypy, even when you specify a certain
type. `strict_optional` makes sure that only the annotated return type
is actually returned.
modified: tox.ini
* Re-enable `warn_unused_ignores`
Quote from mypy docs:
This flag will make mypy report an error whenever your code uses a
`# type: ignore` comment on a line that is not actually generating
an error message.
modified: tox.ini
* Re-enable `warn_return_any`
Quote from the documenation:
"This flag causes mypy to generate a warning when returning a value with
type Any from a function declared with a non-Any return type."
modified: tox.ini
* Re-enable `warn_redundant_casts`
Quote from the documentation:
"This flag will make mypy report an error whenever your code uses an
unnecessary cast that can safely be removed."
modified: tox.ini
* Remove `warn_incomplete_stub`
... as the documentation says
"This flag is mainly intended to be used by people who want contribute
to typeshed and would like a convenient way to find gaps and omissions."
modified: tox.ini
* Re-enable `disallow_subclassing_any`
Quote from the documentation:
"This flag reports an error whenever a class subclasses a value of type
Any."
modified: tox.ini
* Re-enable `follow_imports`
... and set it to `normal`.
For more information, see
https://mypy.readthedocs.io/en/latest/running_mypy.html#follow-imports
modified: tox.ini
* Re-enable `ignore_missing_imports`
Quote from the documentation:
"This flag makes mypy ignore all missing imports. It is equivalent to
adding # type: ignore comments to all unresolved imports within your
codebase."
modified: tox.ini
* Fix arguments for Kex initialization
`follows` has to be a boolean, but an int was provided.
This worked, as in Python boolean is a subtype of int.
modified: ssh-audit.py
* Do not uncomment `check_untyped_defs` yet
modified: tox.ini
* Change KexDH.__ed25519_pubkey's default type
It was initialized with 0 (int), and later it gets set with bytes.
Now, it gets initialized with None, and thus gets the type
Optional[bytes].
Optional means None or the named type.
modified: ssh-audit.py
* Fix whitespace
modified: tox.ini
* Add type annotation for main function
modified: ssh-audit.py
* Add type annotation for KexDH.set_params
modified: ssh-audit.py
* Add type annotation for Kex.set_rsa_key_size
modified: ssh-audit.py
* Add type annotation for Kex.rsa_key_sizes
modified: ssh-audit.py
* Add type annotation for Kex.set_dh_modulus_size
modified: ssh-audit.py
* Add type annotation to Kex.dh_modulus_sizes
modified: ssh-audit.py
* Add type annotation for Kex.set_host_key
modified: ssh-audit.py
* Add type annotation for Kex.host_keys
modified: ssh-audit.py
* Add type annotation for HostKeyTest.run
modified: ssh-audit.py
* Add static typing to HostKeyTest.perform_test
This revealed a small oversight in the guard protecting the call to
perform_test.
modified: ssh-audit.py
* Add type annotation for GexTest.reconnect
modified: ssh-audit.py
* Add type annotation for GexTest.run
modified: ssh-audit.py
* Add type annotation for ReadBuf.reset
modified: ssh-audit.py
* Add type annoation for WriteBuf.reset
modified: ssh-audit.py
* Add type annotation to Socket.listen_and_accept
modified: ssh-audit.py
* Move comment for is_connected into docstring.
modified: ssh-audit.py
* Add type annotation for Socket.is_connected
modified: ssh-audit.py
* Add type annotation for Socket.close
modified: ssh-audit.py
* Do not commit breakpoint
modified: ssh-audit.py
* Add annotations for KexDH key size handling
modified: ssh-audit.py
* Add type annotation for KexDH.get_ca_size
modified: ssh-audit.py
* Add type annotation to output_info
modified: ssh-audit.py
* Add type annotation for KexDH.__get_bytes
modified: ssh-audit.py
* Add type annotation to KexGroup14.__init__
modified: ssh-audit.py
* Add type annotation for KexGroup14_SHA256.__init__
modified: ssh-audit.py
* Add type annotation for KexGroup16_SHA512.__init__
modified: ssh-audit.py
* Add type annotation for KexGroup18_SHA512.__init__
modified: ssh-audit.py
* Add type annotation for KexCurve25519_SHA256.__init__
modified: ssh-audit.py
* Add type annotation for KexNISTP256.__init__
modified: ssh-audit.py
* Add type annotations to several init methods
modified: ssh-audit.py
* Add type annotataion for KexGroupExchange.send_init_gex
modified: ssh-audit.py
* Add type annotation for KexGroupExchange.__init__
modified: ssh-audit.py
* Add type annotation to KexCurve25519_SHA256.send_init
modified: ssh-audit.py
* Add type annotation for KexNISTP256.sent_init
modified: ssh-audit.py
* Add type annotation for KexNISTP384.send_init
modified: ssh-audit.py
* Add type annotation for KexNISTP521.send_init
modified: ssh-audit.py
* Add type annotation for KexGroupExchange.send_init
modified: ssh-audit.py
* Add type annotation to KexDH.get_dh_modulus_size
modified: ssh-audit.py
* Delete unused variables KexDH.__f and f_len
__f was initialized as int, then assigned to bytes, but never used.
f_len assigned an int, but not all.
modified: ssh-audit.py
* Delete unused variables KexDH.__h_sig and h_sig_len
modified: ssh-audit.py
* Add type annotation for KexDH.__hostkey_type
modified: ssh-audit.py
* Convert type comments to annotations
Notes:
- variable annotations are only possible for Python 3.6 and upwards
- class names as a result of a function have to be quoted
cf https://www.python.org/dev/peps/pep-0563/#enabling-the-future-behavior-in-python-3-7
This is ongoing work for #32
modified: ssh-audit.py
* Do not use variable annotation
... as this feature works only for Python 3.6 and above only.
modified: ssh-audit.py
* Remove obsolete option `strict_boolean`
It was removed back in 2018:
https://github.com/python/mypy/pull/5740/files
modified: tox.ini
* Deactivate all mypy options
This still leaves 47 errors, which should be fixed one by one.
modified: tox.ini
* Fix signature for `output`
`client_host` is either a str or None.
modified: ssh-audit.py
* Fix return value for `output_recommendations`
It is a bool, not None.
modified: ssh-audit.py
* Fix type comment for `output_fingerprints`
modified: ssh-audit.py
* Fix type comment for `output_security`
modified: ssh-audit.py
* Fix type comment for `output_security_sub`
modified: ssh-audit.py
* Fix type comment for `output_compatibility`
modified: ssh-audit.py
* Fix type comment for Socket.__init__
modified: ssh-audit.py
* Simplify check for regex result
... which also fixes four typing errors.
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing errors by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix typing error by simplifying regex result check
modified: ssh-audit.py
* Fix type comment for OutputBuffer.flush
modified: ssh-audit.py
* Fix type comments for `output_algorithms`
modified: ssh-audit.py
* Fix type comment for `output_algorithm`
modified: ssh-audit.py
* Fix type comment for KexGroup14's init method
modified: ssh-audit.py
* Fix type comment for KexDH's send_init
modified: ssh-audit.py
* Fix type comment for KexDH's init method
modified: ssh-audit.py
* Add explicit return value of None
Now this is odd. Python has an implicit return value of None for
`return`, but mypy does not infer that.
modified: ssh-audit.py
* Fix type error for unknown_algorithms
modified: ssh-audit.py
* Add type comment for Socket.__sock_map
modified: ssh-audit.py
* Create type comment for Kex.__host_keys
modified: ssh-audit.py
* Create type comment for Kex.__dh_modulus_sizes
modified: ssh-audit.py
* Add type comment for Kex.__rsa_key_sizes
modified: ssh-audit.py
* Fix type eror by adding type comment to temp variable
modified: ssh-audit.py
* Fix type comments for Auditconf.__setattr__
modified: ssh-audit.py
* Fix type error by simplifying branch logic
modified: ssh-audit.py
* Do not skip type checks any more
Without additional strict options, there are zero type errors (down from
47).
modified: tox.ini
* Annotate variables before tuple unpacking
modified: ssh-audit.py
* Annotate variables before unpacking
modified: ssh-audit.py
* Fix flake8 issues
modified: ssh-audit.py
* Remove `native text` converter
This was only necessary with Python 2. After Python 2 removal, both
functions `to_ntext` and `to_utext` exactly did the same.
modified: ssh-audit.py
modified: test/test_utils.py
* Rename `to_utext` to `to_text`
... as in Python 3 there is only text (and bytes).
modified: ssh-audit.py
modified: test/test_utils.py
* Remove mypy job for Python 2
modified: tox.ini
* Remove Python 2 compatibility import
modified: ssh-audit.py
* Remove compatibility import for BytesIO and StringIO
This is no longer necessary, as support for Python 2 was dropped.
modified: ssh-audit.py
* Remove `text-type` compatibility layer
... as support for Python 2 was dropped already.
modified: ssh-audit.py
* Remove `binary-type` compatibility layer
... as support for Python 2 was dropped already.
modified: ssh-audit.py
* Remove try-except block for typing
... as since Python 3.5 it is included in the standard library.
modified: ssh-audit.py
* Move typing import to top of module
modified: ssh-audit.py
* Remove obsolete encoding declaration
modified: ssh-audit.py
* Apply pyupgrade on ssh-audit.py
pyupgrade is a tool which updates Python code to modern syntax
modified: ssh-audit.py
* Remove Python 2 compatibility from conftest.py
modified: test/conftest.py
* Remove Python 2 compatibility from test_auditconf.py
modified: test/test_auditconf.py
* Remove Python 2 compatibility from test_banner.py
modified: test/test_banner.py
* Remove Python 2 compatibility from test_buffer.py
modified: test/test_buffer.py
* Remove Python 2 compatibility from test_errors.py
modified: test/test_errors.py
* Remove Python 2 compatibility from test_output.py
modified: test/test_output.py
* Remove Python 2 compatibility from test_resolve.py
modified: test/test_resolve.py
* Remove Python 2 compatibility from test_socket.py
modified: test/test_socket.py
* Remove Python 2 compatibility from test_software.py
modified: test/test_software.py
* Remove Python 2 compatibility from test_ssh_algorithm.py
modified: test/test_ssh_algorithm.py
* Remove Python 2 compatibility from test_ssh1.py
modified: test/test_ssh1.py
* Remove Python 2 compatibility from test_ssh2.py
modified: test/test_ssh2.py
* Remove Python 2 compatibility and Py2 only tests
... from test_utils.py.
modified: test/test_utils.py
* Remove Python 2 compatibility from test_version_compare.py
modified: test/test_version_compare.py
* Remove Python 2 job from appveyor config
This was done blindly, as it is unclear whether appveyor runs at all.
modified: .appveyor.yml