]> gitweb.michael.orlitzky.com - dunshire.git/log
dunshire.git
7 years agoBump to v0.1.1 and disable installation of the "test" module. 0.1.1
Michael Orlitzky [Wed, 16 Nov 2016 02:52:36 +0000 (21:52 -0500)]
Bump to v0.1.1 and disable installation of the "test" module.

7 years agoMake our description sound a little less stupid.
Michael Orlitzky [Wed, 16 Nov 2016 02:23:53 +0000 (21:23 -0500)]
Make our description sound a little less stupid.

7 years agoChange the licence from a path to "AGPLv3+" in setup.py. 0.1.0
Michael Orlitzky [Wed, 16 Nov 2016 02:19:51 +0000 (21:19 -0500)]
Change the licence from a path to "AGPLv3+" in setup.py.

7 years agoUpdate the project homepage once more.
Michael Orlitzky [Wed, 16 Nov 2016 01:13:18 +0000 (20:13 -0500)]
Update the project homepage once more.

7 years agoA bunch more doc fixes.
Michael Orlitzky [Wed, 16 Nov 2016 01:12:53 +0000 (20:12 -0500)]
A bunch more doc fixes.

7 years agoRemove redundant modules from the developer documentation.
Michael Orlitzky [Wed, 16 Nov 2016 01:12:33 +0000 (20:12 -0500)]
Remove redundant modules from the developer documentation.

7 years agoRemove package/module names and rst source links from the HTML docs.
Michael Orlitzky [Wed, 16 Nov 2016 01:12:01 +0000 (20:12 -0500)]
Remove package/module names and rst source links from the HTML docs.

7 years agoMore minor doc cleanup.
Michael Orlitzky [Wed, 16 Nov 2016 00:08:17 +0000 (19:08 -0500)]
More minor doc cleanup.

7 years agoRemove :undoc-members: flags from the User API.
Michael Orlitzky [Tue, 15 Nov 2016 16:25:28 +0000 (11:25 -0500)]
Remove :undoc-members: flags from the User API.

7 years agoClean up a bunch of docs.
Michael Orlitzky [Tue, 15 Nov 2016 16:23:12 +0000 (11:23 -0500)]
Clean up a bunch of docs.

7 years agoUse :math: in a few docstrings in the cones module.
Michael Orlitzky [Tue, 15 Nov 2016 15:58:07 +0000 (10:58 -0500)]
Use :math: in a few docstrings in the cones module.

7 years agoAdd missing examples for two methods and use math for equations.
Michael Orlitzky [Tue, 15 Nov 2016 15:57:49 +0000 (10:57 -0500)]
Add missing examples for two methods and use math for equations.

7 years agoReword two paragraphs in the overview.
Michael Orlitzky [Tue, 15 Nov 2016 15:57:26 +0000 (10:57 -0500)]
Reword two paragraphs in the overview.

7 years agoMention additional build and development requirements.
Michael Orlitzky [Tue, 15 Nov 2016 15:56:34 +0000 (10:56 -0500)]
Mention additional build and development requirements.

7 years agoOutput xhtml files instead of html ones (requires new alabaster theme).
Michael Orlitzky [Tue, 15 Nov 2016 15:56:11 +0000 (10:56 -0500)]
Output xhtml files instead of html ones (requires new alabaster theme).

7 years agoFiddle with some documentation settings and fix the LaTeX build.
Michael Orlitzky [Tue, 15 Nov 2016 14:36:33 +0000 (09:36 -0500)]
Fiddle with some documentation settings and fix the LaTeX build.

7 years agoAdd a MANIFEST.in file, and a new "make dist" target.
Michael Orlitzky [Tue, 15 Nov 2016 03:46:42 +0000 (22:46 -0500)]
Add a MANIFEST.in file, and a new "make dist" target.

7 years agoAdd the "test" package to setup.py for distribution.
Michael Orlitzky [Tue, 15 Nov 2016 03:45:25 +0000 (22:45 -0500)]
Add the "test" package to setup.py for distribution.

7 years agoFix a typo.
Michael Orlitzky [Tue, 15 Nov 2016 03:45:09 +0000 (22:45 -0500)]
Fix a typo.

7 years agoAdd some pointless fluff to my setup.py, and start at v0.1.0.
Michael Orlitzky [Tue, 15 Nov 2016 03:27:13 +0000 (22:27 -0500)]
Add some pointless fluff to my setup.py, and start at v0.1.0.

7 years agoAdd a very basic README.rst to be used as my package description on pypi.
Michael Orlitzky [Tue, 15 Nov 2016 03:26:16 +0000 (22:26 -0500)]
Add a very basic README.rst to be used as my package description on pypi.

7 years agoAdd some comments to the makefile.
Michael Orlitzky [Tue, 15 Nov 2016 03:25:34 +0000 (22:25 -0500)]
Add some comments to the makefile.

7 years agoDon't call my game a bastard.
Michael Orlitzky [Tue, 15 Nov 2016 03:21:03 +0000 (22:21 -0500)]
Don't call my game a bastard.

7 years agoAdd some more docs for the player[12]_start() methods.
Michael Orlitzky [Sun, 13 Nov 2016 21:30:03 +0000 (16:30 -0500)]
Add some more docs for the player[12]_start() methods.

7 years agoDisable all variable/method name warnings from pylint.
Michael Orlitzky [Sun, 13 Nov 2016 21:26:47 +0000 (16:26 -0500)]
Disable all variable/method name warnings from pylint.

Ain't nobody got time for this.

7 years agoAdd and update a few test case docstrings.
Michael Orlitzky [Sun, 13 Nov 2016 20:43:01 +0000 (15:43 -0500)]
Add and update a few test case docstrings.

7 years agoMake the c(), G(), and h() methods of games public.
Michael Orlitzky [Sun, 13 Nov 2016 20:32:43 +0000 (15:32 -0500)]
Make the c(), G(), and h() methods of games public.

These don't really *need* to be public, but having them available and
documented should be helpful to anyone who wants to understand how we
transform our game into a cone program.

7 years agoRemove the condition number from the game string representation.
Michael Orlitzky [Sun, 13 Nov 2016 20:26:09 +0000 (15:26 -0500)]
Remove the condition number from the game string representation.

7 years agoFix the test script to appease pylint.
Michael Orlitzky [Sun, 13 Nov 2016 20:17:45 +0000 (15:17 -0500)]
Fix the test script to appease pylint.

7 years agoAdd missing docs for two SymmetricLinearGame methods.
Michael Orlitzky [Sun, 13 Nov 2016 20:08:19 +0000 (15:08 -0500)]
Add missing docs for two SymmetricLinearGame methods.

7 years agoRename epsilon_scale() to tolerance_scale().
Michael Orlitzky [Sun, 13 Nov 2016 19:51:27 +0000 (14:51 -0500)]
Rename epsilon_scale() to tolerance_scale().

7 years agoRemove a completed TODO.
Michael Orlitzky [Sun, 13 Nov 2016 01:31:40 +0000 (20:31 -0500)]
Remove a completed TODO.

7 years agoAdd two previously-failing examples as doctests for solution().
Michael Orlitzky [Sat, 12 Nov 2016 12:53:35 +0000 (07:53 -0500)]
Add two previously-failing examples as doctests for solution().

7 years agoEnable the dual starting point and fix the test tolerance.
Michael Orlitzky [Sat, 12 Nov 2016 12:39:20 +0000 (07:39 -0500)]
Enable the dual starting point and fix the test tolerance.

We set dualstart=player2_start(), but that caused some tests to fail
as unknown or optimal but not valid. So the new epsilon_scale() method
is used to verify the primal/dual optimal in solution(). After that,
the tests of course fail, because we're accepting much more-wrong
solutions. Incorporating epsilon_scale() into the test suite fixes
that.

7 years agoAdd an epsilon_scale() method for games.
Michael Orlitzky [Sat, 12 Nov 2016 12:35:12 +0000 (07:35 -0500)]
Add an epsilon_scale() method for games.

When testing, we often need to know how lenient to be when making
comparisons. Trying to figure out just how lenient has been a huge
source of problems, and ultimately, the scaling factor (applied to
ABS_TOL) probably depends on properties of the solution.

This commit adds a new method, epsilon_scale(), that returns a safe
(very lenient) scaling factor. If things are within epsilon_scale()
times ABS_TOL, we consider then equal, or optimal, or whatever.

7 years agoAdd a cached method for games that returns the spectral norm of L.
Michael Orlitzky [Sat, 12 Nov 2016 12:34:25 +0000 (07:34 -0500)]
Add a cached method for games that returns the spectral norm of L.

7 years agoPrint a "pass" count during testing loops.
Michael Orlitzky [Fri, 11 Nov 2016 22:33:53 +0000 (17:33 -0500)]
Print a "pass" count during testing loops.

7 years agoBuild looping into the test suite and make doctests optional.
Michael Orlitzky [Fri, 11 Nov 2016 20:52:30 +0000 (15:52 -0500)]
Build looping into the test suite and make doctests optional.

7 years agoAdd two spaces to the tests to make pylint happy.
Michael Orlitzky [Fri, 11 Nov 2016 20:24:19 +0000 (15:24 -0500)]
Add two spaces to the tests to make pylint happy.

7 years agoAdd a ball_radius() method for cones and use it to compute starting points.
Michael Orlitzky [Fri, 11 Nov 2016 20:23:37 +0000 (15:23 -0500)]
Add a ball_radius() method for cones and use it to compute starting points.

7 years agoFix an example in the overview docs, and use ellipses in doctests.
Michael Orlitzky [Fri, 11 Nov 2016 20:18:03 +0000 (15:18 -0500)]
Fix an example in the overview docs, and use ellipses in doctests.

7 years agoUse "2" as a numerically-better factor in player[12]_start().
Michael Orlitzky [Fri, 11 Nov 2016 14:47:48 +0000 (09:47 -0500)]
Use "2" as a numerically-better factor in player[12]_start().

7 years agoAdd the player2_start() method and some tests for it.
Michael Orlitzky [Fri, 11 Nov 2016 14:39:59 +0000 (09:39 -0500)]
Add the player2_start() method and some tests for it.

7 years agoUse player1_start() as the primal starting point and fix some tests.
Michael Orlitzky [Fri, 11 Nov 2016 02:32:48 +0000 (21:32 -0500)]
Use player1_start() as the primal starting point and fix some tests.

7 years agoAdd the player1_start() method and two tests for it.
Michael Orlitzky [Fri, 11 Nov 2016 02:29:42 +0000 (21:29 -0500)]
Add the player1_start() method and two tests for it.

7 years agoMake the _C(), _A(), and _b() methods for games public.
Michael Orlitzky [Fri, 11 Nov 2016 02:26:31 +0000 (21:26 -0500)]
Make the _C(), _A(), and _b() methods for games public.

7 years agoReplace a few member variable references with method calls.
Michael Orlitzky [Fri, 11 Nov 2016 02:23:31 +0000 (21:23 -0500)]
Replace a few member variable references with method calls.

7 years agoAdd the specnorm() function to the matrices module.
Michael Orlitzky [Fri, 11 Nov 2016 01:23:24 +0000 (20:23 -0500)]
Add the specnorm() function to the matrices module.

7 years agoFigure out the base field automatically in condition_number().
Michael Orlitzky [Fri, 11 Nov 2016 01:22:55 +0000 (20:22 -0500)]
Figure out the base field automatically in condition_number().

7 years agoFix a mixup between e1 and e2 in the background documentation.
Michael Orlitzky [Fri, 11 Nov 2016 01:21:57 +0000 (20:21 -0500)]
Fix a mixup between e1 and e2 in the background documentation.

7 years agoAdd a "solutions don't change" test for the ice-cream cone too.
Michael Orlitzky [Thu, 10 Nov 2016 23:21:52 +0000 (18:21 -0500)]
Add a "solutions don't change" test for the ice-cream cone too.

7 years agoTest that we get the same solution if we solve the same game twice.
Michael Orlitzky [Thu, 10 Nov 2016 23:11:57 +0000 (18:11 -0500)]
Test that we get the same solution if we solve the same game twice.

7 years agoRemove the "VERBOSE" option, since you never want to change it.
Michael Orlitzky [Thu, 10 Nov 2016 22:55:40 +0000 (17:55 -0500)]
Remove the "VERBOSE" option, since you never want to change it.

7 years agoAdd a new failing test case.
Michael Orlitzky [Thu, 10 Nov 2016 22:55:12 +0000 (17:55 -0500)]
Add a new failing test case.

7 years agoUse the DEBUG_FLOAT_FORMAT when printing exception details.
Michael Orlitzky [Thu, 10 Nov 2016 21:15:30 +0000 (16:15 -0500)]
Use the DEBUG_FLOAT_FORMAT when printing exception details.

7 years agoUse modifier=4 in the orthogonality tests.
Michael Orlitzky [Thu, 10 Nov 2016 21:08:36 +0000 (16:08 -0500)]
Use modifier=4 in the orthogonality tests.

7 years agoRemove another "unknown" TODO, since those don't seem to happen any more.
Michael Orlitzky [Wed, 9 Nov 2016 14:38:53 +0000 (09:38 -0500)]
Remove another "unknown" TODO, since those don't seem to happen any more.

7 years agoRemove two TODOs that were addressed with larger fudge factors in tests.
Michael Orlitzky [Wed, 9 Nov 2016 14:38:04 +0000 (09:38 -0500)]
Remove two TODOs that were addressed with larger fudge factors in tests.

7 years agoRemove the "unknown" solution TODO, our new heuristic seems to always work.
Michael Orlitzky [Wed, 9 Nov 2016 14:37:24 +0000 (09:37 -0500)]
Remove the "unknown" solution TODO, our new heuristic seems to always work.

7 years agoRemove the "math domain error" TODO, addressed by twiddling MAX_COND.
Michael Orlitzky [Wed, 9 Nov 2016 14:36:39 +0000 (09:36 -0500)]
Remove the "math domain error" TODO, addressed by twiddling MAX_COND.

7 years agoAdd another TODO.
Michael Orlitzky [Wed, 9 Nov 2016 14:36:01 +0000 (09:36 -0500)]
Add another TODO.

7 years agoRemove a fixed TODO.
Michael Orlitzky [Wed, 9 Nov 2016 14:35:23 +0000 (09:35 -0500)]
Remove a fixed TODO.

7 years agoFix docstring formatting of the solution() method.
Michael Orlitzky [Wed, 9 Nov 2016 14:34:41 +0000 (09:34 -0500)]
Fix docstring formatting of the solution() method.

7 years agoFix some pylint warnings.
Michael Orlitzky [Wed, 9 Nov 2016 14:31:44 +0000 (09:31 -0500)]
Fix some pylint warnings.

7 years agoReplace _try_solution() with something more reliable and update tests.
Michael Orlitzky [Wed, 9 Nov 2016 14:23:23 +0000 (09:23 -0500)]
Replace _try_solution() with something more reliable and update tests.

This huge change eliminates _try_solution() entirely. It turns out
that if we just solve with the default tolerance and then *test* what
we get back (regardless of the "status" field), we do better than the
two-phase _try_solution() approach. Well, we fail less, anyway.

The code for solution is now fairly simple. It solves the problem, and
if it isn't infeasible, checks the solution for sanity: the
primal/dual values are close (within 2*ABS_TOL) and the optimal points
are in the cone. If those two things are true, we return the solution
even if CVXOPT said "unknown". This fixes two test failures, which are
now included as doctests to ensure that they can be solved.

Moreover, the value of a game is now set to be the payoff at the
optimal points. Before, we simply took the primal optimal value from
CVXOPT. That was causing some test failures though, and either one is
just as good as the other and mathematically unjustified as yet. There
were existing tests to check the payoff at the optimal points, but they
became redundant and were removed.

Finally, all of the tests have been updated to use more conservative
modifiers, not based on the condition number of the game. Some failures
are still being ironed out, but they are rare.

Note: the _c(), _h(), etc. methods on the game are now overkill since
they are only used once, but they don't hurt I guess.

7 years agoLower MAX_COND down to 125 after witnessing a failure.
Michael Orlitzky [Wed, 9 Nov 2016 14:20:07 +0000 (09:20 -0500)]
Lower MAX_COND down to 125 after witnessing a failure.

7 years agoPut the MAX_COND at 150 for now... until it causes problems.
Michael Orlitzky [Tue, 8 Nov 2016 22:42:20 +0000 (17:42 -0500)]
Put the MAX_COND at 150 for now... until it causes problems.

7 years agoUpdate the project URL.
Michael Orlitzky [Tue, 8 Nov 2016 20:02:53 +0000 (15:02 -0500)]
Update the project URL.

7 years agoAdd two small, well-conditioned games that fail solution as test cases.
Michael Orlitzky [Sun, 6 Nov 2016 13:31:54 +0000 (08:31 -0500)]
Add two small, well-conditioned games that fail solution as test cases.

7 years agoAdd a new DEBUG_FLOAT_FORMAT and use it when raising game exceptions.
Michael Orlitzky [Fri, 4 Nov 2016 23:24:24 +0000 (19:24 -0400)]
Add a new DEBUG_FLOAT_FORMAT and use it when raising game exceptions.

7 years agoAdd game accessor methods for its L, K, e1, e2, and dimension.
Michael Orlitzky [Fri, 4 Nov 2016 23:13:21 +0000 (19:13 -0400)]
Add game accessor methods for its L, K, e1, e2, and dimension.

7 years agoAdd a "checkloop" makefile target to run tests forever.
Michael Orlitzky [Fri, 4 Nov 2016 23:11:45 +0000 (19:11 -0400)]
Add a "checkloop" makefile target to run tests forever.

7 years agoFix a bug in my two-tolerance strategy and add a test case for it.
Michael Orlitzky [Fri, 4 Nov 2016 23:11:23 +0000 (19:11 -0400)]
Fix a bug in my two-tolerance strategy and add a test case for it.

7 years agoAllow longer modules in .pylintrc and ignore some new names.
Michael Orlitzky [Thu, 3 Nov 2016 22:59:53 +0000 (18:59 -0400)]
Allow longer modules in .pylintrc and ignore some new names.

7 years agoDon't pass a sole argument as a keyword.
Michael Orlitzky [Thu, 3 Nov 2016 21:02:51 +0000 (17:02 -0400)]
Don't pass a sole argument as a keyword.

7 years agoUse private methods for the rest of the CVXOPT vectors/matrices.
Michael Orlitzky [Thu, 3 Nov 2016 20:58:17 +0000 (16:58 -0400)]
Use private methods for the rest of the CVXOPT vectors/matrices.

We already had private methods for _zero(), _A(), and _G(). Now we
have them for the rest of the matrices and vectors as well. This
improves consistency, and maybe more importantly prevents people from
ever thinking it's safe to pass the same matrix to CVXOPT twice.

7 years agoAdd more docs for a few private methods and implement the do-over.
Michael Orlitzky [Thu, 3 Nov 2016 19:56:22 +0000 (15:56 -0400)]
Add more docs for a few private methods and implement the do-over.

Some examples and return type documentation were added for the
_zero(), _A(), and _G() methods of SymmetricLinearGame. The _zero()
method was also uncached, since attempting to cache _A() and _G()
revealed that CVXOPT clobbers them. The zero vector appears safe, but
let's play it safe.

This also implements a two-stage retry for the solution of a game. Our
default tolerance is now 1e-6, but when we're trying to solve a game,
we try it with 1e7 first. If we can solve it with the stricter
tolerance, then great. If not, we use the default.

7 years agoTake the condition number into account when evaluating test results.
Michael Orlitzky [Thu, 3 Nov 2016 18:29:21 +0000 (14:29 -0400)]
Take the condition number into account when evaluating test results.

This adds a ``modifier`` parameter to the assert_within_tol() method
used in the SymmetricLinearGame unit tests. The condition number of
the game is always passed in as the modifier, and that lets us allow a
larger tolerance for nasty matrices.

7 years agoPass ABS_TOL to CVXOPT when solving games.
Michael Orlitzky [Thu, 3 Nov 2016 12:08:31 +0000 (08:08 -0400)]
Pass ABS_TOL to CVXOPT when solving games.

Our ABS_TOL is less than the CVXOPT default, and it looks like using
ours reduces the number of "unknown" results that we get. So let's try
that for now.

7 years agoChange EPSILON to something more conservative in the test suite.
Michael Orlitzky [Thu, 3 Nov 2016 12:06:45 +0000 (08:06 -0400)]
Change EPSILON to something more conservative in the test suite.

The old value of EPSILON was more lenient, but the new one can
actually be justified. The tests are currently pretty reliable, but
some tolerance > EPSILON failures are still occurring so this will
probably need to be massaged some more.

7 years agoSet MAX_COND to 100 in the randomgen module to facilitate random testing.
Michael Orlitzky [Thu, 3 Nov 2016 12:06:18 +0000 (08:06 -0400)]
Set MAX_COND to 100 in the randomgen module to facilitate random testing.

7 years agoChange the default tolerance to 1e-6 to reduce unknown solutions.
Michael Orlitzky [Thu, 3 Nov 2016 12:04:42 +0000 (08:04 -0400)]
Change the default tolerance to 1e-6 to reduce unknown solutions.

7 years agoEnsure that e1,e2 are far enough inside K in random_orthant_game().
Michael Orlitzky [Tue, 1 Nov 2016 23:09:39 +0000 (19:09 -0400)]
Ensure that e1,e2 are far enough inside K in random_orthant_game().

7 years agoAdd more doctest examples to the randomgen module.
Michael Orlitzky [Tue, 1 Nov 2016 22:58:18 +0000 (18:58 -0400)]
Add more doctest examples to the randomgen module.

7 years agoUse "..." for floating point output in doctests.
Michael Orlitzky [Tue, 1 Nov 2016 22:49:56 +0000 (18:49 -0400)]
Use "..." for floating point output in doctests.

7 years agoFix typo in last commit.
Michael Orlitzky [Tue, 1 Nov 2016 22:47:22 +0000 (18:47 -0400)]
Fix typo in last commit.

7 years agoEnable doctest ELLIPSIS in a few modules.
Michael Orlitzky [Tue, 1 Nov 2016 22:45:58 +0000 (18:45 -0400)]
Enable doctest ELLIPSIS in a few modules.

7 years agoEnable docs for the new test modules and clean them up.
Michael Orlitzky [Tue, 1 Nov 2016 22:25:23 +0000 (18:25 -0400)]
Enable docs for the new test modules and clean them up.

7 years agoRemove one TODO for a failing test that was caused by a typo (fixed earlier).
Michael Orlitzky [Tue, 1 Nov 2016 22:03:35 +0000 (18:03 -0400)]
Remove one TODO for a failing test that was caused by a typo (fixed earlier).

7 years agoRemove the TODO for the dunshire.matrices tests.
Michael Orlitzky [Tue, 1 Nov 2016 22:03:08 +0000 (18:03 -0400)]
Remove the TODO for the dunshire.matrices tests.

7 years agoRename a test that I mistakenly renamed earlier.
Michael Orlitzky [Tue, 1 Nov 2016 22:02:30 +0000 (18:02 -0400)]
Rename a test that I mistakenly renamed earlier.

7 years agoImprove the two no-clobber tests with deepcopy().
Michael Orlitzky [Tue, 1 Nov 2016 22:01:51 +0000 (18:01 -0400)]
Improve the two no-clobber tests with deepcopy().

7 years agoComment my new method-rgx in .pylintrc.
Michael Orlitzky [Tue, 1 Nov 2016 21:55:27 +0000 (17:55 -0400)]
Comment my new method-rgx in .pylintrc.

7 years agoClean up and document some of the new test code.
Michael Orlitzky [Tue, 1 Nov 2016 21:54:31 +0000 (17:54 -0400)]
Clean up and document some of the new test code.

7 years agoAdd a new unit test suite for the dunshire.matrices module.
Michael Orlitzky [Tue, 1 Nov 2016 18:36:54 +0000 (14:36 -0400)]
Add a new unit test suite for the dunshire.matrices module.

7 years agoEnable and fix doctests for the new randomgen module.
Michael Orlitzky [Tue, 1 Nov 2016 17:20:05 +0000 (13:20 -0400)]
Enable and fix doctests for the new randomgen module.

7 years agoFactor out the random test generation code into a new module.
Michael Orlitzky [Tue, 1 Nov 2016 17:15:28 +0000 (13:15 -0400)]
Factor out the random test generation code into a new module.

7 years agoMake the SymmetricLinearGame.condition() method public.
Michael Orlitzky [Tue, 1 Nov 2016 17:14:50 +0000 (13:14 -0400)]
Make the SymmetricLinearGame.condition() method public.

7 years agoFix a pylint warning in the matrices module.
Michael Orlitzky [Tue, 1 Nov 2016 17:11:56 +0000 (13:11 -0400)]
Fix a pylint warning in the matrices module.

7 years agoFix a pylint warning for a top-level variable name in test/__main__.py.
Michael Orlitzky [Tue, 1 Nov 2016 17:07:08 +0000 (13:07 -0400)]
Fix a pylint warning for a top-level variable name in test/__main__.py.