Commit Graph

1099 Commits

Author SHA1 Message Date
Itamar Turner-Trauring
e1ef9d49cd
Merge pull request #987 from tahoe-lafs/3617.web-python-3-part-4
Port allmydata.web to Python 3, part 4.

Fixes ticket:3617
2021-03-02 09:08:30 -05:00
Itamar Turner-Trauring
f75eda1255 Merge remote-tracking branch 'origin/master' into 3618.bb-tests-python-3 2021-03-02 09:00:09 -05:00
Jean-Paul Calderone
99f6a692d4
Merge pull request #991 from LeastAuthority/3623.pin-twisted
Set an upper bound for Twisted until type situation is resolved

Fixes: ticket:3623
2021-03-02 08:14:48 -05:00
Jean-Paul Calderone
dae40c7f86 pointless twiddle
CircleCI keeps failing to fetch the revision for some jobs
Try giving it a new revision????
2021-03-01 14:11:17 -05:00
Jean-Paul Calderone
91ccf33829 news fragment 2021-03-01 13:44:25 -05:00
Jean-Paul Calderone
8faea9162f news fragment 2021-03-01 08:58:14 -05:00
Chad Whitacre
4cb7a65aa1 Port check_results.py to Python 3 2021-02-27 15:40:36 -05:00
Chad Whitacre
701ce50a37
Merge pull request #977 from tahoe-lafs/3605.port-control
Port control.py to Python 3
2021-02-27 14:23:14 -05:00
Itamar Turner-Trauring
298d3bc9e0 News file. 2021-02-23 10:46:24 -05:00
Itamar Turner-Trauring
41590ff81e News file. 2021-02-23 10:45:12 -05:00
Chad Whitacre
f6608255f9 Port control.py to Python 3 2021-02-20 12:14:14 -05:00
Itamar Turner-Trauring
c6342d835b News file. 2021-02-17 15:45:48 -05:00
Itamar Turner-Trauring
debda0d21a Merge branch '3611.web-python-3-part-2' into 3615.web-python-3-part-3 2021-02-17 15:37:51 -05:00
Chad Whitacre
5e52c03ef6
Merge pull request #983 from tahoe-lafs/3613.port-history
Port history.py to Python 3
2021-02-16 06:57:23 -05:00
Jason R. Coombs
2dc0a55d5d Truncate newsfragment 2021-02-15 12:18:10 -05:00
Itamar Turner-Trauring
5b4428b968 Merge remote-tracking branch 'origin/master' into 3611.web-python-3-part-2 2021-02-15 11:38:30 -05:00
Itamar Turner-Trauring
06cd015647 Merge remote-tracking branch 'origin/master' into 3606.test_system-web-python3 2021-02-15 11:14:41 -05:00
Itamar Turner-Trauring
e41ff1a17d
Merge pull request #979 from tahoe-lafs/3607.web-python-3-part-1
Port allmydata.web.common to Python 3

Fixes ticket:3607
2021-02-15 11:13:34 -05:00
Chad Whitacre
8700aae37a ¯\_(ツ)_/¯ 2021-02-13 15:48:42 -05:00
Jason R. Coombs
7ed3d9597e Add newsfragment 2021-02-12 16:17:44 -05:00
Jean-Paul Calderone
91490fc2d5 Merge remote-tracking branch 'origin/master' into 3528.test_cli-no-mock 2021-02-12 13:35:03 -05:00
Jean-Paul Calderone
33d566ec87
Merge pull request #965 from LeastAuthority/3581.unicode_to_argv.1
Remove unicode_to_argv, argv_to_unicode and weird unicode mangling

Fixes: ticket:3581
2021-02-12 13:29:40 -05:00
Jean-Paul Calderone
8ffb083d38 Merge remote-tracking branch 'origin/master' into 3581.unicode_to_argv.1 2021-02-12 13:08:51 -05:00
Jean-Paul Calderone
7864330562 Merge remote-tracking branch 'origin/master' into 3385.coveralls-for-coverage-reports 2021-02-12 12:58:49 -05:00
Jean-Paul Calderone
0b45c2592d
Merge pull request #973 from LeastAuthority/3600.eliotutil-vs-skips
Fix the per-test Eliot decoration to interact better with testtools skips

Fixes: ticket:3600
2021-02-12 12:10:37 -05:00
Itamar Turner-Trauring
308fa3eed8 News file. 2021-02-12 11:47:33 -05:00
Itamar Turner-Trauring
5561f9fa16 Merge remote-tracking branch 'origin/master' into 3607.web-python-3-part-1 2021-02-12 11:22:34 -05:00
Itamar Turner-Trauring
681572b1a5 Merge remote-tracking branch 'origin/3606.test_system-web-python3' into 3611.web-python-3-part-2 2021-02-12 10:30:51 -05:00
Itamar Turner-Trauring
66b5a1577a News file. 2021-02-12 10:23:20 -05:00
Jean-Paul Calderone
ff25ee3f71 Merge remote-tracking branch 'origin/master' into 3600.eliotutil-vs-skips 2021-02-12 10:07:44 -05:00
Jean-Paul Calderone
27e223aba8
Merge pull request #980 from tahoe-lafs/3326.debian-8-to-10
Replace Debian 8 with Debian 10

Fixes: ticket:3326
2021-02-12 10:03:01 -05:00
Jean-Paul Calderone
9ad4d31d9d
Merge pull request #968 from LeastAuthority/3592.convergence-hasher-tag-tests
convergence hasher tag tests

Fixes: ticket:3592
2021-02-11 16:25:41 -05:00
Jean-Paul Calderone
451ede2666 news fragment 2021-02-11 15:58:28 -05:00
Itamar Turner-Trauring
3abbe76d6a Merge branch '3607.web-python-3-part-1' into 3611.web-python-3-part-2 2021-02-10 14:33:00 -05:00
Itamar Turner-Trauring
3fd90640f3 Merge remote-tracking branch 'origin/master' into 3606.test_system-web-python3 2021-02-10 14:23:53 -05:00
Itamar Turner-Trauring
e5806301d3
Merge pull request #976 from tahoe-lafs/3596.test-web-python-3-even-more
Port test_web.py to Python 3

Fixes ticket:3596
2021-02-10 14:21:22 -05:00
Jean-Paul Calderone
3beacc9c8f Merge remote-tracking branch 'origin/master' into 3581.unicode_to_argv.1 2021-02-09 21:18:58 -05:00
Jean-Paul Calderone
845e33061e
Merge pull request #964 from LeastAuthority/3588.use-pywin32-more
Use pywin32 more

Fixes: ticket:3588
2021-02-09 21:15:34 -05:00
Jean-Paul Calderone
ab57746a85
Merge pull request #969 from LeastAuthority/3593.get_encryption_key-test
Add FileHandle.get_encryption_key test

Fixes: ticket:3593
2021-02-07 07:41:44 -05:00
Itamar Turner-Trauring
e3bb368184 News file. 2021-02-04 14:10:41 -05:00
Itamar Turner-Trauring
b9927e0824 News file. 2021-02-03 11:08:14 -05:00
Itamar Turner-Trauring
0b57fb9df1 Merge remote-tracking branch 'origin/master' into 3596.test-web-python-3-even-more 2021-02-02 15:28:49 -05:00
Itamar Turner-Trauring
965a3e3f05 News file. 2021-02-02 15:28:25 -05:00
meejah
00613b78f5 Merge branch 'master' into release-1.15.0-rc0 2021-02-02 12:14:13 -07:00
meejah
c47b0854ae
Merge pull request #943 from meejah/3570.developers-signatures
3570.developers signatures
2021-02-02 12:10:49 -07:00
Itamar Turner-Trauring
6fd62eb25e Merge remote-tracking branch 'origin/master' into 3579.ftp-python-3 2021-01-28 15:15:57 -05:00
Itamar Turner-Trauring
59f0c9e63b
Merge pull request #961 from tahoe-lafs/3584.integration-tests-sftp
Integration tests and bug fixes for SFTP

Fixes ticket:3584
2021-01-28 15:07:15 -05:00
Jean-Paul Calderone
740fe9fef7 news fragment 2021-01-27 11:36:53 -05:00
Itamar Turner-Trauring
cc8e613fe3 Rephrase. 2021-01-26 10:00:50 -05:00
Jean-Paul Calderone
c451d947ff Merge remote-tracking branch 'origin/master' into patch-1 2021-01-26 09:57:05 -05:00
Jean-Paul Calderone
3d2ca566f6 news fragment 2021-01-26 09:57:02 -05:00
Jean-Paul Calderone
bb8348f7bb Merge remote-tracking branch 'origin/master' into 3588.use-pywin32-more 2021-01-26 09:54:59 -05:00
Itamar Turner-Trauring
49300ccc4e Merge remote-tracking branch 'origin/master' into 3584.integration-tests-sftp 2021-01-26 09:53:51 -05:00
Jean-Paul Calderone
15dbbce217 Merge remote-tracking branch 'origin/master' into 3592.convergence-hasher-tag-tests 2021-01-26 09:53:26 -05:00
Itamar Turner-Trauring
dc3871b711
Merge pull request #970 from tahoe-lafs/3590.error-in-integration-test
Fix URI redirect error that was manifesting in the integration tests

Fixes ticket:3590
2021-01-26 09:50:40 -05:00
Jean-Paul Calderone
25b453047c Merge remote-tracking branch 'origin/master' into 3593.get_encryption_key-test 2021-01-25 11:12:59 -05:00
Jean-Paul Calderone
b139876a15 Merge remote-tracking branch 'origin/master' into 3536.sphinx-warnings 2021-01-25 10:52:34 -05:00
Jean-Paul Calderone
e5f0dcfbb4
Merge pull request #971 from LeastAuthority/3594.read_encrypted-test
Directly test read_encrypted behavior and remove a `fireEventually` from its implementation

Fixes: ticket:3594
Fixes: ticket:3595
2021-01-25 09:14:35 -05:00
Itamar Turner-Trauring
f62b6d83c2 Merge branch '3590.error-in-integration-test' into 3596.test-web-python-3-even-more 2021-01-21 14:01:54 -05:00
Itamar Turner-Trauring
411ee141e9 Fix location for news fragment. 2021-01-21 13:55:51 -05:00
Itamar Turner-Trauring
0902c8e156 Merge remote-tracking branch 'origin/master' into 3584.integration-tests-sftp 2021-01-21 13:34:51 -05:00
Jean-Paul Calderone
9c91261fa6 news fragment 2021-01-20 13:57:01 -05:00
Itamar Turner-Trauring
f8e548dc92
Merge pull request #966 from tahoe-lafs/3589.more-web-tests-python-3
Port more web tests to Python 3

Fixes ticket:3589
2021-01-20 13:38:22 -05:00
Jean-Paul Calderone
f75f71cba6 news fragment 2021-01-20 11:23:35 -05:00
Sajith Sasidharan
73299d253e
Merge pull request #967 from sajith/3591.use-pip-cache-in-github-actions
Use pip cache in GitHub Actions

Fixes: ticket:3591
2021-01-20 09:57:37 -05:00
meejah
8c1c682fdd redundant newsfragment 2021-01-19 12:58:01 -07:00
meejah
3995c932ef better words 2021-01-19 12:57:18 -07:00
meejah
ed9bc93571 redundant newsfragment 2021-01-19 12:55:56 -07:00
meejah
52c2e292d8 news 2021-01-19 12:55:56 -07:00
meejah
3061e9f913
Merge pull request #942 from meejah/2920.checklist-error
2920 signatures are detached
2021-01-19 12:48:56 -07:00
Jean-Paul Calderone
be5cf1a0be news fragment 2021-01-19 14:42:30 -05:00
Jean-Paul Calderone
512897eca0 news fragment 2021-01-19 13:46:32 -05:00
meejah
5dd7aa2dfd news 2021-01-19 11:25:09 -07:00
Itamar Turner-Trauring
2de76cd82d
Merge branch 'master' into 3589.more-web-tests-python-3 2021-01-19 11:44:27 -05:00
Sajith Sasidharan
621de4d882 Add newsfragment 2021-01-18 10:55:18 -05:00
Jason R. Coombs
7d468cde19 Merge branch 'master' into 3399.mypy 2021-01-15 11:17:47 -05:00
Itamar Turner-Trauring
60acad32ca Merge remote-tracking branch 'origin/master' into 3589.more-web-tests-python-3 2021-01-14 09:39:18 -05:00
Itamar Turner-Trauring
6b0849490a News file. 2021-01-12 14:40:46 -05:00
Itamar Turner-Trauring
f717250ecd Merge remote-tracking branch 'origin/master' into 3576.port-unknown 2021-01-12 11:07:15 -05:00
Jean-Paul Calderone
db31d2bc1a news fragment 2021-01-12 10:14:38 -05:00
Itamar Turner-Trauring
1b1d87f9f9 Merge branch '3584.integration-tests-sftp' into 3579.ftp-python-3 2021-01-11 14:05:07 -05:00
Itamar Turner-Trauring
ce58f63040 Merge remote-tracking branch 'origin/master' into 3584.integration-tests-sftp 2021-01-11 13:55:03 -05:00
Itamar Turner-Trauring
4a7da34a6a
Merge pull request #958 from tahoe-lafs/3583.rip-out-ftp
Rip out FTP support

Fixes ticket:3583
2021-01-11 13:54:00 -05:00
Jean-Paul Calderone
891ef3eefd news fragment 2021-01-09 18:19:04 -05:00
Jean-Paul Calderone
b00bf94643
news fragment 2021-01-09 09:06:19 -05:00
Jean-Paul Calderone
1ae0311e36
Merge pull request #949 from tahoe-lafs/port-webish
Port webish/test_webish to Python 3

Fixes: ticket:3577
2021-01-08 13:51:00 -05:00
Itamar Turner-Trauring
6f3b3d07fd News file. 2021-01-08 13:43:23 -05:00
Itamar Turner-Trauring
7b1bfadd21 Rip out FTP. 2021-01-06 13:39:52 -05:00
Itamar Turner-Trauring
3a6f3f2809 Merge remote-tracking branch 'origin/master' into 3579.ftp-python-3 2021-01-05 16:05:56 -05:00
Jean-Paul Calderone
e937b062a1 news fragment 2021-01-05 15:56:42 -05:00
Chad Whitacre
fa15c2c8d6 Declare victory on blacklist 2021-01-05 06:45:32 -05:00
Chad Whitacre
88946900b3 Port unknown to Python 3
This is covered by test_dirnode/test_grid
2021-01-05 06:39:29 -05:00
Chad Whitacre
dc5ac4a112
Merge pull request #946 from tahoe-lafs/3574.port-stats
Port stats to Python 3
2021-01-05 06:04:10 -05:00
Sajith Sasidharan
ce50916ec5 Add newsfragment 2021-01-04 20:21:43 -05:00
Itamar Turner-Trauring
4683760ed8
Merge pull request #945 from tahoe-lafs/3566.web-tests-python-3-part-2
Port web tests to Python 3, part 2

Fixes ticket:3566
2021-01-04 15:40:52 -05:00
Jean-Paul Calderone
3c203828c5 Merge remote-tracking branch 'origin/master' into 3578.remove-encode_tail_segment 2021-01-04 15:08:27 -05:00
Jean-Paul Calderone
7a504dd99f
Merge pull request #936 from LeastAuthority/3534.test_introducer-no-mock
Remove mock from test_introducer

Fixes: ticket:3534
2021-01-04 15:06:29 -05:00
Jean-Paul Calderone
af06bdb182 Merge remote-tracking branch 'origin/master' into 3575.realistic_storage_index_hash-key 2021-01-04 14:14:13 -05:00
Itamar Turner-Trauring
62e6c0d9ac News file. 2021-01-04 11:06:14 -05:00
Chad Whitacre
655be5e3a0 Port stats to Python 3 2021-01-04 06:18:14 -05:00
Jean-Paul Calderone
855521fea8
Merge pull request #935 from LeastAuthority/3529.test_connections-no-mock
Remove mock usage from test_connections.py

Fixes: ticket:3529
2021-01-02 12:48:12 -05:00
Jean-Paul Calderone
244089d785 news fragment 2021-01-01 15:15:06 -05:00
Jean-Paul Calderone
5a543fd497 news fragment 2020-12-29 13:35:33 -05:00
Chad Whitacre
b4b4a1aabf Port webish/test_webish to Python 3 2020-12-29 12:39:00 -05:00
Jean-Paul Calderone
9e83343335 news fragment 2020-12-29 10:47:58 -05:00
Jason R. Coombs
9780f8bfdc Add newsfragment 2020-12-26 13:24:09 -05:00
Itamar Turner-Trauring
2c7dde9978 Merge remote-tracking branch 'origin/master' into 3566.web-tests-python-3-part-2 2020-12-23 09:14:34 -05:00
Itamar Turner-Trauring
55698cc8f2 Merge remote-tracking branch 'origin/master' into 3566.web-tests-python-3-part-2 2020-12-22 13:21:49 -05:00
Itamar Turner-Trauring
3ca17454c4 News file. 2020-12-22 13:18:07 -05:00
Itamar Turner-Trauring
013388981c Fix intermittent failing test on PyPy hopefully.
PyPy does not have refcounts, so files were only being closed when GC happened,
which meant their buffered writes never hit disk.
2020-12-22 13:04:53 -05:00
Itamar Turner-Trauring
f9ee4b239f
Merge pull request #934 from tahoe-lafs/3564.eliot-log-testing-python-3
Re-enable logging validation on Python 3.

Fixes ticket:3564
2020-12-22 11:43:36 -05:00
Jean-Paul Calderone
ab7c382dec
Merge pull request #939 from LeastAuthority/3567.test_storage_client-eaddrinuse
Use a pre-bound listening socket in the test

Fixes: ticket:3567
2020-12-21 13:27:08 -05:00
Jean-Paul Calderone
6dc2928172
Merge pull request #941 from LeastAuthority/3568.better-codecov-reporting.wait_for_ci
Try the `wait_for_ci` option

Fixes: ticket:3568
2020-12-21 13:26:20 -05:00
Itamar Turner-Trauring
a8732a3c70 Merge branch '3564.eliot-log-testing-python-3' into 3566.web-tests-python-3-part-2 2020-12-21 13:12:19 -05:00
Jean-Paul Calderone
0569972212 news fragment 2020-12-17 12:40:12 -05:00
Jean-Paul Calderone
f0359f106c news fragment 2020-12-17 10:20:17 -05:00
Itamar Turner-Trauring
48b9ffe2a5 News file. 2020-12-17 09:55:48 -05:00
Itamar Turner-Trauring
26297c296d
Merge branch 'master' into 3552.test_system-python-3 2020-12-17 09:42:34 -05:00
Jean-Paul Calderone
96b54e8f62 news fragment 2020-12-16 20:50:08 -05:00
Jean-Paul Calderone
3513e9b4fc news fragment 2020-12-16 15:25:11 -05:00
Jean-Paul Calderone
d19b1cfd68
Merge pull request #933 from LeastAuthority/3533.test_root-no-mock
Remove Mock from test_root

Fixes: ticket:3533
2020-12-16 15:15:17 -05:00
Jean-Paul Calderone
8bb4d10d7f news fragment 2020-12-16 12:28:29 -05:00
Itamar Turner-Trauring
052b3d9fb1 Re-enable logging validation on Python 3. 2020-12-16 10:06:59 -05:00
Itamar Turner-Trauring
54a11dbb6a
Merge pull request #932 from tahoe-lafs/3560.test_eliotutil-python-3
Port eliotutil and tests to Python 3

Fixes ticket:3560
2020-12-16 09:40:19 -05:00
Jean-Paul Calderone
c45290c55f news fragment 2020-12-15 18:29:43 -05:00
Jean-Paul Calderone
c4e8262a99
Merge pull request #925 from tahoe-lafs/3532.test_node-no-mock
Remove mock from test_node

Fixes: ticket:3532
2020-12-15 14:38:07 -05:00
Itamar Turner-Trauring
4a587836a5 Port eliotutil and tests to Python 3. 2020-12-15 10:13:46 -05:00
Itamar Turner-Trauring
c7f2b7dd7c Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3 2020-12-15 09:13:32 -05:00
Jean-Paul Calderone
a9bcd6270a Merge remote-tracking branch 'origin/master' into 3557.GuessedAtParserWarning 2020-12-14 15:41:31 -05:00
Jean-Paul Calderone
035cd8b4ac Merge remote-tracking branch 'origin/master' into 3532.test_node-no-mock 2020-12-14 15:35:42 -05:00
Jean-Paul Calderone
39628cbb4e
Merge pull request #921 from tahoe-lafs/3550.remove-start-stop-restart-daemonize
remove start stop restart daemonize

Fixes: ticket:3550
Fixes: ticket:3523
Fixes: ticket:3524
2020-12-14 14:58:35 -05:00
Jean-Paul Calderone
052d95f182
Merge pull request #930 from LeastAuthority/3558.out-of-org-pr
Report coverage for out-of-org PRs properly

Fixes: ticket:3558
2020-12-14 14:14:35 -05:00
Itamar Turner-Trauring
919f31acf3
Merge pull request #923 from tahoe-lafs/3553.nodemaker-python-3
Port allmydata.nodemaker and .dirnode to Python 3

Fixes ticket:3553
2020-12-14 13:31:50 -05:00
Itamar Turner-Trauring
93fb28f6ad Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3 2020-12-14 10:21:12 -05:00
Jean-Paul Calderone
0357eeb924 news fragment 2020-12-14 10:11:05 -05:00
Jean-Paul Calderone
7638064818 Merge remote-tracking branch 'origin/master' into 3532.test_node-no-mock 2020-12-14 09:32:33 -05:00
Sajith Sasidharan
b787de0acc Fix BeautifulSoup's GuessedAtParserWarning 2020-12-13 06:49:49 -05:00
Jean-Paul Calderone
b9e9e55f4e Merge remote-tracking branch 'origin/master' into 3550.remove-start-stop-restart-daemonize 2020-12-11 15:33:23 -05:00
Sajith Sasidharan
158c4b9446
Merge branch 'master' into 3555.stats-gatherer-is-history 2020-12-11 14:46:39 -05:00
Itamar Turner-Trauring
98330d7186 Merge remote-tracking branch 'origin/master' into 3552.test_system-python-3 2020-12-11 13:24:04 -05:00
Itamar Turner-Trauring
fc62102500
Merge branch 'master' into 3553.nodemaker-python-3 2020-12-11 13:11:27 -05:00
Itamar Turner-Trauring
66cd68d325 Merge remote-tracking branch 'origin/master' into 3553.nodemaker-python-3 2020-12-11 10:48:50 -05:00
jehadbaeth
d76bea4d00
Merge branch 'master' into new-readme 2020-12-11 18:32:20 +03:00
Sajith Sasidharan
713e456265 Mention stats gatherer removal in notes about old configuration 2020-12-11 10:19:07 -05:00
Jean-Paul Calderone
624916e06b
Merge branch 'master' into 3550.remove-start-stop-restart-daemonize 2020-12-10 19:47:47 -05:00
Jean-Paul Calderone
1c7c228f90 Merge remote-tracking branch 'origin/master' into 3549.remove-stats-gatherer 2020-12-10 18:27:54 -05:00
Jean-Paul Calderone
8afb4cba7c Make a recommendation 2020-12-10 18:22:06 -05:00
Itamar Turner-Trauring
37554162b0 News file. 2020-12-10 11:17:42 -05:00
Itamar Turner-Trauring
e9b0a526bd
Merge branch 'master' into 3551.more-immutable-python-3 2020-12-10 10:06:53 -05:00
Jean-Paul Calderone
4ac95a1ede Merge remote-tracking branch 'origin/master' into 3522.test_alias-no-mock 2020-12-10 07:19:43 -05:00
Jean-Paul Calderone
46f18fbbc3 news fragment 2020-12-09 15:47:43 -05:00
Itamar Turner-Trauring
ba42483741 News file. 2020-12-09 14:50:28 -05:00
Itamar Turner-Trauring
2edd029261 News file. 2020-12-09 13:23:11 -05:00
Jean-Paul Calderone
8b890d255e extra news fragments 2020-12-09 11:02:29 -05:00
Jean-Paul Calderone
179f0bb9ec news fragment 2020-12-09 10:55:13 -05:00
Jean-Paul Calderone
914e7ac013 news fragment 2020-12-09 10:50:03 -05:00
Jean-Paul Calderone
4f01c8f33e news fragment 2020-12-09 10:35:43 -05:00
Itamar Turner-Trauring
67549aaed5 Merge remote-tracking branch 'origin/master' into 3456.introducer-python3 2020-12-09 09:21:02 -05:00
jehadbaeth
1719144695
Merge branch 'master' into new-readme 2020-12-09 11:55:58 +03:00
Itamar Turner-Trauring
0cf9be18d7 Merge remote-tracking branch 'origin/master' into 3544.furls-not-bytes-maybe 2020-12-08 16:08:12 -05:00
jbaeth
6d1f3861fc rewording news fragment
fixing some links
fix ToC order
2020-12-08 19:30:24 +03:00
Itamar Turner-Trauring
dcd865897e
Merge branch 'master' into 3544.furls-not-bytes-maybe 2020-12-08 10:30:00 -05:00
Jean-Paul Calderone
d415bda72a
Merge branch 'master' into 3521.test_storage_client-no-mock 2020-12-07 12:03:50 -05:00
jbaeth
82aee95ef6 readme fixes 2020-12-07 18:01:31 +03:00
Jean-Paul Calderone
dea42c474f news fragment 2020-12-06 11:03:31 -05:00
Jean-Paul Calderone
24709fa758
Merge branch 'master' into 3547.furl-py36-regression 2020-12-05 13:29:27 -05:00
Jean-Paul Calderone
d7f005badd
Merge branch 'master' into 3520.test_client-no-mock 2020-12-05 12:55:25 -05:00
Jean-Paul Calderone
96bee384c9 news fragment 2020-12-05 09:06:29 -05:00
Jean-Paul Calderone
bdc75c3361 Merge remote-tracking branch 'origin/master' into 3539.nodemaker-weakrefdict 2020-12-05 07:23:54 -05:00
Itamar Turner-Trauring
afc443bff0 News file. 2020-12-04 11:37:08 -05:00
Jean-Paul Calderone
15d0207f89
Merge pull request #897 from tahoe-lafs/3504.private-introducer-furl
Deprecate tahoe.cfg [client]introducer.furl

Fixes: ticket:3504
2020-12-04 09:44:19 -05:00
Jean-Paul Calderone
840a8af1e9
Merge pull request #904 from tahoe-lafs/3515.partial-pre-commit
Configure pre-commit push hook to run on changed files only

Fixes: ticket:3515
2020-12-04 09:40:21 -05:00
jehad
d531cc9d6c new README file based on Victoriia’s changes 2020-12-03 13:40:49 +03:00
Itamar Turner-Trauring
b716456019 Merge remote-tracking branch 'origin/master' into 3544.furls-not-bytes-maybe 2020-12-02 15:24:31 -05:00
Itamar Turner-Trauring
71d287c1c1
Merge pull request #905 from tahoe-lafs/3514.test-introducer-python-3
Port test_introducer.py to Python 3

Fixes ticket:3514
2020-12-02 15:24:17 -05:00
Jean-Paul Calderone
a0d46c6f09 Merge remote-tracking branch 'origin/master' into 3504.private-introducer-furl 2020-12-02 09:22:09 -05:00
Jean-Paul Calderone
8d6b49669b
Merge pull request #900 from tahoe-lafs/3511.config-set-config
Add `_Config.set_config`

Fixes: ticket:3511
2020-12-01 12:04:26 -05:00
Jean-Paul Calderone
5f02e5b816
Merge pull request #896 from tahoe-lafs/3505.furl-docs
fURL / NURL specification

Fixes: ticket:3505
2020-12-01 10:15:25 -05:00
Itamar Turner-Trauring
8a47227e9b News file. 2020-11-30 17:56:46 -05:00
Sajith Sasidharan
ff49414ae9 Use Tor project's new repository signing key
Fix for https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3542
2020-11-30 17:20:50 -05:00
Itamar Turner-Trauring
27102c0d89 Merge remote-tracking branch 'origin/master' into 3514.test-introducer-python-3 2020-11-30 16:47:21 -05:00
Jean-Paul Calderone
b02a4f73b6 news fragment 2020-11-30 08:56:37 -05:00
Jean-Paul Calderone
c82501e0dc Merge remote-tracking branch 'origin/master' into 3511.config-set-config 2020-11-26 11:01:18 -05:00
Jean-Paul Calderone
9d6e6c41ac Merge remote-tracking branch 'origin/master' into 3505.furl-docs 2020-11-25 18:23:40 -05:00
Jean-Paul Calderone
fba386cb8e
Merge pull request #903 from tahoe-lafs/3497.stop-recommending-our-deps
Stop recommending our hosted binary dep packages

Fixes: ticket:3497
2020-11-25 18:20:28 -05:00
Jean-Paul Calderone
152c04e48c
Merge pull request #902 from tahoe-lafs/3512.localized-tempdir
Per-node web temp directory

Fixes: ticket:3512
2020-11-25 18:18:36 -05:00
Jean-Paul Calderone
aeeb576b68 Merge remote-tracking branch 'origin/master' into 3497.stop-recommending-our-deps 2020-11-25 16:05:31 -05:00
meejah
e35e0a2edf
Merge pull request #863 from meejah/3478.release-docs
3478.release docs
2020-11-25 11:34:58 -07:00
Sajith Sasidharan
5565192dda
Merge pull request #909 from sajith/3537.reintroduce-vcpython27
Re-introduce vcpython27 in GitHub Actions

Fixes: ticket:3537
2020-11-25 11:23:30 -05:00
Jean-Paul Calderone
8e6773c690
Merge pull request #907 from tahoe-lafs/3518.pypy-versions-None
Get rid of version_checks

Fixes: ticket:3518
2020-11-25 10:54:46 -05:00
Jean-Paul Calderone
94a1ae70b7
fix word-o 2020-11-25 10:41:56 -05:00
Jean-Paul Calderone
bd9a91abf6
Merge pull request #901 from tahoe-lafs/3513.raiseException
Fix exception re-raising in no_network.py

Fixes: ticket:3513
2020-11-25 10:41:15 -05:00
Sajith Sasidharan
c8aab085d7 Re-introduce vcpython27 in GitHub Actions
Turns out that netifaces has not published a .whl package for Python
2.7 and 64-bit Windows.
2020-11-25 08:17:40 -05:00
Sajith Sasidharan
4e5eb1300d
Merge pull request #862 from sajith/3477.remove-vcpython27-from-ci
Do not install vcpython27 during Windows CI steps

Fixes: ticket: 3477
2020-11-24 18:13:03 -05:00
Jean-Paul Calderone
80d2ecb815 news fragment 2020-11-24 14:52:17 -05:00
Jean-Paul Calderone
737f1f21e1 news fragment 2020-11-24 14:04:35 -05:00
Jean-Paul Calderone
d03dece4de news fragment 2020-11-23 15:14:12 -05:00
Jean-Paul Calderone
45a8351367 news fragment 2020-11-20 16:02:50 -05:00
Itamar Turner-Trauring
0d652a3af1 News file. 2020-11-20 14:06:31 -05:00
Itamar Turner-Trauring
38275cbe6f Merge remote-tracking branch 'origin/master' into 3502.mutable-python-3-part-2 2020-11-19 13:43:10 -05:00
Jean-Paul Calderone
c4a67d6b8c news fragment 2020-11-19 11:12:21 -05:00
Jean-Paul Calderone
ff8906ecb2 Describe the installation requirement change 2020-11-19 09:34:17 -05:00
Jean-Paul Calderone
1637769c81 It's gonna be an installation change 2020-11-19 09:22:46 -05:00
Jean-Paul Calderone
0eb9a491ee news fragment 2020-11-19 09:12:50 -05:00
Jean-Paul Calderone
4c19d9f1fa Target the non-duplicate ticket 2020-11-18 18:13:43 -05:00
Jean-Paul Calderone
0b45c9b1cc news fragment 2020-11-18 15:41:56 -05:00
Jean-Paul Calderone
fefc91ea49 news fragment 2020-11-18 14:48:33 -05:00
Jean-Paul Calderone
aedac9d570 news fragment 2020-11-18 11:02:58 -05:00
Itamar Turner-Trauring
dd5092f656 News fragment. 2020-11-17 13:15:52 -05:00
Itamar Turner-Trauring
9b8b0b1946 News fragment. 2020-11-17 09:33:44 -05:00
Jean-Paul Calderone
bcef851ae0 news fragment 2020-11-13 21:08:19 -05:00
Jean-Paul Calderone
983800d593 news fragment 2020-11-13 12:35:03 -05:00
Itamar Turner-Trauring
a0845d8a8a News fragment. 2020-11-12 11:25:03 -05:00
Itamar Turner-Trauring
8aa77e1195 News fragment. 2020-11-11 14:01:16 -05:00
Itamar Turner-Trauring
0e9d75f6c4 News fragment. 2020-11-11 13:52:30 -05:00
Itamar Turner-Trauring
0e27e7eba1 Merge branch '3496.mutable-tests-python-3-part-3' into 3500.mutable-tests-python-3 2020-11-09 13:46:19 -05:00
Chad Whitacre
80f31c37f4 Sigh 2020-11-06 20:06:48 -05:00
Itamar Turner-Trauring
56c9af0a07 News file. 2020-11-06 11:44:13 -05:00
Itamar Turner-Trauring
6017b11910 Merge branch '3475.mutable-tests-part-2-python-3' into 3496.mutable-tests-python-3-part-3 2020-11-06 11:20:54 -05:00
Itamar Turner-Trauring
eab228f22a
Merge pull request #887 from tahoe-lafs/3465.storage_client-python-3-take-2
Port storage_client to Python 3

Fixes ticket:3465
2020-11-06 11:18:31 -05:00
Itamar Turner-Trauring
7569617e47 News file. 2020-11-06 10:21:47 -05:00
Itamar Turner-Trauring
2c8a91fb6e
Merge pull request #883 from tahoe-lafs/3493.node-to-python-3
Port allmydata.node to python 3

Fixes ticket:3493
2020-11-04 13:44:21 -05:00
Itamar Turner-Trauring
4c4f7f8fa1 News file. 2020-11-04 13:41:00 -05:00
meejah
2472d78916
Merge pull request #879 from meejah/code-of-conduct-node
note about further contributions
2020-11-03 12:51:03 -07:00
Jean-Paul Calderone
55c83106ed
Merge pull request #880 from tahoe-lafs/3492.run-deprecations-cleanup
run-deprecations.py cleanup

Fixes: ticket:3492
2020-10-31 19:25:59 -04:00
Jean-Paul Calderone
540c70f835
Merge pull request #871 from exarkun/2928.remote-allocate_tcp_port-test_node.py
Remove `allocate_tcp_port` from test_node.py

Fixes: ticket:2928
2020-10-31 19:24:09 -04:00
Jean-Paul Calderone
7ad55e0fba Merge remote-tracking branch 'origin/master' into 2928.remote-allocate_tcp_port-test_node.py 2020-10-31 11:42:01 -04:00
Chad Whitacre
a615049c9d
Merge pull request #884 from tahoe-lafs/3479.blip
Put news fragment in its place
2020-10-30 17:16:46 -04:00
Chad Whitacre
266b707d25
Merge pull request #861 from tahoe-lafs/3474.easy-ports
Port some easy files to Python 3
2020-10-30 13:33:34 -04:00
Chad Whitacre
ea039271ad Put news fragment in its place 2020-10-30 12:33:49 -04:00
Itamar Turner-Trauring
c48228a988 News file. 2020-10-29 14:09:39 -04:00
Jean-Paul Calderone
9a4df38db9
Merge pull request #878 from tahoe-lafs/3490.integration-codechecks
Run static codechecks on the implementation of the integration test suite

Fixes: ticket:3490
2020-10-29 09:08:26 -04:00
Jean-Paul Calderone
125bb5f15f
Merge pull request #881 from tahoe-lafs/3283.backdoor-statement-signatures
Add some backdoor statement signatures

Fixes: ticket:3283
2020-10-28 15:25:01 -04:00
Chad Whitacre
a10c2606f4
Merge pull request #868 from tahoe-lafs/3468.offloaded-test-coverage
More test coverage for the upload helper
2020-10-28 15:20:34 -04:00
Chad Whitacre
d04b6c103a Pick off a couple of easy ports 2020-10-28 14:57:10 -04:00
Jean-Paul Calderone
17dbbe0642 Merge remote-tracking branch 'origin/master' into 3283.backdoor-statement-signatures 2020-10-28 09:55:30 -04:00
Itamar Turner-Trauring
2f0a5d91cb
Merge pull request #877 from tahoe-lafs/3485.backported-configparser-for-py-2
Backported configparser for Python 2

Fixes ticket:3485
2020-10-27 16:58:46 -04:00
Jean-Paul Calderone
463439a615 news fragment 2020-10-27 14:27:02 -04:00
meejah
caf606768f news 2020-10-27 10:56:47 -06:00
Jean-Paul Calderone
874bfa72fd
Merge pull request #874 from tahoe-lafs/3488.pre-push
Configure pre-commit to do codechecks pre-push only

Fixes: ticket:3488
2020-10-27 10:31:45 -04:00
Jean-Paul Calderone
900c25c78b news fragment 2020-10-27 09:29:13 -04:00
Itamar Turner-Trauring
d5333ae9f9 Merge remote-tracking branch 'origin/master' into 3485.backported-configparser-for-py-2 2020-10-26 16:53:19 -04:00
Itamar Turner-Trauring
7ed34168b2 News file. 2020-10-26 16:08:38 -04:00
Jean-Paul Calderone
25ee76104a
Merge pull request #872 from tahoe-lafs/3486.netifaces
Switch to netifaces

Fixes: ticket:3486
2020-10-26 11:55:31 -04:00
Jean-Paul Calderone
8dec56d714 news fragment 2020-10-23 14:53:00 -04:00
Chad Whitacre
725291c2aa Merge branch 'master' into 3468.offloaded-test-coverage 2020-10-23 12:08:48 -04:00
Chad Whitacre
f0657aec69
Merge pull request #853 from tahoe-lafs/3346.port-immutable-offloaded
Port immutable.offloaded to Python 3
2020-10-23 12:05:20 -04:00
Jean-Paul Calderone
ed5d472209 news fragment 2020-10-23 09:52:07 -04:00
Jean-Paul Calderone
c2dd4dbeb9 news fragment 2020-10-22 14:42:21 -04:00
Jean-Paul Calderone
8239d92892 news fragment 2020-10-22 12:04:48 -04:00
Jean-Paul Calderone
e2013e9ebb news fragment 2020-10-21 10:17:43 -04:00
Jean-Paul Calderone
5f10f1e382 Remove Nevow from the tool version helper 2020-10-21 10:17:21 -04:00
Jean-Paul Calderone
9b8b7a5d86 Remove Nevow from the static script 2020-10-21 10:16:44 -04:00
Jean-Paul Calderone
e028c69642 News fragment 2020-10-21 10:03:38 -04:00
Jean-Paul Calderone
7ca8ede88c Merge remote-tracking branch 'origin/master' into 3428.dont-return-deferred-to-twistedweb.2 2020-10-21 07:35:10 -04:00
Jean-Paul Calderone
8adc8f2d3e
Merge pull request #866 from tahoe-lafs/3481.integration-vs-introducer-vs-addresses
Expand success cases and improve failure cases for integration test introducer setup

Fixes: ticket:3481
2020-10-20 12:32:34 -04:00
Jean-Paul Calderone
e7c04f8810 another news fragment! 2020-10-19 15:41:38 -04:00
Jean-Paul Calderone
a403d25146 Merge remote-tracking branch 'origin/master' into 3468.offloaded-test-coverage 2020-10-16 14:34:35 -04:00
Jean-Paul Calderone
540004f319 news fragment 2020-10-16 14:18:32 -04:00
Jean-Paul Calderone
960d115286 news fragment 2020-10-16 11:25:37 -04:00
Jean-Paul Calderone
28505ab57d news fragment 2020-10-16 10:38:58 -04:00
Itamar Turner-Trauring
c2fe5a65a6
Merge pull request #847 from tahoe-lafs/3459.test-checker-python-3
Port test_checker.py to Python 3

Fixes ticket:3459
2020-10-16 10:31:25 -04:00
Jean-Paul Calderone
f15086d995
Merge pull request #844 from tahoe-lafs/3460.improved-got_announcement
Improved `_got_announcement`

Fixes: ticket:3460
2020-10-16 08:55:11 -04:00
Jean-Paul Calderone
d66ef8f506 Merge remote-tracking branch 'origin/master' into 3472.windows-coverage-reports 2020-10-16 06:53:10 -04:00
Jean-Paul Calderone
99fe617069
Merge pull request #857 from tahoe-lafs/3470.oneshotobserverlist-immediately
Make OneShotObserverList immediate

Fixes: ticket:3470
2020-10-15 17:37:31 -04:00
Jean-Paul Calderone
733d393a07
Merge pull request #840 from tahoe-lafs/3454.unskip-test_python3
Unskip the Python 3 porting test on Python 2

Fixes: ticket:3454
2020-10-15 17:32:59 -04:00
meejah
bd5887d409 news 2020-10-15 14:56:44 -06:00
Sajith Sasidharan
525f2201c6 Do not install vcpython27 during Windows CI steps
With zfec 1.5.4, wheel packages for Windows is available now.
Installing a compiler is no longer necessary.
2020-10-15 14:17:53 -04:00
Jean-Paul Calderone
4d56b5f4ed
Merge pull request #858 from tahoe-lafs/3471.immediate-localwrapper
Allow LocalWrapper to be immediate

Fixes: ticket:3471
2020-10-15 13:15:35 -04:00
Itamar Turner-Trauring
b658a66e7f Merge remote-tracking branch 'origin/master' into 3459.test-checker-python-3 2020-10-15 08:32:53 -04:00
Itamar Turner-Trauring
b094a00458
Merge pull request #860 from tahoe-lafs/3473-mutable-tests-part-1-python-3
Port allmydata.mutable.tests to Python 3: part 1 of N

Fixes ticket:3473
2020-10-15 08:27:45 -04:00
Itamar Turner-Trauring
03fcc0c9b4 News file. 2020-10-14 15:46:51 -04:00
Jean-Paul Calderone
fbe15cb5ad news fragment 2020-10-14 12:46:17 -04:00
Jean-Paul Calderone
91a20459a1 news fragment 2020-10-14 11:09:01 -04:00
Jean-Paul Calderone
0eb0d68886 news fragment 2020-10-14 10:58:50 -04:00
Jean-Paul Calderone
0dcbad9d0c news fragment 2020-10-14 10:57:06 -04:00
meejah
21b0eefed9 newsfragment 2020-10-13 16:38:25 -06:00
meejah
4990d90ae6 update NEWS.txt for release 2020-10-13 14:34:11 -06:00
Chad Whitacre
a0963fc2da Keep future.builtins imports consistent
- remove int from a stock import
- comment a non-stock import
2020-10-13 08:39:25 -04:00
Chad Whitacre
574c63d350 Port immutable.offloaded to Python 3 2020-10-12 07:25:44 -04:00
Itamar Turner-Trauring
17f0676b3f
Merge branch 'master' into 3459.test-checker-python-3 2020-10-09 10:22:17 -04:00
Ross Patterson
cc8c9c0bdf
Merge pull request #851 from tahoe-lafs/3464.cleanup-bbb-comments
#3455: Address feedback, BBB comments
2020-10-08 13:49:34 -07:00
Ross Patterson
95f2d53f92 chore(refs #3455) Address feedback, BBB comments
https://github.com/tahoe-lafs/tahoe-lafs/pull/845#issuecomment-704469561
2020-10-07 12:28:41 -07:00
Itamar Turner-Trauring
d519d4b2fa
Merge branch 'master' into 3463.more-immutable-python-3 2020-10-07 13:22:04 -04:00
Itamar Turner-Trauring
72cc37bb95
Merge pull request #843 from tahoe-lafs/3458.callremote-unicode
Fix callRemote unicode issues on Python 2 universally, using monkeypatching

Fixes ticket:3458
2020-10-07 13:21:19 -04:00
Itamar Turner-Trauring
af95769927 Merge branch '3458.callremote-unicode' into 3463.more-immutable-python-3 2020-10-07 09:53:30 -04:00
Itamar Turner-Trauring
a7e5847f52 News file. 2020-10-07 09:30:26 -04:00
Itamar Turner-Trauring
1a9c4232aa News file 2020-10-06 11:14:43 -04:00
Ross Patterson
e89bbe1601
Merge pull request #845 from tahoe-lafs/3455.python-3-port-node-round1
3455: Round 1 of porting `allmydata.node`
2020-10-05 08:32:28 -07:00
Itamar Turner-Trauring
a4ce3b42ef News fragment. 2020-10-05 11:01:37 -04:00
Itamar Turner-Trauring
fe6917b48b Merge remote-tracking branch 'origin/master' into 3458.callremote-unicode 2020-10-05 10:24:36 -04:00
Chad Whitacre
2fe2acf4c7
Merge pull request #842 from tahoe-lafs/3456.bye-bye-common_py3
Fold common_py3 back into other files
2020-10-05 08:03:18 -04:00
Ross Patterson
f1da68f340 feat(py3): Fix config from string compatibility
I did an audit of the code base and AFAICT the `node.config_from_string(...)` is only
used internally.  Much of that usage is in tests where most of the usages feed in
non-specific, simple `"..."` string literals (IOW, bytes under py2, unicode under py3) while one
test module used `b"..."` byte string literals.  Given all that it seems to me that the
best goal would be to use simple string literals throughout the usage of
`node.config_from_string(...)` and have only one special case in that function to handle
the difference between versions.

I just discovered that running the test with `TEST_SUITE=allmydata` doesn't run the
tests in `allmydata.test.test_node` but running them with
`TEST_SUITE=allmydata.test.test_node` does run them.  I'm trying to figure out why that
is, but in the meantime here are the differences in the Python 3 test output when
running just the `allmydata.test.test_node` tests.  This changes converts 11 tests from
errros to success, changes the specific errors for others and improves coverage a bit:

```diff
--- ../../.tox/make-test-py3-all-old.log	2020-10-01 11:56:15.428609940 -0700
+++ ../../.tox/make-test-py3-all-new.log	2020-10-01 11:56:55.052792565 -0700
@@ -95,9 +95,9 @@
     tor_provider,
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
     node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
     self.setup_logging()
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
     newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
 builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'

@@ -158,53 +158,29 @@
 (#.### secs)
 allmydata.test.test_node.TestCase.test_config_required ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestCase.test_location1 ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 112, in test_location1
-    tub_location="192.0.2.0:1234")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location1 ... [OK]
 (#.### secs)
 allmydata.test.test_node.TestCase.test_location2 ... Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 117, in test_location2
     tub_location="192.0.2.0:1234,example.org:8091")
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
     tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 65, in testing_tub
+    cert_filename='DEFAULT_CERTFILE_BLANK'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 669, in create_main_tub
+    portlocation = _tub_portlocation(config)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+    tubport = _convert_tub_port(file_tubport)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+    if re.search(r'^\d+$', s):
+  File "/usr/lib/python3.6/re.py", line 182, in search
+    return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
 [ERROR]
 (#.### secs)
-allmydata.test.test_node.TestCase.test_location_auto_and_explicit ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 142, in test_location_auto_and_explicit
-    local_addresses=["127.0.0.1", "192.0.2.0", "example.com:4321"],
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location_auto_and_explicit ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestCase.test_location_not_set ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 128, in test_location_not_set
-    local_addresses=["127.0.0.1", "192.0.2.0"],
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_location_not_set ... [OK]
 (#.### secs)
 allmydata.test.test_node.TestCase.test_logdir_is_str ... Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
@@ -215,27 +191,31 @@
     storage_broker,
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
     node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
     self.setup_logging()
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
     newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
 builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'
 [ERROR]
 (#.### secs)
 allmydata.test.test_node.TestCase.test_private_config ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 259, in test_private_config
-    config = config_from_string(basedir, "", "")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 261, in test_private_config
+    self.assertEqual(config.get_private_config("already"), "secret")
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 434, in assertEqual
+    super(_Assertions, self).assertEqual(first, second, msg)
+  File "/usr/lib/python3.6/unittest/case.py", line 829, in assertEqual
+    assertion_func(first, second, msg=msg)
+  File "/usr/lib/python3.6/unittest/case.py", line 822, in _baseAssertEqual
+    raise self.failureException(msg)
+twisted.trial.unittest.FailTest: b'secret' != 'secret'
+[FAILURE]
 (#.### secs)
 allmydata.test.test_node.TestCase.test_private_config_missing ... [OK]
 (#.### secs)
 allmydata.test.test_node.TestCase.test_private_config_unreadable ... Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 213, in test_private_config_unreadable
     config.get_or_create_private_config("foo", "contents")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 369, in get_or_create_private_config
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 374, in get_or_create_private_config
     fileutil.write(privname, value)
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/fileutil.py", line 275, in write
     f.write(data)
@@ -258,77 +238,33 @@
 (#.### secs)
 allmydata.test.test_node.TestCase.test_timestamp ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestCase.test_write_config_unwritable_file ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 288, in test_write_config_unwritable_file
-    config = config_from_string(basedir, "", "")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestCase.test_write_config_unwritable_file ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 488, in test_disabled_port_not_tub
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 506, in test_disabled_tub_not_port
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_location ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 470, in test_empty_tub_location
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_empty_tub_location ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_port ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 453, in test_empty_tub_port
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_empty_tub_port ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 439, in test_parsing_all_disabled
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled ... [OK]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_defaults ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 392, in test_parsing_defaults
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_defaults ... [OK]
 (#.### secs)
 allmydata.test.test_node.TestMissingPorts.test_parsing_location_complex ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 415, in test_parsing_location_complex
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 418, in test_parsing_location_complex
+    tubport, tublocation = _tub_portlocation(config)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+    tubport = _convert_tub_port(file_tubport)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+    if re.search(r'^\d+$', s):
+  File "/usr/lib/python3.6/re.py", line 182, in search
+    return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object
 [ERROR]
 (#.### secs)
-allmydata.test.test_node.TestMissingPorts.test_parsing_tcp ... Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 370, in test_parsing_tcp
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-[ERROR]
+allmydata.test.test_node.TestMissingPorts.test_parsing_tcp ... [OK]
 (#.### secs)

 ===============================================================================
@@ -415,9 +351,9 @@
     tor_provider,
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/introducer/server.py", line 87, in __init__
     node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
     self.setup_logging()
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
     newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
 builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'

@@ -449,6 +385,20 @@

 allmydata.test.test_node.TestCase.test_config_items
 ===============================================================================
+[FAIL]
+Traceback (most recent call last):
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 261, in test_private_config
+    self.assertEqual(config.get_private_config("already"), "secret")
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/trial/_synctest.py", line 434, in assertEqual
+    super(_Assertions, self).assertEqual(first, second, msg)
+  File "/usr/lib/python3.6/unittest/case.py", line 829, in assertEqual
+    assertion_func(first, second, msg=msg)
+  File "/usr/lib/python3.6/unittest/case.py", line 822, in _baseAssertEqual
+    raise self.failureException(msg)
+twisted.trial.unittest.FailTest: b'secret' != 'secret'
+
+allmydata.test.test_node.TestCase.test_private_config
+===============================================================================
 [ERROR]
 Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 657, in test_disabled
@@ -503,62 +453,26 @@
 ===============================================================================
 [ERROR]
 Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 112, in test_location1
-    tub_location="192.0.2.0:1234")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location1
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 117, in test_location2
     tub_location="192.0.2.0:1234,example.org:8091")
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
     tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 65, in testing_tub
+    cert_filename='DEFAULT_CERTFILE_BLANK'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 669, in create_main_tub
+    portlocation = _tub_portlocation(config)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+    tubport = _convert_tub_port(file_tubport)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+    if re.search(r'^\d+$', s):
+  File "/usr/lib/python3.6/re.py", line 182, in search
+    return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object

 allmydata.test.test_node.TestCase.test_location2
 ===============================================================================
 [ERROR]
 Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 142, in test_location_auto_and_explicit
-    local_addresses=["127.0.0.1", "192.0.2.0", "example.com:4321"],
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location_auto_and_explicit
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 128, in test_location_not_set
-    local_addresses=["127.0.0.1", "192.0.2.0"],
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 99, in _test_location
-    tub = testing_tub(config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 53, in testing_tub
-    config = config_from_string(basedir, 'DEFAULT_PORTNUMFILE_BLANK', config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_location_not_set
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 340, in test_logdir_is_str
     yield client.create_client(basedir)
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/.tox/py36-coverage/lib/python3.6/site-packages/twisted/internet/defer.py", line 1418, in _inlineCallbacks
@@ -567,9 +481,9 @@
     storage_broker,
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/client.py", line 676, in __init__
     node.Node.__init__(self, config, main_tub, control_tub, i2p_provider, tor_provider)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 734, in __init__
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 739, in __init__
     self.setup_logging()
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 826, in setup_logging
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 831, in setup_logging
     newmeth = types.UnboundMethodType(formatTimeTahoeStyle, ob, ob.__class__)
 builtins.AttributeError: module 'types' has no attribute 'UnboundMethodType'

@@ -577,19 +491,9 @@
 ===============================================================================
 [ERROR]
 Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 259, in test_private_config
-    config = config_from_string(basedir, "", "")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_private_config
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 213, in test_private_config_unreadable
     config.get_or_create_private_config("foo", "contents")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 369, in get_or_create_private_config
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 374, in get_or_create_private_config
     fileutil.write(privname, value)
   File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/util/fileutil.py", line 275, in write
     f.write(data)
@@ -607,97 +511,21 @@
 ===============================================================================
 [ERROR]
 Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 288, in test_write_config_unwritable_file
-    config = config_from_string(basedir, "", "")
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestCase.test_write_config_unwritable_file
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 488, in test_disabled_port_not_tub
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_disabled_port_not_tub
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 506, in test_disabled_tub_not_port
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_disabled_tub_not_port
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 470, in test_empty_tub_location
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_location
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 453, in test_empty_tub_port
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_empty_tub_port
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 439, in test_parsing_all_disabled
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_all_disabled
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 392, in test_parsing_defaults
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_defaults
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 415, in test_parsing_location_complex
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 418, in test_parsing_location_complex
+    tubport, tublocation = _tub_portlocation(config)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 596, in _tub_portlocation
+    tubport = _convert_tub_port(file_tubport)
+  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 552, in _convert_tub_port
+    if re.search(r'^\d+$', s):
+  File "/usr/lib/python3.6/re.py", line 182, in search
+    return _compile(pattern, flags).search(string)
+builtins.TypeError: cannot use a string pattern on a bytes-like object

 allmydata.test.test_node.TestMissingPorts.test_parsing_location_complex
-===============================================================================
-[ERROR]
-Traceback (most recent call last):
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/test/test_node.py", line 370, in test_parsing_tcp
-    config = config_from_string(self.basedir, "portnum", config_data)
-  File "/home/rpatterson/src/work/sfu/tahoe-lafs/src/allmydata/node.py", line 209, in config_from_string
-    parser.readfp(BytesIO(config_str))
-builtins.TypeError: a bytes-like object is required, not 'str'
-
-allmydata.test.test_node.TestMissingPorts.test_parsing_tcp
 -------------------------------------------------------------------------------
-Ran 34 tests in 2.788s
+Ran 34 tests in 2.516s

-FAILED (failures=4, errors=21, successes=9)
+FAILED (failures=5, errors=9, successes=20)
 Name                                                 Stmts   Miss Branch BrPart  Cover   Missing
 ------------------------------------------------------------------------------------------------
 src/allmydata/__init__.py                               16      4      0      0    75%   18-22, 28-32
@@ -751,7 +579,7 @@
 src/allmydata/mutable/repairer.py                       57     37     18      0    29%   13, 15, 17, 19, 29-34, 65-71, 74-126, 129-131
 src/allmydata/mutable/retrieve.py                      489    411    120      0    13%   29-43, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 67-69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89-90, 105-160, 164, 167-171, 174-175, 186-193, 201-208, 211-212, 223-227, 230-232, 236-254, 257-275, 278-283, 286-332, 344-354, 362-454, 485-516, 529-540, 564-578, 586-597, 607-633, 643-663, 671-699, 712-729, 738-798, 806-829, 839-889, 897-905, 909-910, 919-941, 950-971, 981-994, 999-1005
 src/allmydata/mutable/servermap.py                     623    524    198      0    12%   26-38, 41-42, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 70, 72, 74, 76, 78, 80, 82, 116-124, 130-139, 142, 145, 148, 159-161, 165, 170-172, 175, 177, 180-181, 183, 186-199, 202, 206, 213, 217-220, 225-228, 231, 234-238, 243-252, 255-259, 263-265, 269-275, 280-290, 295-305, 311-315, 320-322, 328-350, 358-363, 370-372, 379, 390-450, 454, 457-461, 466-545, 549-557, 560-575, 578-593, 596-613, 623-638, 642-779, 787, 791-799, 803-804, 816-880, 883-904, 910-914, 919-920, 928-944, 960-974, 981-998, 1002-1012, 1020-1183, 1186-1205, 1209-1225, 1228-1229
-src/allmydata/node.py                                  388    106    146     39    69%   120, 132, 190, 211-213, 241, 243-245, 278, 284, 291-295, 303-306, 315, 320, 339, 341, 361, 368, 370, 377-379, 393-396, 422, 424, 449, 453, 490, 493, 500, 511-512, 547-549, 566, 574, 581, 583, 590-591, 597, 601, 612, 622-634, 679, 681, 736-750, 756, 764, 792-805, 808-809, 814-815, 827-846, 189->190, 204->208, 240->241, 242->243, 277->278, 314->315, 319->320, 338->339, 340->341, 360->361, 365->368, 391->393, 421->422, 423->424, 448->449, 451->453, 489->490, 492->493, 499->500, 510->511, 565->566, 567->570, 573->574, 575->578, 580->581, 582->583, 585->597, 589->590, 600->601, 603->606, 610->616, 611->612, 618->622, 673->679, 680->681, 763->764, 766->768, 821->830, 823->821
+src/allmydata/node.py                                  391     87    148     30    75%   20, 125, 137, 195, 246, 248-250, 283, 289, 308-311, 320, 325, 344, 346, 366, 373, 375, 382-384, 398-401, 427, 429, 454, 458, 495, 498, 505, 516-517, 606, 617, 634-638, 684, 686, 741-755, 761, 769, 797-810, 813-814, 819-820, 832-851, 19->20, 194->195, 209->213, 245->246, 247->248, 282->283, 319->320, 324->325, 343->344, 345->346, 365->366, 370->373, 396->398, 426->427, 428->429, 453->454, 456->458, 494->495, 497->498, 504->505, 515->516, 605->606, 616->617, 627->634, 678->684, 685->686, 768->769, 771->773, 826->835, 828->826
 src/allmydata/nodemaker.py                              97     71     38      0    21%   23-33, 36, 38, 41, 44-47, 49, 53-95, 98-115, 118-125, 129-138, 141-150
 src/allmydata/scripts/admin.py                          51     31      2      0    38%   9-14, 17-21, 25, 28, 31-37, 40-46, 56-57, 59, 61-66, 74-78
 src/allmydata/scripts/backupdb.py                      146    146     14      0     0%   1-341
@@ -810,7 +638,7 @@
 src/allmydata/util/dictutil.py                          38     22     12      1    34%   16, 21-24, 27-31, 34-38, 55-56, 59-60, 63-64, 71, 77-78, 12->16
 src/allmydata/util/eliotutil.py                        115     68     24      0    35%   82-85, 91-94, 104, 117-122, 129-139, 151, 155-159, 163-167, 179-186, 198-199, 202-210, 222-226, 231-247, 250, 266-294, 308-312
 src/allmydata/util/encodingutil.py                     217    123     80     12    36%   18, 37-38, 41, 43, 52-53, 69, 75-78, 102, 108, 114-122, 130-134, 145-155, 164, 173-175, 178-181, 187, 196-213, 217-231, 237-243, 279-282, 291-296, 314, 320-322, 327, 334-340, 343-355, 358-363, 366-367, 370-373, 379, 395-405, 412-420, 423, 429, 16->18, 36->37, 40->41, 42->43, 66->69, 72->74, 74->75, 278->279, 285->295, 288->291, 299->310, 319->320
-src/allmydata/util/fileutil.py                         343    244    120     13    25%   15, 23-25, 47-55, 71-85, 96-97, 100, 103, 106, 109, 115-116, 119-125, 128, 131, 134, 137-138, 142-145, 151-153, 158, 166-176, 179-184, 201-203, 214-237, 241-244, 247-254, 262, 279, 282-290, 293-304, 326, 328, 336-342, 348, 351, 358, 366-376, 382-400, 405, 410-426, 434-462, 486-529, 548-554, 566-568, 573-604, 608-612, 615-627, 633, 636-659, 13->15, 22->23, 200->201, 259->262, 325->326, 327->328, 332->336, 345->351, 347->348, 357->358, 380->382, 404->405, 571->573
+src/allmydata/util/fileutil.py                         343    243    120     13    25%   15, 23-25, 47-55, 71-85, 96-97, 100, 103, 106, 109, 115-116, 119-125, 128, 131, 134, 137-138, 142-145, 151-153, 158, 166-176, 179-184, 201-203, 214-237, 241-244, 247-254, 262, 282-290, 293-304, 326, 328, 336-342, 348, 351, 358, 366-376, 382-400, 405, 410-426, 434-462, 486-529, 548-554, 566-568, 573-604, 608-612, 615-627, 633, 636-659, 13->15, 22->23, 200->201, 259->262, 325->326, 327->328, 332->336, 345->351, 347->348, 357->358, 380->382, 404->405, 571->573
 src/allmydata/util/gcutil.py                            23      3      8      3    81%   20, 51-57, 19->20, 50->51, 64->exit
 src/allmydata/util/happinessutil.py                     77     62     42      1    13%   15, 25-54, 64-69, 82-92, 142-183, 207-223, 235-249, 13->15
 src/allmydata/util/hashutil.py                         157     76      8      1    50%   14, 40-42, 45-46, 49-56, 60-62, 66-68, 72-76, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 174-176, 180-183, 187, 191, 195, 199, 204, 209-210, 214-215, 219, 223-228, 232, 236, 240, 244, 248-250, 254, 258, 262, 266, 270-271, 278, 282, 12->14
@@ -818,7 +646,7 @@
 src/allmydata/util/i2p_provider.py                     121     73     36      5    35%   44-67, 72-81, 85-135, 151-161, 168, 176-180, 183-184, 187, 193-216, 219, 226, 167->168, 175->176, 182->183, 186->187, 192->193
 src/allmydata/util/idlib.py                              5      2      0      0    60%   6, 9
 src/allmydata/util/iputil.py                           172     74     56     12    52%   14, 63-102, 123-140, 151-184, 209, 216, 229, 237-238, 242, 246, 254-257, 271-277, 328-329, 353-354, 13->14, 215->216, 220->242, 226->229, 234->220, 239->234, 245->246, 249->259, 265->261, 291->329, 295->328, 360->exit
-src/allmydata/util/log.py                               52     27     16      1    38%   13, 38-41, 46-48, 51-61, 67-75, 78, 12->13
+src/allmydata/util/log.py                               52     23     16      2    46%   13, 46-48, 51-61, 67-75, 78, 12->13, 39->41
 src/allmydata/util/mathutil.py                          12      3      2      1    71%   16, 25-26, 15->16
 src/allmydata/util/netstring.py                         35     24     12      1    26%   13, 31-54, 12->13
 src/allmydata/util/observer.py                          91     56     20      1    32%   14, 29-32, 36-38, 41, 44, 47, 50-54, 57-60, 63-66, 69-70, 79, 82, 93-97, 103, 106, 109, 112-113, 119-121, 134, 137-139, 142-145, 148-151, 154-157, 13->14
@@ -854,7 +682,7 @@
 src/allmydata/windows/fixups.py                        133    133     54      0     0%   1-237
 src/allmydata/windows/registry.py                       42     42     12      0     0%   1-77
 ------------------------------------------------------------------------------------------------
-TOTAL                                                27467  22018   8248    184    17%
+TOTAL                                                27470  21994   8250    176    17%

 12 files skipped due to complete coverage.
 make[#]: Leaving directory '/home/rpatterson/src/work/sfu/tahoe-lafs'
```
2020-10-04 21:52:27 -07:00
Ross Patterson
447881a0e0 feat(py3): Cleanup redundant string cast
I confirmed that `add_version(...)` itself calls `str(...)` on the argument that
`things_version` is passed in to under both the Python 2.7 and Python 3.6 version of the
library so this is unnecessary here.

This results in an empty diff in py3 tests output.
2020-10-04 15:57:01 -07:00
Jean-Paul Calderone
7fd6a9e20b news fragment 2020-10-02 11:24:35 -04:00
Ross Patterson
8355e0b712 Merge branch '3448.convert-only-unicode-to-str'
Trac: fixes #3448
2020-10-01 12:23:04 -07:00
Itamar Turner-Trauring
5899cfdabd Fix callRemote unicode issues on Python 2 universally, using monkeypatching. 2020-10-01 10:48:09 -04:00
Itamar Turner-Trauring
bdf2dcd796
Merge pull request #839 from tahoe-lafs/3453.downloader-share-python-3
Port allmydata.immutable.downloader.share to Python 3

Fixes ticket:3453
2020-10-01 09:35:25 -04:00
Chad Whitacre
9ecf9f120f Let's start here, for once 2020-09-30 22:21:59 -04:00
Ross Patterson
fb87daad0b Merge branch 'master' into 3448.convert-only-unicode-to-str 2020-09-30 11:50:42 -07:00