Mailpile icon indicating copy to clipboard operation
Mailpile copied to clipboard

Project dependencies may have API risk issues

Open PyDeps opened this issue 2 years ago • 1 comments

Hi, In Mailpile, inappropriate dependency versioning constraints can cause risks.

Below are the dependencies and version constraints that the project is using

appdirs*
setuptools>=11.3
cryptography>=1.3.4
lxml>=2.3.2
imgsize*
Jinja2*
markupsafe*
py3DNS*
PySocks*
pgpdump*
pillow*
pbr*
fasteners*
stem>=1.4
icalendar*

The version constraint == will introduce the risk of dependency conflicts because the scope of dependencies is too strict. The version constraint No Upper Bound and * will introduce the risk of the missing API Error because the latest version of the dependencies may remove some APIs.

After further analysis, in this project, The version constraint of dependency setuptools can be changed to >=51.3.0,<=54.1.1. The version constraint of dependency Jinja2 can be changed to >=2.7,<=3.1.2.

The above modification suggestions can reduce the dependency conflicts as much as possible, and introduce the latest version as much as possible without calling Error in the projects.

The invocation of the current project includes all the following methods.

The calling methods from the setuptools
distutils.spawn.find_executable
Command.__init__
Extension.__init__
The calling methods from the Jinja2
Extension.__init__
The calling methods from the all methods
score.add
smtp_do_or_die
self._session.config.stop_workers
self._options.iteritems
lines.pop.upper
self.__is_shut_down.clear
self.find_one_part_value
msg_ptr.mmbx.get_file_by_ptr.read
rv.upper
form.submit
get_shared_mailpile
self._load_cookies
self._overwrite_with
plugins.outgoing_email_crypto_transform
opt_obj.get
thr_keys.sort
ti.endswith
data.find
scope.split
key_errors.append
self.select
res.append
Message
Command._error
tcheck
self.register_css
self.variables_as_text
idx.keylines.set_attr
play_nice_with_threads
r.startswith
self._clean_domain
args.bb.parse_args.run
self.flag_cache.get
self.fd.write
self.CreateForward
HeaderPrintMUADetails
username.lower.split
mailbox.mbox.clear
random.sample
variables.append
processes.iteritems
value.replace.replace.strip
human_tags.join.lower
happy
flavor.self.flavor_properties.get.items
self._hint_days
MailPileUnittest.__init__
self.wake_up
self.buffered.startswith
ports.append
term.startswith
prints.add
func.__doc__.strip
_plugins.get_data_kw_extractors
history_vcl.value.split
protocols.values
self.index.MSG_TAGS.msg_info.split
langs.sort
ConfigRLock
self._do_search
composer.run
opt.lower
self.reset_event_discovery_state
os._exit
binary.upper
self._import
out.write
msg_id.split.split
headers.extend
self.mailbox.get_file_by_ptr
zlib.compress
t.get
gen.flatten
session.ui.html_variables.get
NotImplemented
pvars.update
columns.sort
fingerprint.lower
self._STATUS_ENCRYPTION.get
msg_thr_mid.split
BaseMailSource._mailbox_sort_key
self._conn.close
ephemeral_mid.rsplit
self.version_tuple
self.session.config.load_pickle
part.set_charset
self.is_editable_mailbox
adata.normalized
user_counts.get
config.tags.values
root.lower
SetLoggedIn
retrained.append
self._rescan_vcards
build.log.warning
config.vcards.find_vcards
result.append
self.display_name
self._report_option_error
Compose
words.append
self._sorted_msg_ptrs
os.mkdir
self.env.session.config.vcards.get_vcard
self._conn.response
be.buf.find
rcpts.get
self._defaults.keys
self._lookup
self._prune_completed
vcards.iteritems
tempfile.mkdtemp
name.self.scripts.replace
session.config.passphrases.is_set
self.JOBS.extend
self._maybe_gzip
HelpSplash
msg_data.split.split
self._STATUS_SIGNATURE.get
self._get_account
toc_id.self.get_file.read
save_error.__str__
OpenMailbox
parse_usermap
full_url.lower
self.flavor_properties.get
self._write_postamble
self._match
self.reset_rules_from_source
self.send_http_redirect
keylist.keys
os.path.realpath
_g
self.do_POST
pre_command.split
result.sort
self.session.config.tags.get
mbx.apply_tags.extend
key_id.found_keys.scores.update
sdata.append
self._background_save
path.display_basename
section.result.append
authors.get
find_message_id
self._lock.release
self.kid.poll
error_file.read
Completer
tick_func
config.event_log.events
k.lower
self.STATUSES.index
started_callback
term.rsplit
word.startswith
user_probably_asleep
base64.encodestring
ChecksummingStreamer._sha256_callback
self.log.debug
threading.Thread
json.dump
self._unpack
bytearray
config.filters.append
self.sys.plugins.keys
request.send_standard_headers
results.pop
BaseMailSource.quit
self._form_defaults
arg.raw_fp.startswith
self.GetOAuthURL
self.WORKERS.append
ps.communicate
framework.default_config
self._tag
self._shards.append
islice
head.check_output.strip.split
EncryptedDict.rdata_value
public_keys.iteritems
log
self.MSG_THREAD_MID.m_msg_info.split
self._mbox_cache.append
self._vcard_get
notify.keys
tok_info.user.OAuth2.XOAuth2Response.encode.replace
self._real_scan_one
self._write_headers
FixupForWith
gzipped.getvalue
self._failed
self.add_new_msg
self.GetOAuthConfig
password.params.int.params.int.params.int.salt.cryptography.hazmat.backends.default_backend.Scrypt.derive.encode
config.index.save_changes
j.g.i.j.g.len.range.j.j.g.join.replace
self._RECORD_BYTES.self._fd.read.decode
Update.command
self.RENAMED.keys
proto.service_domains.append
ops.append
dst.extend
gpc.bootstrap
_normalize_key
method.upper
session.results.index
i18n_disabler
GPG_BINARY
b64w
GnuPG21Curve25519KeyGenerator
mailbox.Maildir
option.lower
self.bg_setup_stage_1
vcard_importers.gpg.append
e.to_json
self.index.MSG_REPLIES.conv.get_msg_info.split
HealthCheck
_.self.result.strip
part.get_boundary
tbird_src.take_over_mailbox
noproto.split
self._vcard_set
problems.append
Cache
keyword.replace
delta.body.rsplit
droplist.append
textpart.strip
self.reap
self._gnupg.export_pubkeys
ctrl.authenticate
self.as_config
self.auth_type.lower
MailpileState
ConfigRule
mailbox.mbox.__setitem__
addr.split
insrv.get
os.path.dirname
re.compile
m.msg_mid
AutocryptRecord.Load
config.index.search
self.RawResult
fd.read.decode
e.str.split
address.partition
params.append
fd.seek
socks.append
start.startswith
self.sys.path.get
f.startswith
idx.get_msg_id
event_log.log
file.write
es.close
sendits.iteritems
self.close
eids.add
self.__unicode__.lower
opt.lower.sect.self._options.display_name
_open_pop3_mailbox
self.set_name
crypto_format.split
os.urandom
self._key_generator.start
build.log.info
t.tor_controller.remove_ephemeral_hidden_service
self._get_mx1
self.is_valid
self.get_msg_size
newpart.keys
groups.append
UnorderedPicklable
kid.wait
lines.pop
run
event.source_class.Cancel
lookup_crypto_keys
self.idx.get_conversation
urllib.quote_plus
ngettext
self.Window.super.__init__
mbx.path.startswith
hdr_value.split
command.template_path
vcards.choose_from_address
MIMEImage
GnuPG
l.as_vcardline
pidfile.open.read
self.mask_path
cPickle.dump
ContactVCard
self.CommandResult
t.start
container.append
tags.session.Tag.run
config.get_mail_source
mp.set
plaintext.hashlib.md5.hexdigest.startswith
self._read_filter
fd.readline.strip
self.config.get_passphrase
super
iter
Cookie.SimpleCookie
GetThreadEvent
msg.rstrip
self.write_end.close
KEY_LOOKUP_HANDLERS.sort
newmsg.get_payload
self.crypto
self._sleep
be.buf.lower
self.config.items
payload.decode
reg
self.__passkey_recurse__
json_data.splitlines
links.append
xml_attrs
new_file.tell
self._delete_routes
names.extend
rval
config._unlocked_get_all_workers
self.set_event_discovery_state
GnuPGEventUpdater
key_info.append
mailboxes.sort
unsquish_mimetype
server.ehlo_or_helo_if_needed
self.event.update_args
NamedTemporaryFile
part.get_filename
self._mk_command
cls.RedirectURI
TOFU_CHECK_HISTORY.keys
self.tempfile.read
self.resource
gzip_obj.close
self.data_file_and_mimetype
time.ctime
value.unicode.lower
sys.stderr.flush
filters.sort
self._conn._new_tag
ImportError
part.get
self.session.config.save_worker.add_unique_task
dict.keys
i.self._idx.Email.get_msg
thr.join
self._friendly_bytes
m.name.lower
self._reorder_all_tags
sm_connect_server
os.path.isdir
MakeBoundary
self._imap
self.event_log.ui_unwatch
self._restore_PGP_keys
x.split
make_new_source
self._name.upper
CardDAV
os.path.splitext
encoded_hdr.strip
self.server.make_session_id
vcard.add
self.config.get_mailboxes
self.iterkeys
self.pgp_packet_hdr_parse
_make_boundary
self.directory_id
NoColors.__init__
ti.split
self.request.wfile.write
guard
self._create_contacts
l.append
srs.set_results
self.CreateMessage
TemplateNotFound
cfg.key_types
mailpiles.values
hidden_services.iteritems
self._log_result
self.get_only_text_part
_mailpile_key_list
self.decryption_key_func
kws.add
socket.create_connection
s.display
conn.quit
idx.scan_mailbox
ln
truthy
reduce
string.replace.replace
self._tag_emails
self._choose_hint
Worker._failed
b.release
splits.pop
_plugins.register_config_section
self._hashgrey_ok
authors.sort
self.rfile.read
config.save_worker.is_idle
self.sigblock.set_param
self._process_manifest_pass_two
self._recently_used_crypto
p.encode
keyword.self._cmds
variables.code.InteractiveConsole.interact
self.Cell
value.encode.replace
okay.append
self._probe_port
mbox_cls
self.session.config.get_tags
conn.sock.settimeout
self._get_fd
tree.keys
ListFilters.command
Compose.CreateMessage
self._update_dict
X
self.JOBS_LATER.append
self.WordInfoClass
self.expect_exact
kwargs.keys
args.sort
self.compact_to_list
repr
obj.add_part
which.append
tagname.replace
match.group.replace.replace.replace.replace.replace
self.as_vCard
self._fd.readlines
manifest.get.get
TAGGERS.tagger.TAGGERS.get
matches.groups
full_method_name.rsplit
mbox.get_bytes
config.get_tag
partial_read_ok.gpg_input.proc.stdin.wtf.StreamWriter.join
proc.stdin.write
line_ids.append
hostport.split
self._available_opts
kw.startswith
p.startswith
self._add_padding
play_nice
self.index.index_email
mbx_id.lower
config.load
existing.get
ctype.split
self.source._fmt_path
p.raw_fp.startswith
full_name.split
s.TEST_MSG.splitlines
pickle.load
signal.signal
self.toc_values
session.Quit.run
prompt.raw_input.decode
self.write
json.load
expl.update
self.data.iteritems
ts.keys
key_id.lower.session.session.config.index.search.as_set
opt.lower.sect.self._options.unconvert
getrandbits
outputfd.close
session.load_context
self.force_display_headers
line.decode.strip
self.bin_path.append
action.extend
vcl.name.startswith
expanded_ops.sort
config.sys.mailbox.append
vcards.find_vcards
vcard.sources
self.source._namespace_info
CONTACT_IMPORTERS.iteritems
self._unique_tag_name
keyword.build.config.items
capture.render_mode.split
wrap
elapsed_datetime
next
cgi.parse_header
self._configure_default_plugins
app_arguments
value.unquote.decode
created.append
key.startswith
er.close
build.log.warn
vcl.set_attr
self._test_login_and_proto
self.SIGNATURE_TYPE.split
self.LOCK.notify
MailpileSeleniumTest._get_mailpile_sspec
c.options
encryption_info.append
groups.pop
args.join.subprocess.check_output.decode.strip
select.select
msg.lower
pmbx.flush
local.split
keyinfo.add_subkey_capabilities
self._email_view_pairs.values
parent.__getitem__
config.passphrases.set_passphrase
os.path.getmtime
os.path.abspath
hint
fingerprints.extend
mbox.get_file
prompt.raw_input.decode.strip
session.searched.extend
tagname.session.config.get_tag.update
GPG_VERSIONS.get
reindex.append
self.file_id
path.raw_fp.split
imap.mailbox_info
emails.e.e.msg_mid.self.session.AddContact.run
CRYPTO_POLICIES.append
key_info_class
self._shutdown
self.db.cdict.keys
options.load_defaults
bb.parse_args
mailbox._PartialFile
qr.split
TXT_RE_QUOTE.replace
keep_open.extend
AccessError
socket.inet_pton
NoFromAddressError
pColumnDict.match
source_obj.take_over_mailbox
self.kid.wait
backup_data.encode
self.expire
delete_mailpile
lmfn.abs_paths.append
msg_id.split
self._summarize_auth
val.strip
tasksToBeExecuted.append
scope.named_file
s.unescape
kwargs.args.command.self.env.session.Action.as_dict
idx.lines.startswith
path.encode
self.result.get
self.flatten
unittest.TestCase.__init__
session.config.filters.append
self._extract_date_ts
self._default_policy
pl.startswith
self.component_id
m_subj.lower.replace
action.split
pLine.sub
pCell.findall
reply_mids.append
crypto.decrypt
subprocess.check_output
end.append
self.register_worker
self._getclues
self.set_passphrase
dedup.append
self.last_headers.split
self.start
mbox.describe_msg_by_ptr
config.sys.plugins_early.append
self._idx
c._types.append
keylines.sort
proc.stderr.read
self._decode_value
cfg.get_tag
session.config.index.sort_results
r.rsplit
self._offset
args.join.decode
part.as_string
os.fdopen
CC_CONFIG_MAP.get
keyinfo.recalculate_expiration
record.iv.self._aes_key.aes_ctr_encrypt.iv.encode
self.gpg_pass.read
wervd.MailpileMailbox
cls.ustr.super.__new__
pgpdata.append
found_keys.values
text.strip.splitlines
self._delete_sources
self.cache.insert
VCard.command
MorkImporter
shutil.rmtree
self.auto_configure_tor
reasons.get
UserSessionCache
fset
rpc_server.serve_forever
part.is_multipart
self.splitter.setOrientation
index.MSG_TAGS.msg_info.split
locks.locked
hl.strip.split
src.get_metadata_keywords
GnuPG14KeyGenerator
self._discover_plugins
check
self.tempfile.close
app_args.parse_args
quopri.encodestring
self.source_class.EventAsHtml
Window
self.version.add_header
tls_new_context
raw.reverse
self._path.os.path.join.open.write
config.oauth.providers.keys
self.session.config.sys.md5sum_blacklist.split
in_fd.close
self.GIT_DIFF_LINE.match
self.LOADED.append
lines.join.lower
id_src_map.get
extra_headers.append
good.append
crypto.as_set
...

@Singletoned Could please help me check this issue? May I pull a request to fix it? Thank you very much.

PyDeps avatar Jul 15 '22 18:07 PyDeps

As stated in the top-level README, development on this repo is halted (the app is being rewritten from scratch), unless a maintainer steps up. So please don't waste your time on pull requests.

Leaving this issue open since it's absolutely correct and it's worth flagging in case development on this branch does resume.

BjarniRunar avatar Jul 27 '22 14:07 BjarniRunar

Mailpile v1 is no longer being developed, so at this point this probably won't get fixed.

Mailpile v2 is being written in Python 3, but it's not ready yet.

Thanks everyone for helping out here!

BjarniRunar avatar Jul 11 '23 18:07 BjarniRunar