tahoe-lafs/setup.cfg
2022-11-30 13:20:41 -05:00

224 lines
7.7 KiB
INI

# https://setuptools.pypa.io/en/latest/userguide/declarative_config.html#declarative-config
[metadata]
name = tahoe-lafs
[options]
description = secure, decentralized, fault-tolerant file store
long_description = file: README.rst
author = the Tahoe-LAFS project
author_email = tahoe-dev@lists.tahoe-lafs.org
project_urls =
website=https://tahoe-lafs.org/
documentation=https://tahoe-lafs.readthedocs.org/
source=https://github.com/tahoe-lafs/tahoe-lafs
classifiers = file: CLASSIFIERS.txt
license_files = COPYING.GPL, COPYING.TGPPL.rst
# tell setuptools to find our package source files automatically
packages = find:
# find packages beneath the src directory
package_dir=
=src
include_package_data = True
# We support Python 3.7 or later. 3.11 is not supported yet.
python_requires = >=3.7, <3.11
install_requires =
# we don't need much out of setuptools but the version checking stuff
# needs pkg_resources and PEP 440 version specifiers.
setuptools >= 28.8.0
zfec >= 1.1.0
# zope.interface >= 3.6.0 is required for Twisted >= 12.1.0.
zope.interface >= 3.6.0
# * foolscap < 0.5.1 had a performance bug which spent O(N**2) CPU for
# transferring large mutable files of size N.
# * foolscap < 0.6 is incompatible with Twisted 10.2.0.
# * foolscap 0.6.1 quiets a DeprecationWarning.
# * foolscap < 0.6.3 is incompatible with Twisted 11.1.0 and newer.
# * foolscap 0.8.0 generates 2048-bit RSA-with-SHA-256 signatures,
# rather than 1024-bit RSA-with-MD5. This also allows us to work
# with a FIPS build of OpenSSL.
# * foolscap >= 0.12.3 provides tcp/tor/i2p connection handlers we need,
# and allocate_tcp_port
# * foolscap >= 0.12.5 has ConnectionInfo and ReconnectionInfo
# * foolscap >= 0.12.6 has an i2p.sam_endpoint() that takes kwargs
# * foolscap 0.13.2 drops i2p support completely
# * foolscap >= 21.7 is necessary for Python 3 with i2p support.
foolscap >= 21.7.0
# * cryptography 2.6 introduced some ed25519 APIs we rely on. Note that
# Twisted[conch] also depends on cryptography and Twisted[tls]
# transitively depends on cryptography. So it's anyone's guess what
# version of cryptography will *really* be installed.
cryptography >= 2.6
# * The SFTP frontend depends on Twisted 11.0.0 to fix the SSH server
# rekeying bug <https://twistedmatrix.com/trac/ticket/4395>
# * The SFTP frontend and manhole depend on the conch extra. However, we
# can't explicitly declare that without an undesirable dependency on gmpy,
# as explained in ticket #2740.
# * Due to a setuptools bug, we need to declare a dependency on the tls
# extra even though we only depend on it via foolscap.
# * Twisted >= 15.1.0 is the first version that provided the [tls] extra.
# * Twisted-16.1.0 fixes https://twistedmatrix.com/trac/ticket/8223,
# which otherwise causes test_system to fail (DirtyReactorError, due to
# leftover timers)
# * Twisted-16.4.0 introduces `python -m twisted.trial` which is needed
# for coverage testing
# * Twisted 16.6.0 drops the undesirable gmpy dependency from the conch
# extra, letting us use that extra instead of trying to duplicate its
# dependencies here. Twisted[conch] >18.7 introduces a dependency on
# bcrypt. It is nice to avoid that if the user ends up with an older
# version of Twisted. That's hard to express except by using the extra.
#
# * Twisted 18.4.0 adds `client` and `host` attributes to `Request` in the
# * initializer, needed by logic in our custom `Request` subclass.
#
# In a perfect world, Twisted[conch] would be a dependency of an sftp
# extra. However, pip fails to resolve the dependencies all
# dependencies when asked for Twisted[tls] *and* Twisted[conch].
# Specifically, Twisted[conch] (as the later requirement) is ignored.
# If there were an Tahoe-LAFS sftp extra that dependended on
# Twisted[conch] and install_requires only included Twisted[tls] then
# `pip install tahoe-lafs[sftp]` would not install requirements
# specified by Twisted[conch]. Since this would be the *whole point* of
# an sftp extra in Tahoe-LAFS, there is no point in having one.
# * Twisted 19.10 introduces Site.getContentFile which we use to get
# temporary upload files placed into a per-node temporary directory.
Twisted[tls,conch] >= 19.10.0
PyYAML >= 3.11
six >= 1.10.0
# for 'tahoe invite' and 'tahoe join'
magic-wormhole >= 0.10.2
# A new enough version to support custom JSON encoders.
eliot >= 1.13.0
# Pyrsistent 0.17.0 (which we use by way of Eliot) has dropped
# Python 2 entirely; stick to the version known to work for us.
pyrsistent
# A great way to define types of values.
attrs >= 18.2.0
# WebSocket library for twisted and asyncio
autobahn >= 19.5.2
# Support for Python 3 transition
future >= 0.18.2
# Discover local network configuration
netifaces
# Utility code:
pyutil >= 3.3.0
# Linux distribution detection:
distro >= 1.4.0
# For the RangeMap datastructure. Need 2.0.2 at least for bugfixes.
collections-extended >= 2.0.2
# Duplicate the Twisted pywin32 dependency here. See
# https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2392 for some
# discussion.
pywin32 != 226 ; sys_platform=="win32"
# HTTP server and client
klein
# 2.2.0 has a bug: https://github.com/pallets/werkzeug/issues/2465
werkzeug != 2.2.0
treq
cbor2
pycddl >= 0.2
# for pid-file support
psutil
filelock
[options.packages.find]
# inform the setuptools source discovery logic to start in this directory
where = src
[options.package_data]
allmydata.web =
*.xhtml
static/*.js
static/*.png
static/*.css
static/img/*.png
static/css/*.css
[options.extras_require]
build =
dulwich
gpg
test =
flake8
# On Python 3.7, importlib_metadata v5 breaks flake8.
# https://github.com/python/importlib_metadata/issues/407
importlib_metadata < 5; python_version < "3.8"
# Pin a specific pyflakes so we don't have different folks
# disagreeing on what is or is not a lint issue. We can bump
# this version from time to time, but we will do it
# intentionally.
pyflakes == 2.2.0
coverage ~= 5.0
mock
tox
pytest
pytest-twisted
hypothesis >= 3.6.1
towncrier
testtools
fixtures
beautifulsoup4
html5lib
junitxml
tenacity
# Pin old version until
# https://github.com/paramiko/paramiko/issues/1961 is fixed.
paramiko < 2.9
pytest-timeout
# Does our OpenMetrics endpoint adhere to the spec:
prometheus-client == 0.11.0
# Make sure the tor and i2p tests can run by duplicating the requirements
# for those extras here.
%(tor)s
%(i2p)s
tor =
# This is exactly what `foolscap[tor]` means but pip resolves the pair of
# dependencies "foolscap[i2p] foolscap[tor]" to "foolscap[i2p]" so we lose
# this if we don't declare it ourselves!
txtorcon >= 0.17.0
i2p =
# txi2p has Python 3 support in master branch, but it has not been
# released -- see https://github.com/str4d/txi2p/issues/10. We
# could use a fork for Python 3 until txi2p's maintainers are back
# in action. For Python 2, we could continue using the txi2p
# version about which no one has complained to us so far.
txi2p-tahoe >= 0.3.5
[options.entry_points]
console_scripts =
tahoe = allmydata.scripts.runner:run
[flake8]
# Enforce all pyflakes constraints, and also prohibit tabs for indentation.
# Reference:
# https://flake8.pycqa.org/en/latest/user/error-codes.html
# https://pycodestyle.pycqa.org/en/latest/intro.html#error-codes
select = F, W191