Stem

Latest version: v1.8.2

Safety actively analyzes 627540 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

1.8

---------------------------------

`Stem 1.8 <http://blog.atagar.com/stem-release-1-8/>`_ is the final release in Stem’s 1.x series and with it `Python 2.x support <https://www.python.org/doc/sunset-python-2/>`_. Over a year in the making, this introduces `CollecTor <api/descriptor/collector.html>`_, `bandwidth metric <api/descriptor/bandwidth_file.html>`_, and `HSv3 descriptor support <api/descriptor/hidden_service.html#stem.descriptor.hidden_service.HiddenServiceDescriptorV3>`_.

* **Controller**

* Added :func:`~stem.control.Controller.get_start_time` method to the :class:`~stem.control.Controller`
* Added :func:`~stem.control.Controller.get_uptime` method to the :class:`~stem.control.Controller`
* Controller events could fail to be delivered in a timely fashion (:ticket:`archive-27173`)
* Adjusted :func:`~stem.control.Controller.get_microdescriptors` fallback to also use '.new' cache files (:ticket:`archive-28508`)
* ExitPolicies could raise TypeError when read concurrently (:ticket:`archive-29899`)
* Moved the *arrived_at* attribute from :class:`~stem.response.event.Event` to :class:`~stem.response.__init__.ControlMessage`
* **STALE_DESC** :data:`~stem.Flag` (:spec:`d14164d`)
* **DORMANT** and **ACTIVE** :data:`~stem.Signal` (:spec:`4421149`)
* **QUERY_RATE_LIMITED** :data:`~stem.HSDescReason` (:spec:`bd80679`)
* **EXTOR** and **HTTPTUNNEL** :data:`~stem.control.Listener`

* **Descriptors**

* Added the `stem.descriptor.collector <api/descriptor/collector.html>`_ module (:ticket:`archive-17979`)
* Added `v3 hidden service descriptor support <api/descriptor/hidden_service.html>`_ (:ticket:`archive-31369`)
* `Bandwidth file support <api/descriptor/bandwidth_file.html>`_ (:ticket:`archive-29056`)
* `stem.descriptor.remote <api/descriptor/remote.html>`_ methods now raise :class:`stem.DownloadFailed`
* Check Ed25519 validity though the cryptography module rather than PyNaCl (:ticket:`archive-22022`)
* Download compressed descriptors by default (:ticket:`archive-29186`)
* Added :class:`~stem.descriptor.Compression` class
* Added :func:`stem.descriptor.remote.get_microdescriptors`
* Added :func:`stem.descriptor.remote.get_bandwidth_file` (:ticket:`archive-26902`)
* Added :class:`~stem.descriptor.networkstatus.DetachedSignature` parsing (:ticket:`archive-28495`)
* Added :func:`~stem.descriptor.__init__.Descriptor.from_str` method (:ticket:`archive-28450`)
* Added :func:`~stem.descriptor.__init__.Descriptor.type_annotation` method (:ticket:`archive-28397`)
* Added :func:`~stem.descriptor.networkstatus.NetworkStatusDocument.digest` method (:ticket:`archive-28398`)
* Added the **hash_type** and **encoding** arguments to `ServerDescriptor <api/descriptor/server_descriptor.htmlstem.descriptor.server_descriptor.ServerDescriptor.digest>`_ and `ExtraInfo's <api/descriptor/extrainfo_descriptor.htmlstem.descriptor.extrainfo_descriptor.ExtraInfoDescriptor.digest>`_ digest methods (:ticket:`archive-28398`)
* Added the network status vote's new bandwidth_file_digest attribute (:spec:`1b686ef`)
* Added :func:`~stem.descriptor.networkstatus.NetworkStatusDocumentV3.is_valid` and :func:`~stem.descriptor.networkstatus.NetworkStatusDocumentV3.is_fresh` methods (:ticket:`archive-28448`)
* Replaced :func:`~stem.descriptor.router_status_entry.RouterStatusEntryMicroV3` hex encoded **digest** attribute with a base64 encoded **microdescriptor_digest**
* Replaced the **digest** attribute of :class:`~stem.descriptor.microdescriptor.Microdescriptor` with a method by the same name (:ticket:`archive-28398`)
* Default the **version_flavor** attribute of :class:`~stem.descriptor.networkstatus.NetworkStatusDocumentV3` to 'ns' (:spec:`d97f8d9`)
* DescriptorDownloader crashed if **use_mirrors** is set (:ticket:`archive-28393`)
* Renamed stem.descriptor.hidden_service_descriptor to stem.descriptor.hidden_service
* Don't download from Serge, a bridge authority that frequently timeout
* Updated dizum authority's address (:ticket:`archive-31406`)

* **Client**

* Sockets with ORPorts errored if responses exceeded a hardcoded buffer size (:ticket:`archive-28961`)

* **Utilities**

* :func:`~stem.util.tor_tools.is_valid_hidden_service_address` now provides *true* if a v3 hidden servie address
* Fixed 'invalid escape sequence' python 3.6 warnings (:ticket:`archive-27270`)

* **Website**

* `Migrated to GitHub's issue tracker <https://github.com/torproject/stem/>`_
* Added NetBSD to our `download page <download.html>`_
* Describe `advanced listener usage <tutorials/tortoise_and_the_hare.htmladvanced-listeners>`_
* Exemplify `manual SAFECOOKIE authentication <faq.htmli-m-using-safe-cookie-authentication>`_
* `Update PyPI links <https://packaging.python.org/guides/migrating-to-pypi-org/>`_ (:ticket:`archive-30137`)

* **Interpreter**

* tor-prompt is now ~34% faster when used to non-interactively invoke commands

.. _version_1.7:

1.7

improments. Most notably this adds the ability to `download descriptors through
ORPorts
<tutorials/mirror_mirror_on_the_wall.htmlwhere-can-i-get-the-current-descriptors>`_
and the `stem.directory module <api/directory.html>`_.

* **Controller**

* Listener exceptions and malformed events no longer break further event processing (:ticket:`archive-27053`)
* Documented v3 hidden service support (:ticket:`archive-25124`, :spec:`6bd0a69`)
* Added the stem.control.MALFORMED_EVENTS event listener constant
* Added support for limiting the maximum number of streams for :func:`~stem.control.Controller.create_ephemeral_hidden_service` (:spec:`2fcb1c2`)
* Added a timeout argument to :class:`~stem.control.Controller` methods that could await a response (:ticket:`archive-26056`)
* Added a close_output argument to :class:`~stem.process.launch_tor`
* :func:`stem.connection.connect` crashed if its port argument was a string
* More reliable ExitPolicy resolution (:ticket:`archive-25739`)
* Fixed cache invalidation when another contorller calls SETCONF (:ticket:`archive-25821`)
* :func:`~stem.control.COntroller.create_hidden_service` failed when creating services with v2 options (:ticket:`archive-27446`)
* :func:`~stem.control.Controller.get_info` commonly raised :class:`stem.ProtocolError` when it should provide a :class:`stem.OperationFailed`
* :func:`~stem.control.Controller.get_microdescriptors` now reads microdescriptors from the control port rather than disk when available (:spec:`b5396d5`)
* Added the delivered_read, delivered_written, overhead_read, and overhead_written attributes to :class:`~stem.response.events.CircuitBandwidthEvent` (:spec:`fbb38ec`)
* The *config* attribute of :class:`~stem.response.events.ConfChangedEvent` couldn't represent tor configuration options with multiple values. It has been replaced with new *changed* and *unset* attributes.
* Replaced socket's :func:`~stem.socket.ControlPort.get_address`, :func:`~stem.socket.ControlPort.get_port`, and :func:`~stem.socket.ControlSocketFile.get_socket_path` with attributes
* :class:`~stem.response.ControlMessage` is now comparable and hashable
* Removed the 'raw' argument from :func:`~stem.socket.ControlSocket.send`

* **Descriptors**

* `stem.descriptor.remote <api/descriptor/remote.html>`_ can now download from relay ORPorts
* Zstd and lzma compression support (:spec:`1cb56af`)
* Moved the Directory classes into their own `stem.directory <api/directory.html>`_ module
* Added :func:`~stem.descriptor.remote.Directory.from_cache` and :func:`~stem.descriptor.remote.Directory.from_remote` to the :class:`~stem.descriptor.remote.DirectoryAuthority` subclass
* `Tor rearranged its files <https://lists.torproject.org/pipermail/tor-dev/2018-July/013287.html>`_, adjusted :func:`stem.descriptor.remote.Directory.from_remote` and :func:`stem.manual.Manual.from_remote` to account for this
* `Fallback directory v2 support <https://lists.torproject.org/pipermail/tor-dev/2017-December/012721.html>`_, which adds *nickname* and *extrainfo*
* Added the *orport_v6* attribute to the :class:`~stem.directory.Authority` class
* Added server descriptor's new is_hidden_service_dir attribute
* Added the network status vote's new bandwidth_file_headers attribute (:spec:`84591df`)
* Added the microdescriptor router status entry's new or_addresses attribute (:ticket:`archive-26405`, :spec:`fdc8f3e`)
* Don't retry downloading descriptors when we've timed out
* Don't download from tor26, an authority that frequently timeout
* Replaced Bifroest bridge authority with Serge (:ticket:`archive-26771`)
* `stem.descriptor.remote <api/descriptor/remote.html>`_ now consistently defaults **fall_back_to_authority** to false
* Deprecated `stem.descriptor.export <api/descriptor/export.html>`_. If you use it please `let us know <https://www.atagar.com/contact/>`_.
* Added :func:`~stem.descriptor.remote.their_server_descriptor`
* Added the reply_headers attribute to :class:`~stem.descriptor.remote.Query`
* Supplying a User-Agent when downloading descriptors
* Reduced maximum descriptors fetched by the remote module to match tor's new limit (:ticket:`archive-24743`)
* Consensus **shared_randomness_*_reveal_count** attributes undocumented, and unavailable if retrieved before their corresponding shared_randomness_*_value attribute (:ticket:`archive-25046`)
* Allow 'proto' line to have blank values (:spec:`a8455f4`)

* **Utilities**

* Fixed PyPy compatibility (:ticket:`archive-26207`)
* Python 3.6+ syntax error if test_tools.py imported (:ticket:`archive-26739`)
* Connection information from proc limited to 10,000 results
* Include attribute types in most equality checks and hashes
* Cache hash values of immutable classes
* More performant string concatenation `via bytearrays <https://docs.python.org/3/faq/programming.html#what-is-the-most-efficient-way-to-concatenate-many-strings-together>`_
* Functions using lru_cache could fail with a KeyError on Python 3.5 (:ticket:`archive-26412`)

* **Website**

* Added `terminal styling <tutorials/east_of_the_sun.htmlterminal-styling>`_ to our utilities tutorial
* Added `multiprocessing <tutorials/east_of_the_sun.htmlmultiprocessing>`_ to our utilities tutorial
* Added a `descriptor download example <tutorials/examples/download_descriptor.html>`_
* Added a `relay connection summary example <tutorials/examples/relay_connections.html>`_

* **Version 1.7.1** (December 26th, 2018) - :func:`~stem.process.launch_tor`
compatibility with an upcoming log format change (:ticket:`archive-28731`)

.. _version_1.6:

1.6

--------------------------------

Year long accumulation of fixes and improvements in support of the `Nyx 2.0 release <http://blog.atagar.com/nyx-release-2-0/>`_.

* **Controller**

* :func:`~stem.process.launch_tor` raised a ValueError if invoked when outside the main thread
* Failure to authenticate could raise an improper response or hang (:ticket:`archive-22679`)
* Renamed :class:`~stem.response.events.ConnectionBandwidthEvent` type attribute to conn_type to avoid conflict with parent class (:ticket:`archive-21774`)
* Added 'force' argument to :func:`~stem.control.Controller.save_conf` (:spec:`5c82d5e`)
* Added the QUERY_NO_HSDIR :data:`~stem.HSDescReason` and recognizing unknown HSDir results (:spec:`1412d79`)
* Added the GUARD_WAIT :data:`~stem.CircStatus` (:spec:`6446210`)
* Unable to use cookie auth when path includes wide characters (chinese, japanese, etc)
* Tor change caused :func:`~stem.control.Controller.list_ephemeral_hidden_services` to provide empty strings if unset (:ticket:`archive-21329`)
* Better error message when :func:`~stem.control.Controller.set_conf` fails due to an option being immutable
* :func:`~stem.control.Controller.get_ports` didn't provide ports for many representations of localhost (:ticket:`archive-24085`)
* :func:`~stem.control.Controller.is_geoip_unavailable` now determines if database is available right away
* Added the time attribute to :class:`~stem.response.events.StreamBwEvent` and :class:`~stem.response.events.CircuitBandwidthEvent` (:spec:`00b9daf`)
* Added the consensus_content attribute to :class:`~stem.response.events.NewConsensusEvent` and deprecated its 'desc'
* Deprecated :func:`~stem.control.Controller.is_geoip_unavailable`, this is now available via getinfo instead (:ticket:`archive-23237`, :spec:`dc973f8`)
* Deprecated :class:`~stem.respose.events.AuthDirNewDescEvent` (:ticket:`archive-22377`, :spec:`6e887ba`)
* Caching manual information as sqlite rather than stem.util.conf, making :func:`stem.manual.Manual.from_cache` about ~8x faster
* Added :func:`~stem.manual.database` to get a cursor for the manual cache
* Failed to parse torrcs without a port on ipv6 exit policy entries
* Resilient to 'Tor' prefix in 'GETINFO version' result (:spec:`c5ff1b1`)
* Added a **all_extra** parameter to :class:`stem.version.Version` and support for multiple parenthetical entries (:ticket:`archive-22110`, :spec:`b50917d`)
* Setting 'UseMicrodescriptors 1' in your torrc caused :func:`~stem.control.Controller.get_network_statuses` to error (:ticket:`archive-24110`)
* Closing controller connection faster when under heavy event load
* Better messaging when unable to connect to tor on FreeBSD
* More succinct trace level logging

* **Descriptors**

* Supporting `descriptor creation <tutorials/mirror_mirror_on_the_wall.htmlcan-i-create-descriptors>`_ (:ticket:`archive-10227`)
* Support and validation for `ed25519 certificates <api/descriptor/certificate.html>`_ (`spec <https://gitweb.torproject.org/torspec.git/tree/cert-spec.txt>`_, :ticket:`archive-21558`)
* Added :func:`~stem.descriptor.networkstatus.NetworkStatusDocumentV3.validate_signatures` to check our key certificate signatures (:ticket:`archive-11045`)
* Moved from the deprecated `pycrypto <https://www.dlitz.net/software/pycrypto/>`_ module to `cryptography <https://pypi.org/project/cryptography/>`_ for validating signatures (:ticket:`archive-21086`)
* Sped descriptor reading by ~25% by deferring defaulting when validating
* Added server descriptor's new extra_info_sha256_digest attribute (:spec:`0f03581`)
* Added server descriptor's new protocol attribute (:spec:`eb4fb3c`)
* Added server descriptor's new bridge_distribution attribute (:ticket:`archive-21177`)
* Added extrainfo descriptor's new padding_counts attributes (:spec:`0803997`)
* Shared randomness properties weren't being read in votes (:ticket:`archive-21102`)
* Added bastet as a new authority (:ticket:`archive-23912`)
* Updated longclaw authority's address (:ticket:`archive-23592`)

* **Utilities**

* Support connection resolution on OpenBSD using fstat (:ticket:`archive-13807`)
* Added :func:`~stem.util.system.size_of`
* Added :func:`~stem.util.log.is_tracing`
* Added timeout argument to :func:`~stem.util.system.call`
* Added cwd argument to :func:`~stem.util.system.call`
* Added round argument to :func:`~stem.util.str_tools.size_label`
* Added :class:`~stem.util.test_tools.TimedTestRunner` and :func:`~stem.util.test_tools.test_runtimes`
* Supporting pid arguments in :func:`~stem.util.system.is_running`
* Made connection resolution via proc about 5x faster
* Normalized :func:`~stem.util.term.format` to return unicode
* Don't load vim swap files as configurations

* **Interpreter**

* Added a `'--run [command or path]' argument <tutorials/down_the_rabbit_hole.htmlrunning-individual-commands>`_ to invoke specific commands (:ticket:`archive-21541`)
* Allowing interpreter to continue after tor shuts down (:ticket:`archive-22374`)
* Interpreter buffered an unbounded number of events, leaking memory over time

* **Website**

* Source code served by '[source]' links perpetually stale (:ticket:`archive-19521`)

.. _version_1.5:

1.5

accumulation of seventeen months of improvements including dramatically
improved python 3.x performance, `tor manual information <api/manual.html>`_,
and much more.

* **Controller**

* Dramatic, 300x performance improvement for reading from the control port with python 3
* Added `stem.manual <api/manual.html>`_, which provides information available about Tor from `its manual <https://www.torproject.org/docs/tor-manual.html.en>`_ (:ticket:`archive-8251`)
* :func:`~stem.connection.connect` and :func:`~stem.control.Controller.from_port` now connect to both port 9051 (relay's default) and 9151 (Tor Browser's default) (:ticket:`archive-16075`)
* :class:`~stem.exit_policy.ExitPolicy` support for *accept6/reject6* and *\*4/6* wildcards (:ticket:`archive-16053`)
* Added `support for NETWORK_LIVENESS events <api/response.htmlstem.response.events.NetworkLivenessEvent>`_ (:spec:`44aac63`)
* Added support for basic authentication to :func:`~stem.control.Controller.create_ephemeral_hidden_service` (:spec:`c2865d9`)
* Added support for non-anonymous services to :func:`~stem.control.Controller.create_ephemeral_hidden_service` (:spec:`b8fe774`)
* Added :func:`~stem.control.event_description` for getting human-friendly descriptions of tor events (:ticket:`archive-19061`)
* Added :func:`~stem.control.Controller.reconnect` to the :class:`~stem.control.Controller`
* Added :func:`~stem.control.Controller.is_set` to the :class:`~stem.control.Controller`
* Added :func:`~stem.control.Controller.is_user_traffic_allowed` to the :class:`~stem.control.Controller`
* Added the replica attribute to :class:`~stem.response.events.HSDescEvent` (:spec:`4989e73`)
* Added the NoEdConsensus :data:`~stem.Flag` (:spec:`dc99160`)
* Recognize listeners with IPv6 addresses in :func:`~stem.control.Controller.get_listeners`
* :func:`~stem.process.launch_tor` could leave a lingering process during an unexpected exception (:ticket:`archive-17946`)
* IPv6 addresses could trigger errors in :func:`~stem.control.Controller.get_listeners`, :class:`~stem.response.events.ORConnEvent`, and quite a few other things (:ticket:`archive-16174`)
* Don't obscure stacktraces, most notably :class:`~stem.control.Controller` getter methods with default values
* Classes with custom equality checks didn't provide a corresponding inequality method

* **Descriptors**

* `Shorthand functions for stem.descriptor.remote <api/descriptor/remote.htmlstem.descriptor.remote.get_instance>`_
* Added `fallback directory information <api/descriptor/remote.htmlstem.descriptor.remote.FallbackDirectory>`_.
* Support for ed25519 descriptor fields (:spec:`5a79d67`)
* Support downloading microdescriptor consensus with :func:~stem.descriptor.remote.DescriptorDownloader.get_consensus` (:spec`e788b8f`)
* Added consensus and vote's new shared randomness attributes (:spec:`9949f64`)
* Added server descriptor's new allow_tunneled_dir_requests attribute (:spec:`8bc30d6`)
* Server descriptor validation fails with 'extra-info-digest line had an invalid value' from additions in proposal 228 (:ticket:`archive-16227`)
* :class:`~stem.descriptor.server_descriptor.BridgeDescriptor` now has 'ntor_onion_key' like its unsanitized counterparts
* Replaced the :class:`~stem.descriptor.microdescriptor.Microdescriptor` identifier and identifier_type attributes with an identifiers hash since it can now appear multiple times (:spec:`09ff9e2`)
* Unable to read descriptors from data directories on Windows due to their CRLF newlines (:ticket:`archive-17051`)
* TypeError under python3 when using 'use_mirrors = True' (:ticket:`archive-17083`)
* Deprecated hidden service descriptor's *introduction_points_auth* field, which was never implemented in tor (:ticket:`archive-15190`, :spec:`9c218f9`)
* Deprecated :func:`~stem.descriptor.remote.DescriptorDownloader.get_microdescriptors` as it was never implemented in tor (:ticket:`archive-9271`)
* :func:`~stem.control.Controller.get_hidden_service_descriptor` errored when provided a *servers* argument (:ticket:`archive-18401`)
* Fixed parsing of server descriptor's *allow-single-hop-exits* and *caches-extra-info* lines
* Bracketed IPv6 addresses were mistreated as being invalid content
* Better validation for non-ascii descriptor content
* Updated dannenberg's v3ident (:ticket:`archive-17906`)
* Removed urras as a directory authority (:ticket:`archive-19271`)

* **Utilities**

* IPv6 support in :func:`~stem.util.connection.get_connections` when resolving with proc, netstat, lsof, or ss (:ticket:`archive-18079`)
* The 'ss' connection resolver didn't work on Gentoo (:ticket:`archive-18079`)
* Recognize IPv4-mapped IPv6 addresses in our utils (:ticket:`archive-18079`)
* Allow :func:`stem.util.conf.Config.set` to remove values when provided with a **None** value
* Support prefix and suffix issue strings in :func:`~stem.util.test_tools.pyflakes_issues`
* Additional information when :func:`~stem.util.system.call` fails through a :class:`~stem.util.system.CallError`
* Added **stem.util.system.SYSTEM_CALL_TIME** with the total time spent on system calls
* Added an **is_ipv6** value to :class:`~stem.util.connection.Connection` instances
* Added LINES attribute to :data:`~stem.util.term.Attr`
* Added :func:`~stem.util.system.pids_by_user`
* Added :func:`~stem.util.connection.address_to_int`
* Added :func:`~stem.util.term.encoding`
* Added :func:`~stem.util.__init__.datetime_to_unix`

* **Interpreter**

* Added a '--tor [path]' argument to specify the tor binary to run.

* **Website**

* Example for `custom path selection for circuits <tutorials/to_russia_with_love.htmlcustom-path-selection>`_ (:ticket:`archive-8728`)
* Download link for tutorial examples (:ticket:`archive-10411`)

.. _version_1.4:

1.4

----------------------------

`Stem's 1.4 release <https://blog.torproject.org/blog/stem-release-14>`_ brings
with it new hidden service capabilities. Most notably, `ephemeral hidden
services <tutorials/over_the_river.htmlephemeral-hidden-services>`_ and the
ability to `read hidden service descriptors
<tutorials/over_the_river.htmlhidden-service-descriptors>`_. This release also
changes descriptor validation to now be opt-in rather than opt-out. When
unvalidated content is lazy-loaded, `greatly improving our performance
<https://lists.torproject.org/pipermail/tor-dev/2015-January/008211.html>`_.

And last, Stem also now runs directly under both python2 and python3 without a
2to3 conversion (:ticket:`archive-14075`)!

* **Controller**

* Added :class:`~stem.control.Controller` methods for a new style of hidden services that don't touch disk: :func:`~stem.control.Controller.list_ephemeral_hidden_services`, :func:`~stem.control.Controller.create_ephemeral_hidden_service`, and :func:`~stem.control.Controller.remove_ephemeral_hidden_service` (:spec:`f5ff369`)
* Added :func:`~stem.control.Controller.get_hidden_service_descriptor` and `support for HS_DESC_CONTENT events <api/response.htmlstem.response.events.HSDescContentEvent>`_ (:ticket:`archive-14847`, :spec:`aaf2434`)
* :func:`~stem.process.launch_tor_with_config` avoids writing a temporary torrc to disk if able (:ticket:`archive-13865`)
* :class:`~stem.response.events.CircuitEvent` support for the new SOCKS_USERNAME and SOCKS_PASSWORD arguments (:ticket:`archive-14555`, :spec:`2975974`)
* The 'strict' argument of :func:`~stem.exit_policy.ExitPolicy.can_exit_to` didn't behave as documented (:ticket:`archive-14314`)
* Threads spawned for status change listeners were never joined on, potentially causing noise during interpreter shutdown
* Added support for specifying the authentication type and client names in :func:`~stem.control.Controller.create_hidden_service` (:ticket:`archive-14320`)

* **Descriptors**

* Lazy-loading descriptors, improving performance by 25-70% depending on what type it is (:ticket:`archive-14011`)
* Added `support for hidden service descriptors <api/descriptor/hidden_service.html>`_ (:ticket:`archive-15004`)
* When reading sanitised bridge descriptors (server or extrainfo), :func:`~stem.descriptor.__init__.parse_file` treated the whole file as a single descriptor
* The :class:`~stem.descriptor.networkstatus.DirectoryAuthority` 'fingerprint' attribute was actually its 'v3ident'
* Added consensus' new package attribute (:spec:`ab64534`)
* Added extra info' new hs_stats_end, hs_rend_cells, hs_rend_cells_attr, hs_dir_onions_seen, and hs_dir_onions_seen_attr attributes (:spec:`ddb630d`)
* Updating Faravahar's address (:ticket:`archive-14487`)

* **Utilities**

* Windows support for connection resolution (:ticket:`archive-14844`)
* :func:`stem.util.connection.port_usage` always returned None (:ticket:`archive-14046`)
* :func:`~stem.util.test_tools.stylistic_issues` and :func:`~stem.util.test_tools.pyflakes_issues` now provide namedtuples that also includes the line
* Added :func:`stem.util.system.tail`
* Proc connection resolution could fail on especially busy systems (:ticket:`archive-14048`)

* **Website**

* Added support and `instructions for tox <faq.htmlhow-do-i-test-compatibility-with-multiple-python-versions>`_ (:ticket:`archive-14091`)
* Added OSX to our `download page <download.html>`_ (:ticket:`archive-8588`)
* Updated our twitter example to work with the service's 1.1 API (:ticket:`archive-9003`)

* **Version 1.4.1** (May 18th, 2015) - fixed issue where descriptors couldn't
be unpickled (:ticket:`archive-16054`) and a parsing issue for router status entry
bandwidth lines (:ticket:`archive-16048`)

.. _version_1.3:

1.3

---------------------------------

With `Stem's 1.3 release <https://blog.torproject.org/blog/stem-release-13>`_
it's now much easier to `work with hidden services
<tutorials/over_the_river.html>`_, 40% faster to read decriptors, and includes
a myriad of other improvements. For a nice description of the changes this
brings see `Nathan Willis' LWN article <http://lwn.net/Articles/632914/>`_.

* **Controller**

* Added :class:`~stem.control.Controller` methods to more easily work with hidden service configurations: :func:`~stem.control.Controller.get_hidden_service_conf`, :func:`~stem.control.Controller.set_hidden_service_conf`, :func:`~stem.control.Controller.create_hidden_service`, and :func:`~stem.control.Controller.remove_hidden_service` (:ticket:`archive-12533`)
* Added :func:`~stem.control.Controller.get_accounting_stats` to the :class:`~stem.control.Controller`
* Added :func:`~stem.control.Controller.get_effective_rate` to the :class:`~stem.control.Controller`
* Added :func:`~stem.control.BaseController.connection_time` to the :class:`~stem.control.BaseController`
* Changed :func:`~stem.control.Controller.get_microdescriptor`, :func:`~stem.control.Controller.get_server_descriptor`, and :func:`~stem.control.Controller.get_network_status` to get our own descriptor if no fingerprint or nickname is provided.
* Added :class:`~stem.exit_policy.ExitPolicy` methods for more easily handling 'private' policies (the `default prefix <https://www.torproject.org/docs/tor-manual.html.en#ExitPolicyRejectPrivate>`_) and the defaultly appended suffix. This includes :func:`~stem.exit_policy.ExitPolicy.has_private`, :func:`~stem.exit_policy.ExitPolicy.strip_private`, :func:`~stem.exit_policy.ExitPolicy.has_default`, and :func:`~stem.exit_policy.ExitPolicy.strip_default` :class:`~stem.exit_policy.ExitPolicy` methods in addition to :func:`~stem.exit_policy.ExitPolicyRule.is_private` and :func:`~stem.exit_policy.ExitPolicyRule.is_default` for the :class:`~stem.exit_policy.ExitPolicyRule`. (:ticket:`archive-10107`)
* Added the reason attribute to :class:`~stem.response.events.HSDescEvent` (:spec:`7908c8d`)
* :func:`~stem.process.launch_tor_with_config` could cause a "Too many open files" OSError if called too many times (:ticket:`archive-13141`)
* The :func:`~stem.control.Controller.get_exit_policy` method errored if tor couldn't determine our external address
* The Controller's methods for retrieving descriptors could raise unexpected ValueErrors if tor didn't have any descriptors available
* Throwing a new :class:`~stem.DescriptorUnavailable` exception type when the :class:`~stem.control.Controller` can't provide the descriptor for a relay (:ticket:`archive-13879`)

* **Descriptors**

* Improved speed for parsing consensus documents by around 40% (:ticket:`archive-12859` and :ticket:`archive-13821`)
* Don't fail if consensus method 1 is not present, as it is no longer required (:spec:`fc8a6f0`)
* Include '\*.new' files when reading from a Tor data directory (:ticket:`archive-13756`)
* Updated the authorities we list, `replacing turtles with longclaw <https://lists.torproject.org/pipermail/tor-talk/2014-November/035650.html>`_ and `updating gabelmoo's address <https://lists.torproject.org/pipermail/tor-talk/2014-September/034898.html>`_
* Noting if authorities are also a bandwidth authority or not
* Microdescriptor validation issues could result in an AttributeError (:ticket:`archive-13904`)

* **Utilities**

* Added support for directories to :func:`stem.util.conf.Config.load`
* Changed :func:`stem.util.conf.uses_settings` to only provide a 'config' keyword arument if the decorated function would accept it
* Added :func:`stem.util.str_tools.crop`
* Added :func:`stem.util.proc.file_descriptors_used`
* Dropped the 'get_*' prefix from most function names. Old names will still work, but are a deprecated alias.

* **Interpreter**

* The /info command errored for relays without contact information

* **Website**

* Tutorial for `hidden services <tutorials/over_the_river.html>`_
* Example for `writing descriptors to disk and reading them back <tutorials/mirror_mirror_on_the_wall.htmlsaving-and-loading-descriptors>`_ (:ticket:`archive-13774`)
* Added Gentoo to our `download page <download.html>`_ and handful of testing revisions for that platform (:ticket:`archive-13904`)
* Tests for our tutorial examples (:ticket:`archive-11335`)
* Revised `GitWeb <https://gitweb.torproject.org/>`_ urls to work after its upgrade

.. _version_1.2:

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.