-
Notifications
You must be signed in to change notification settings - Fork 0
GCI 2011 Task list
The source if this page is based on the google-malange spreadsheet.
-
Medium
- 1/function() should be printed differently by latex printer
- Add a split() method for sympy expressions
- Infinity should not be a subclass of Rational
- Pass coverage_doctest.py
- move some wikis to github.com/sympy/sympy/wiki
- either tangent_line or is_tangent is wrong
- Have re and im call expand(complex=True)
- Problem installing in Windows
- use pyflakes to identify simple bugs in sympy and fix them
- setup.py test should run the doctests even when the regular tests fail
- Fix all sphinx errors and warnings
- Create a SymPyDeprecationWarning for deprecated SymPy behavior
- Update SymPy's Wikipedia article
- (1/(x*y)).subs(x*y, whatever) doesn't work
- Add isympy -c qtconsole
- Investigate ways to improve substitution, pattern matching, etc.
- Improve our webpage
- Translate tutorial to German
- Improve the interface of SymPy Live
- Update stuff that SymPy can do on the homepage
- ``See Also`` feature in Geometry
- Fill in missing tests for sympy.physics module in test_args.py
- Create sticker for SymPy based on the logo
- Create examples/short tutorials using IPython's notebook (IPython >= 0.12)
- The dsolve solver for 1st_exact should use integration
- Implement ode solvers from the Moses "Stormy Decade" paper: Almost Linear
- Investigate a robust way to have translated documentation
- Package the latest version of SymPy for the major distributions: Debian / Ubuntu
- Research ways to extract statistics from the issue tracker
- lambdify() is not mentioned anywhere
- Investigate how to make the rewrite framework more flexible
- integrate() can not integrate the Abs() function, fix it
- Better heuristics and simplification for integral of cos(x)/sin(x)**n and similar
- sqrt(2).is_irrational is None (should be True)
-
Easy
- Check and compare an old patch concerning object with indices against current sympy
- Classifying formulas
- Bug in subs
- Documentation for the Expr class
- Move stuff from the Google Code SVN to git
- sympy development rules
- List of dependencies
- Document why unpickling a singleton doesn't return the singleton object with protocol 0 and 1
- integrate() should use the ode module's undetermined coefficients solver when possible
- SymPy's readthedocs documentation is broken
- Check for incorrect usage of expr.atoms() and change it to free_symbols
- Clean up test_lambdify.py
- Use "with open" instead of "open … close"
- Remove bare except statements
- Import all public functions and classes into Sphinx: polys
- Update isympy manpage
- Unicode Sigma for pretty printed Sum
- The Product() class should not evaluate by default
- Refactor GA* documentation to use doctests (or move it to examples/)
- det() is called when inverting matrix through GE
- latex(symbol_names) not working with ~x
- Fix the SymPy Logo
- Make video tutorials for SymPy
- ``See Also`` feature in Number Theory
- ``See Also`` feature in Combinotorics
- ``See Also`` feature in integrals
- ``See Also`` feature in functions
- ``See Also`` feature in functions/special
- ``See Also`` feature in Matrices
- Use \functionname instead of \operatorname{functionname} whenever possible
- Commented out tests should be XFAILed
- Translate our webpage to German
- Translate our webpage to French
- Translate our webpage to Czech
- Translate our webpage to Polish
- Translate our webpage to Bulgarian
- Translate our webpage to Russian
- Translate our webpage to Serbian
- Flesh out the SymPy Papers wiki page
- Add more tips to the tips page (10 tips)
- Parts of the pyglet plotting module does not follow PEP 8, fix it
- Make sure all the built-in __methods__ are defined
- checkodesol() should use force=True
- Move the KroneckerDelta class to another module
- Integral.transform should allow a change to a different variable
- Pretty print Product
- Fix the occasions where functions are called with wrong name and write tests
- Remove dead code from _eval_subs()
-
Hard
- Square root denesting
- bin/test --random should also shuffle tests inside a file
- SymPy Cheat Sheet
- Objects that know how to combine themselves
- LaTeX input
- live.sympy.org isn't so easy to use on a mobile device
- Piecewise should use a different syntax for "otherwise"
- Research ways to do the assumptions system, including removing the old system
- Add a feed of what people are doing at SymPy Live
- Write a document showing the difference between SymPy and other mathematical systems: Maple
- Some UI/GUI for the test runner
- Implement the trigsimp algorithm by fu et al
- minpoly should work with roots of unity in exponential form
- Allow to manage slow tests better with our test runner
- Investigate how to employ complexity measures in functions like trigsimp(), etc.
- coverage testing should be part of the bot test
- Fix failures found by shuffling tests in test file
2784 - 1/function() should be printed differently by latex printer
Please see http://code.google.com/p/sympy/issues/detail?id=2784 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
>>> latex(1/cos(x))
\operatorname{cos}^{-1}\left(x\right)
>>> pprint(1/cos(x))
1
──────
cos(x)
should output \frac{1}{\operator ...}
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Easy, Printing, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
363 - Add a split() method for sympy expressions
Please see http://code.google.com/p/sympy/issues/detail?id=363 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I think a method that does the opposite of reduce(operator, [x,y,...]) would be useful. Something like this:
>>> (x+y+z).split('+')
(x, y+z)
>>> (x+y+z).split('+', flatten=True)
(x, y, z)
Various keyword arguments could be added for whether to split rational numbers, etc. With such options, split() could replace several existing methods like as_coefficient, as_independent, as_base_exp, as_numer_denom, etc. It is better to only have to remember a single method.
Using an operator symbol like '+' as argument instead of a class is my preference as it would be more readable and more versatile ('/' can be used even though we have no Div class).
A method like this would be especially useful if Add and Mul are changed as discussed in issue 362: Possible speed improvements to core, as its interface would be independent of the underlying representation.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, CodeInImportedIntoSpreadsheet, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
281 - Infinity should not be a subclass of Rational
Please see http://code.google.com/p/sympy/issues/detail?id=281 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
>>> isinstance(oo, Rational)
True
>>> oo.is_rational
True
This is clearly wrong. Infinity is not a rational number.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, CodeInImportedIntoSpreadsheet, Milestone-Release0.7.3, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
294 - Pass coverage_doctest.py
Please see http://code.google.com/p/sympy/issues/detail?id=294 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I think there should soon be documentation in the code for most, if not all, of the classes and functions, even if it is only a single line. This can be useful for both the generated API documentation, and through interactive help (i.e., the help() command in an interactive Python session). If there is a need for this, I am fine going through all of the code and documenting everything, or getting a good start on it.
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Documentation, GHOP, NeedsReview, Priority-Medium, Type-Enhancement, asmeurer
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
707 - move some wikis to github.com/sympy/sympy/wiki
Please see http://code.google.com/p/sympy/issues/detail?id=707 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Move all wikis from code.google.com to github. So that we have just one source of documentation to reduce confusion.
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Documentation, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
716 - either tangent_line or is_tangent is wrong
Please see http://code.google.com/p/sympy/issues/detail?id=716 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
In [1]: e = Ellipse(Point(0,0), 3, 2)
In [2]: t = e.tangent_line(e.random_point())
In [3]: e.is_tangent(t)
Out[3]: False
Obviously [2] and [3] are in contradiction. By plotting the result, [2] is most probably right, so [3] is wrong.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
754 - Have re and im call expand(complex=True)
Please see http://code.google.com/p/sympy/issues/detail?id=754 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Here is a nice integral that SymPy is able to compute:
>>> from sympy import *
>>> var('y')
y
>>> a = integrate((16*y-16)/(y**4-2*y**3+4*y-4), (y, 0, 1))
>>> a = simplify(a)
>>> pprint(a)
___
-2*log(2) + 2*pi + 2*log(1 + I) + 2*log(1 + \/ 2 ) + 2*log(1 - I) + 2*log(1 -
___
\/ 2 ) - 2*pi*I - 2*I*log(1 - I) + 2*I*log(1 + I)
Simplifying the answer by hand is straightforward (add up the real and imaginary parts), but unfortunately, SymPy is unable to do this. (It also fails to produce a numerical value: a.evalf() -> ValueError.) It seems that currently re and as_real_imag don't know anything about logarithms.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, EasyToFix, Integration, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1235 - Problem installing in Windows
Please see http://code.google.com/p/sympy/issues/detail?id=1235 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I've downloaded the Windows installer, and tries to run the program - but I get an error message: "No Python information found in the registry". But I have Python installed.
This is what I get when running the Python command in the command line:
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
The problem is that we need someone with a 64-bit Windows machine to volunteer to do it (see #16).
- Category: Research
- Time to complete: 96 hours
CodeInCategory-Research, CodeInDifficulty-Medium, Milestone-Release0.7.1, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1456 - use pyflakes to identify simple bugs in sympy and fix them
Please see http://code.google.com/p/sympy/issues/detail?id=1456 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): Pick a good sized module in SymPy (i.e., one of the subdirectories of the sympy/ directory, but not one of the ones that only has a few files in it).
Example:
$ sudo apt-get install pyflakes
$ pyflakes sympy/integrals/
sympy/integrals/integrals.py:10: 'limit' imported but unused
sympy/integrals/integrals.py:13: 'DiracDelta' imported but unused
sympy/integrals/integrals.py:13: 'Heaviside' imported but unused
it finds (among other things) that the Heaviside is imported but never used, so it should be removed.
There is also pychecker, which shows a lot of things similar to this (I can't get pyflakes to work, so I can't say if it does more or not). You can just install and run pychecker sympy --limit 1000 to see them all (it takes a few minutes to run).
Note that there are lots of warnings coming from polys/densepolys.py, polys/densetools.py and polys/sparsepolys.py, but these modules are known not to work, cf. issue 2371.
- Category: QualityAssurance
- Labels: EasyToFix, Priority-Medium, Type-Defect
- Time to complete: 96 hours
Pick a good sized module in SymPy (i.e., one of the subdirectories of the sympy/ directory, but not one of the ones that only has a few files in it).
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1752 - setup.py test should run the doctests even when the regular tests fail
Please see http://code.google.com/p/sympy/issues/detail?id=1752 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Two things annoy me about ./setup.py test
. First, if a regular test fails, then it does not run the
doctests. But this is supposed to be a shortcut to both the regular tests and the doctests in one.
Second, if you keyboard interrupt during the tests, it then proceeds to run the doctests. But when I
keyboard interrupt, I want it to stop the whole script.
I don't know how easy it would be to change the second item, but the first one should be fixable.
- Category: QualityAssurance
- Time to complete: 96 hours
CodeInCategory-QA, CodeInDifficulty-Medium, EasyToFix, Priority-High, Testing, Type-Defect
2470 - Fix all sphinx errors and warnings
Please see http://code.google.com/p/sympy/issues/detail?id=2470 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Currently when we issue:
$ cd doc
$ make html
we get a lot of errors/warnings related to improper syntax in documentation and docstrings:
sympy/doc/src/aboutus.txt:: (WARNING/2) Duplicate explicit target name: "more info".
sympy/sympy/core/basic.py:docstring of sympy.core.basic.Basic.atoms:13: (ERROR/3) Inconsistent literal block quoting.
...
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2513 - Create a SymPyDeprecationWarning for deprecated SymPy behavior
Please see http://code.google.com/p/sympy/issues/detail?id=2513 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
DeprecationWarning is turned off by default in Python 2.7, so all of our deprecated behavior that we deprecate with DeprecationWarning is not shown to the majority of our users (unless they are specifically looking for it, they won't find it). This was done because most users of Python programs can't do anything if the program uses deprecated behavior, so they don't care to see the warning. But I think most developers don't really do a good job of turning the warnings on, unfortunately.
I think we should create a SymPyDeprecationWarning that subclasses from DeprecationWarning, but is turned on by default in isympy. See issue 2142. That way, users of scripts that use sympy won't be bothered by them, but people who use isympy, who should be bothered by them in my opinion, will be. This will likely also include the developers of most of those scripts.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2528 - Update SymPy's Wikipedia article
Please see http://code.google.com/p/sympy/issues/detail?id=2528 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I just noticed that http://en.wikipedia.org/wiki/SymPy is a little old with its information. None of it is wrong, but I think the features list could be updated. It seems to be roughly the same as the features listed at sympy.org and http://code.google.com/p/sympy/, so perhaps those should be updated too.
Also, SymPy's stuff at http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems should be updated. I did notice some of that is wrong.
- Category: Outreach
- Time to complete: 96 hours
CodeInCategory-Outreach, CodeInDifficulty-Medium, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2552 - (1/(xy)).subs(xy, whatever) doesn't work
Please see http://code.google.com/p/sympy/issues/detail?id=2552 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): This is doesn't work >>> (1/(xy)).subs(xy, 2);1/(xy). Because >>> (1/(xy)).args; (1/x, 1/y) automatically changed in Mul class
Incorrect example:
>>> (1/(x*y)).subs(x*y, 2)
1
───
x⋅y
This is doesn't work because
>>> (1/(x*y)).args
(1/x, 1/y)
automatically changed in Mul class
- Category: Code
- Labels: Priority-High, Type-Defect
- Time to complete: 96 hours
This is doesn't work >>> (1/(xy)).subs(xy, 2);1/(xy). Because >>> (1/(xy)).args; (1/x, 1/y) automatically changed in Mul class
2632 - Add isympy -c qtconsole
Please see http://code.google.com/p/sympy/issues/detail?id=2632 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
You can open the IPython qtconsole with a sympy session by typing IPython qtconsole --profile=sympy
, but you should also be able to do it by typing isympy -c ipython-qtconsole
. Unlike the former, the latter should perhaps not rely on IPython's built-in sympy profile to work.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, Printing, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2762 - Investigate ways to improve substitution, pattern matching, etc.
Please see http://code.google.com/p/sympy/issues/detail?id=2762 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
This is related to issue 2026 and this thread on the mailing list. The subs mechanism should be refactored so that it is more flexible. Also, I believe it should be using the same thing internally as the pattern matching.
The (Code-In) task here is to study this problem and discuss optimal ways to solve it. You may also try implementing this (if we agree upon a good solution), perhaps as a separate task.
- Category: Research
- Time to complete: 96 hours
CodeInCategory-Research, CodeInDifficulty-Medium, Matching, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2764 - Improve our webpage
Please see http://code.google.com/p/sympy/issues/detail?id=2764 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Our webpage at http://sympy.org/ could probably be made nicer, like with some nice CSS or html5. The code is at https://github.com/sympy/sympy.github.com Also, it maybe could use better examples/explanation of what SymPy is.
- Category: Outreach
- Time to complete: 96 hours
CodeInCategory-Outreach, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2766 - Translate tutorial to German
Please see http://code.google.com/p/sympy/issues/detail?id=2766 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days. Please contact us before starting a translation task, to make sure that someone is available to verify the translation.
The tutorial should be translated into various languages, e.g., Czech, Polish, French, German, etc.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 96 hours
We only have one person available per language, so review may take a few days. Please contact us before starting a translation task, to make sure that someone is available to verify the translation.
- Mentors: Aaron Meurer
2767 - Improve the interface of SymPy Live
Please see http://code.google.com/p/sympy/issues/detail?id=2767 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The interface at live.sympy.org should be improved, so that it looks and feels nicer, perhaps using some more advanced html5/css, etc.
- Category: User Interface
- Time to complete: 96 hours
CodeInCategory-UI, CodeInDifficulty-Medium, Live, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2770 - Update stuff that SymPy can do on the homepage
Please see http://code.google.com/p/sympy/issues/detail?id=2770 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The list of things that SymPy can do on the homepage is not up to date, because we can actually do a lot more things than that. This should be updated.
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2779 - See Also
feature in Geometry
Please see http://code.google.com/p/sympy/issues/detail?id=2779 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/geometry/curve.py
sympy/geometry/ellipse.py
sympy/geometry/entity.py
sympy/geometry/exceptions.py
sympy/geometry/__init__.py
sympy/geometry/line.py
sympy/geometry/point.py
sympy/geometry/polygon.py
sympy/geometry/util.py
There are around 150 functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2786 - Fill in missing tests for sympy.physics module in test_args.py
Please see http://code.google.com/p/sympy/issues/detail?id=2786 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
All tests decorated with @SKIP("TODO: sympy.physics") must be fixed.
- Category: QualityAssurance
- Time to complete: 96 hours
CodeInCategory-QA, CodeInDifficulty-Medium, Core, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2787 - Create sticker for SymPy based on the logo
Please see http://code.google.com/p/sympy/issues/detail?id=2787 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The sticker should contain SymPy's logo [1], project name and description. Alternative version may skip description. Sticker must be in SVG format.
[1] http://code.google.com/p/sympy/source/browse/#svn%2Fmaterials%2Flogo
- Category: Outreach
- Time to complete: 96 hours
CodeInCategory-Outreach, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2790 - Create examples/short tutorials using IPython's notebook (IPython >= 0.12)
Please see http://code.google.com/p/sympy/issues/detail?id=2790 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Examples/short tutorials should show how to use SymPy to solve illustrative problems in high school mathematics/physics. Notebooks must contain code split into logical blocks, text cells with problem description and references to other materials, books, videos, etc.
-
Category: Training
-
Labels: Priority-Medium, Type-Defect
-
Time to complete: 96 hours
-
Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2793 - The dsolve solver for 1st_exact should use integration
Please see http://code.google.com/p/sympy/issues/detail?id=2793 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The method used by the 1st_exact solver is a nice one to use by hand, but it's kind of flaky. I didn't realize at the time of writing it that you can actually express the solution using integrals without introducing parameters or dummy integration limits. This solution is given in Table II of the paper "Symbolic Integration: The Stormy Decade" by Joel Moses. I was able to download this paper for free from Google Scholar. If you cannot access it and are interested in fixing this issue, contact me and I will send it to you.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2794 - Implement ode solvers from the Moses "Stormy Decade" paper: Almost Linear
Please see http://code.google.com/p/sympy/issues/detail?id=2794 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): There is a guide at the top of ode.py on how to add new solvers.
See Table II of the paper "Symbolic Integration: The Stormy Decade" by Joel Moses. Some of these are not implemented yet, in particular, the last three.
I was able to download this paper for free from Google Scholar. If you cannot access it and are interested in fixing this issue, contact me and I will send it to you.
See also issue 2793.
Each solver should be a separate Code-In task.
- Category: Code
- Labels: Priority-Medium, Type-Defect
- Time to complete: 96 hours
There is a guide at the top of ode.py on how to add new solvers.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2795 - Investigate a robust way to have translated documentation
Please see http://code.google.com/p/sympy/issues/detail?id=2795 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Some of the Code-In tasks include translating our documentation to different languages. If this happens, we would need a way to manage all of these files (we might have many languages, after all). It's also important to know when and how much are these files out of date (as they eventually will be). Usually, GUI applications use gettext and have tons of .po files lying around, but I'm not sure that's the right approach for us. Marking this as a Code-In Research task.
- Category: Research
- Time to complete: 96 hours
CodeInCategory-Research, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2796 - Package the latest version of SymPy for the major distributions: Debian / Ubuntu
Please see http://code.google.com/p/sympy/issues/detail?id=2796 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Most distributions have old versions of SymPy packaged (or none at all, eg. openSUSE). These should be updated to the latest version of SymPy (0.7.1 as of now). Ideally, the scripts used to generate these packages should also be saved and uploaded somewhere, so it will be easier to update them to newer versions. I'm marking this for Code-In, but consider that each major distro could be a separate task.
This most likely means deleting the bundled mpmath/ and making SymPy play nice with the distro-provided version.
- Category: Outreach
- Time to complete: 96 hours
CodeInCategory-Outreach, CodeInDifficulty-Medium, CodeInMultiple, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2798 - Research ways to extract statistics from the issue tracker
Please see http://code.google.com/p/sympy/issues/detail?id=2798 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The issue tracker can provide some valuable statistics about the health of the project - it might be interesting to graph the number of open issues, number of issues per category, the average "age" of the (closed/open) issues, who closes the most issues, the number of issue reports by users (as opposed to developers of SymPy) etc. This likely involves interfacing somehow with the Google API.
- Category: Research
- Time to complete: 96 hours
CodeInCategory-Research, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2801 - lambdify() is not mentioned anywhere
Please see http://code.google.com/p/sympy/issues/detail?id=2801 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
lambdify() is one of most important functions in SymPy (for interoperability with numerical libraries the most important). However it's not mentioned anywhere, although it has a good docstring. The result of git grep
stands for itself:
$ git grep lambdify doc/ doc/src/aboutus.txt:#. Sebastian Krämer: implemented lambdify/numpy/mpmath cooperation, bug fixes, refactoring, lambdifying of matrices, large printing refactoring and bugfixes doc/src/aboutus.txt:#. Andrew Straw: lambdify() improvements doc/src/aboutus.txt:#. Matthew Brett: fixes to lambdify doc/src/modules/physics/mechanics/examples.txt:maximum recursion depth being exceeded; I also tried lambdifying this, and it
lambdify's docstring must be pulled into docs (there is already a generic issue for this), but we also need a good tutorial showing users how to cooperate with NumPy, SciPy etc. This issue (not the only one by the way) was pointed out to me by Fernando Perez during my stay at Berkeley this week, when trying to solve a practical symbolic-numeric problem. SymPy has already a lot of features, but unfortunately most of them are deeply buried in the internals of SymPy and known only to its developers. Also we have to check what does ufuncify() do, because it was reported to me that it's extremely slow.
- Category: Documentation
- Time to complete: 96 hours
CodeInCategory-Documentation, CodeInDifficulty-Medium, Documentation, Priority-Critical, Type-Defect, Milestone-Release0.7.2
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2803 - Investigate how to make the rewrite framework more flexible
Please see http://code.google.com/p/sympy/issues/detail?id=2803 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Currently, the rewrite framework only allows expr.rewrite(function)
(e.g., cos(x).rewrite(exp)
), and it implements only one rule per function pair. This should be made more general. Sometimes, you can't express a rewrite rule with just a function. Other times, there is more than one way to rewrite one function in terms of another (for example cos(x) == sqrt(1 - sin(x)) == sin(pi/2 - x)
).
The issue is to consider ways to make the rewrite framework stronger, but still modular like it is now (so it's easily extensible).
- Category: Research
- Time to complete: 96 hours
CodeInCategory-Research, CodeInDifficulty-Medium, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2841 - integrate() can not integrate the Abs() function, fix it
Please see http://code.google.com/p/sympy/issues/detail?id=2841 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): Marking as Code-In difficulty medium as there is no idea why this is happening.
In Dev version
>>> import sympy
>>> x = sympy.Symbol('x')
>>> i = sympy.integrate(sympy.Abs(x), (x, -1, 1))
>>> i.n()
/env/src/sympy/sympy/mpmath/libmp/libmpf.pyc in mpf_abs(s, prec, rnd)
653 precision. The prec argument can be omitted to generate an
654 exact result."""
--> 655 sign, man, exp, bc = s
656 if (not man) and exp:
657 if s == fninf:
TypeError: 'NoneType' object is not iterable
- Category: Code
- Labels: Integration, Priority-Medium, Type-Defect
- Time to complete: 96 hours
Marking as Code-In difficulty medium as there is no idea why this is happening.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2849 - Better heuristics and simplification for integral of cos(x)/sin(x)**n and similar
Please see http://code.google.com/p/sympy/issues/detail?id=2849 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The result of integrate(cos(x)/sin(x)**n, x)
is
"nice", if n is even, and "ugly", if n is odd
(n is an integer, greater than 1).
Moreover, if n is odd, then diff(integrate(cos(x)/sin(x)**n, x), x)
gives a very ugly expression that cannot be converted back to
cos(x)/sin(x)**n
by simplify.
Example:
>>> diff(integrate(cos(x)/sin(x)**7, x), x)
5 3
36⋅sin(x)⋅cos (x) - 72⋅sin(x)⋅cos (x) + 36⋅sin(x)⋅cos(x)
────────────────────────────────────────────────────────
2
⎛ 6 4 2 ⎞
⎝6⋅cos (x) - 18⋅cos (x) + 18⋅cos (x) - 6⎠
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, CodeInImportedIntoSpreadsheet, Integration, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2857 - sqrt(2).is_irrational is None (should be True)
Please see http://code.google.com/p/sympy/issues/detail?id=2857 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
It seems that sqrt(2).is_irrational should return True
Also, in a recent commit (ebe8a7e) it is noted that Add and Mul's implementation was faulty:
The function used to return True if any factor was irrational.
This is nonsense: neither I*pi, nor sqrt(8)/sqrt(2) are irrational.
[One might argue about I*pi, but irrational implies real under the
current assumptions system.]
We now return True iff there is exactly one irrational factor and
all other factors are rational.
In a Mul, any irrationals join together if their args are Rationals:
>>> sqrt(2)*sqrt(5)
sqrt(10)
>>> sqrt(S.Half)*sqrt(3)
sqrt(6)/2
>>> sqrt(2)*sqrt(2+sqrt(3))
sqrt(2)*sqrt(sqrt(3) + 2)
So the argument about sqrt(8)/sqrt(2)
doesn't apply. But it does make sense that the only way you can know that something is irrational is to have only one irrational factor since something like sqrt(2+sqrt(3))*sqrt(2-sqrt(3))
might appear irrational with two irrational factors, but this is just a fancy 1:
>>> sqrt(2-sqrt(3))*sqrt(2+sqrt(3))
sqrt(-sqrt(3) + 2)*sqrt(sqrt(3) + 2)
>>> _.n()
1.00000000000000
Perhaps the routine could see if all irrationals present have a Number argument so sqrt(2)*root(3,3)
could give True for is_irrational.
The same sort of problems exist for Add: while sqrt(2) + sqrt(6)
is definitely irrational (though sympy gives None for the answer); something like sqrt(2)/3 + sqrt(-6*sqrt(2) + 11)/3
is, again, just a fancy 1.
- Category: Code
- Time to complete: 96 hours
CodeInCategory-Code, CodeInDifficulty-Medium, CodeInImportedIntoSpreadsheet, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
16 - Check and compare an old patch concerning object with indices against current sympy
Please see http://code.google.com/p/sympy/issues/detail?id=16 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): Check out comment 32 in the bug report.
Let's get inspired by ginac. This code should make it easy to compute for example einstein equations from the (symbolic) metric tensor. We can do it already now, but it would be nice to type in equations in the index form as found in the general relativity books and then just plug in a symbolic matrix for the metric tensor, and it would figure all the rest by itself.
- Category: Documentation
- Labels: EasyToFix, Matrices, Priority-Medium, Type-Enhancement
- Time to complete: 48 hours
Check out comment 32 in the bug report.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1058 - Classifying formulas
Please see http://code.google.com/p/sympy/issues/detail?id=1058 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Finish this innovation.
I've written some code for determining the "class" of a formula. The function classify(expr, x) walks the expression top-down and at each level classifies it as a function of x. It distinguishes between various classes of functions, including:
- linear expressions
- polynomials (degree > 1)
- rational functions
- algebraic roots
- exponentials
- logarithms
- trigonometric functions
- etc
It then recursively classifies all subexpressions and returns the path with the "greatest" complexity. The following test outputs should hopefully make it more clear:
pi []
1 + 3*x [LINEAR]
3*x + x**2 [POLYNOMIAL]
2*x + exp(1 + 2*x) + exp(4 + 3*x) [LINEAR, EXP, LINEAR]
2*x + (exp(3*x) + exp(1 + x))/(1 + 5*x) [RATIONAL, EXP, LINEAR]
2*x + sin(1 + 2*x)**2 + cos(4 + x)**4 [POLYNOMIAL, TRIGONOMETRIC, LINEAR]
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, Priority-Medium, Type-Enhancement
1616 - Bug in subs
Please see http://code.google.com/p/sympy/issues/detail?id=1616 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
>>> c2,c3,q1p,q2p,c1,s1,s2,s3= symbols('c2 c3 q1p q2p c1 s1 s2 s3')
>>> test=c2**2*q2p*c3 + c1**2*s2**2*q2p*c3 + s1**2*s2**2*q2p*c3 -
c1**2*q1p*c2*s3 - s1**2*q1p*c2*s3
>>> test.subs({c1**2 : 1-s1**2, c2**2 : 1-s2**2, c3**3: 1-s3**2})
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (22, 0))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (96, 0))
- Category: QualityAssurance
- Time to complete: 48 hours
CodeInCategory-QA, CodeInDifficulty-Easy, EasyToFix, Matching, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1886 - Documentation for the Expr class
Please see http://code.google.com/p/sympy/issues/detail?id=1886 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Expr needs a docstring. The split between Basic and Expr must be explained.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2115 - Move stuff from the Google Code SVN to git
Please see http://code.google.com/p/sympy/issues/detail?id=2115 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Everything from here http://code.google.com/p/sympy/source/browse/ needs to be moved either to the GitHub wiki or the main repo. Details on how to checkout the files on your computer are here: http://code.google.com/p/sympy/source/checkout. Does anyone know how to transfer svn to git without losing the history?
By the way, this includes the Google Code wiki pages in it.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2157 - sympy development rules
Please see http://code.google.com/p/sympy/issues/detail?id=2157 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I think there is a consensus about the requirements for inclusion of a (nontrivial) patch in sympy:
- All tests have to pass. (Include new tests for new features.)
- The patch has to be positively reviewed by someone else. (If there a objections, a consensus has to be reached.)
- Wait at least 24 hours before pushing it in.
I think it should be easily accessible from the website 1, probably from the README too. It should be clear to newcomers that not only contribution is very welcome, but also reviewing patches. (The latter currently lacks somewhat imho.) People new to sympy should not be afraid to review patches.
Maybe there should even be a short how-to about reviewing patches.
- Category: Training
- Time to complete: 48 hours
CodeInCategory-Training, CodeInDifficulty-Easy, Documentation, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2160 - List of dependencies
Please see http://code.google.com/p/sympy/issues/detail?id=2160 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
We should include in the README, and probably in the docs somewhere too, a list of all the "dependencies" of SymPy. Now, obviously, SymPy's only dependency is Python, but there are several optional dependencies like IPython and gmpy that are not required but extent the capabilities of SymPy if they are installed.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2204 - Document why unpickling a singleton doesn't return the singleton object with protocol 0 and 1
Please see http://code.google.com/p/sympy/issues/detail?id=2204 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
After pickling and unpickling pi
, a simple cos(pi)
no longer nicely simplifies to -1 on its own (it does if you nsimplify it)
Code:
$ cat test.py
from sympy import *
from pickle import *
mypkl = open('test.pkl', 'wb')
dump(pi, mypkl)
mypkl.close()
mypkl = open('test.pkl', 'rb')
picklepi = load(mypkl)
mypkl.close()
print cos(pi)
print cos(picklepi)
print nsimplify(cos(picklepi))
Output:
$ python test.py
-1
cos(pi)
-1
Expected output:
-1
-1
-1
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Documentation, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2276 - integrate() should use the ode module's undetermined coefficients solver when possible
Please see http://code.google.com/p/sympy/issues/detail?id=2276 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
So my comment 8 from issue 2219 made me realize something. Consider the following:
>>> integrate(x**2*exp(x)*sin(x), x)
x 2 x x 2 x
ℯ ⋅sin(x) x ⋅ℯ ⋅sin(x) cos(x)⋅ℯ x x ⋅cos(x)⋅ℯ
- ───────── + ──────────── - ───────── + x⋅cos(x)⋅ℯ - ────────────
2 2 2 2
>>> dsolve(f(x).diff(x) - x**2*exp(x)*sin(x), f(x), hint='nth_linear_constant_coeff_undetermined_coefficients')
x 2 x x 2 x
ℯ ⋅sin(x) x ⋅ℯ ⋅sin(x) cos(x)⋅ℯ x x ⋅cos(x)⋅ℯ
f(x) = C₁ - ───────── + ──────────── - ───────── + x⋅cos(x)⋅ℯ - ────────────
2 2 2 2
>>> %timeit integrate(x**2*exp(x)*sin(x), x)
1 loops, best of 3: 10.7 s per loop
>>> %timeit dsolve(f(x).diff(x) - x**2*exp(x)*sin(x), f(x), hint='nth_linear_constant_coeff_undetermined_coefficients')
1 loops, best of 3: 232 ms per loop
dsolve()
is way faster because it just computes the necessary form of the integral and solves for the undetermined coefficients. No complicated integration algorithm is needed.
So I think if the integral has the correct form, that internally integrate(expr, x, x, ...)
should use dsolve's internal undetermined coefficient algorithms for solving f(x).diff(x, x, …)
- expr. All the necessary stuff is already in ode.py, including the function that checks if expr is of the correct form.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, EasyToFix, Integration, Priority-Medium, Solvers, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2367 - SymPy's readthedocs documentation is broken
Please see http://code.google.com/p/sympy/issues/detail?id=2367 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
See http://readthedocs.org/docs/sympy/en/latest/ It just shows
""" This is an automaticaly generated API documentation from SymPy sources.
Click the “modules” (Module Index) link in the top right corner to browse the modules.
Or click the “index” to see an index of all SymPy functions, methods and classes. """
and that's it.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, Documentation, EasyToFix, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2427 - Check for incorrect usage of expr.atoms() and change it to free_symbols
Please see http://code.google.com/p/sympy/issues/detail?id=2427 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
If any code wants to know if there are variables that are free like x
but not y
in Integral(y, (y, 1, x))
then it should use expr.free_symbols, not .atoms(Symbol)
(since that would have given x and y for the example given). The code should be checked for instances of .atoms(Symbol)
to see what the author intended and corrected if necessary.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2493 - Clean up test_lambdify.py
Please see http://code.google.com/p/sympy/issues/detail?id=2493 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
test_lambdify.py
has a bunch of try blocks that should be using raises()
.
- Category: QualityAssurance
- Time to complete: 48 hours
CodeInCategory-QA, CodeInDifficulty-Easy, EasyToFix, Priority-Medium, Testing, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2534 - Use "with open" instead of "open … close"
Please see http://code.google.com/p/sympy/issues/detail?id=2534 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Now that we don't support Python 2.4, we can use with statement context managers. One of the best places to use this is when opening a file. You can do
with open(file) as f:
do stuff
instead of
f = open(file)
do stuff
f.close()
And it's not only more readable, but also the with statement context manager will automatically close the file, even if an exception is raised.
There are a handful of places in the code where we open() stuff (do git grep "open("). Remember that to support the with statement in Python 2.5, you have to add "from future import with_statement" to the top of the file.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2570 - Remove bare except statements
Please see http://code.google.com/p/sympy/issues/detail?id=2570 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
If you do git grep "except:" you will see that there are several places in the code with bare except statements that should be rewritten to catch explicit exceptions. To quote the Zen of Python:
Errors should never pass silently. Unless explicitly silenced.
And to quite PEP 8:
- When catching exceptions, mention specific exceptions
whenever possible instead of using a bare 'except:' clause.
For example, use:
try:
import platform_specific_module
except ImportError:
platform_specific_module = None
A bare 'except:' clause will catch SystemExit and KeyboardInterrupt
exceptions, making it harder to interrupt a program with Control-C,
and can disguise other problems. If you want to catch all
exceptions that signal program errors, use 'except Exception:'.
A good rule of thumb is to limit use of bare 'except' clauses to two
cases:
1) If the exception handler will be printing out or logging
the traceback; at least the user will be aware that an
error has occurred.
2) If the code needs to do some cleanup work, but then lets
the exception propagate upwards with 'raise'.
'try...finally' is a better way to handle this case.
To be sure, some of the bare except cases in the code are correct by the above (like the ones in the test runner), but many are not.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2597 - Import all public functions and classes into Sphinx: polys
Please see http://code.google.com/p/sympy/issues/detail?id=2597 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): This task is marked as easy because most of the public functions appear to already be imported.
There are some methods that do have docstrings, but are not shown in the documentation (docs.sympy.org).
For example, method norm in matrices.matrices.py has a docstring, but is not shown in http://docs.sympy.org/dev/modules/matrices.html. I thought that the bad formatting (there is no blank line after the first line of docstring) of the docstring might be the reason for this, but there are other methods with baddly formatted docstrings, that are properly shown in the documentation (e.g. method is_symmetric
for matrices.matrices.py
).
- Category: Documentation
- Labels: Documentation, Milestone-Release0.7.2, Priority-High, Type-Defect
- Time to complete: 48 hours
This task is marked as easy because most of the public functions appear to already be imported.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2599 - Update isympy manpage
Please see http://code.google.com/p/sympy/issues/detail?id=2599 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The manpage for isympy (doc/man/isympy) needs to be updated with all the latest options, etc.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Documentation, Milestone-Release0.7.2, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2637 - Unicode Sigma for pretty printed Sum
Please see http://code.google.com/p/sympy/issues/detail?id=2637 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I've been looking into how to pretty print the Sigma using unicode. Here's what I've got so far:
This is what we do for ascii:
n
__
\ `
) 2⋅f(k)
/_,
k = 1
Here's the best unicode I have so far:
n
__
╲
) f(k)
╱
‾‾
k = 1
I couldn't find characters (yet) to replicate ` and , (the new horizontal lines are at a different height). I also haven't found a better replacement for ).
There are these unicode symbols
⎲
⎳
(\u23b2 and \u23b3, respectively) which take up more than one character of space in my terminal (both width and height) and would actually look kind of nice for summations of that size. So this is the issue from https://github.com/sympy/sympy/pull/389 again. How do we programmatically tell if a symbol takes up more than one character space, and if so, how many?
- Category: User Interface
- Time to complete: 48 hours
CodeInCategory-UI, CodeInDifficulty-Easy, Concrete, Printing, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2639 - The Product() class should not evaluate by default
Please see http://code.google.com/p/sympy/issues/detail?id=2639 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): See comments 6 and 7 in the bug report.
Unlike other unevaluated operators, Product() is not always unevaluated. Attempted evaluation should be the job of product(). This is how Sum/summation works:
>>> Product(n, (n, 1, 2))
2
>>> Sum(n, (n, 1, 2))
2
__
\ `
) n
/_,
n = 1
>>> product(n, (n, 1, 2))
2
>>> summation(n, (n, 1, 2))
3
- Category: Code
- Labels: Concrete, Priority-High, Type-Defect
- Time to complete: 48 hours
See comments 6 and 7 in the bug report.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2679 - Refactor GA* documentation to use doctests (or move it to examples/)
Please see http://code.google.com/p/sympy/issues/detail?id=2679 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
There are some .py files in doc/src/modules/galgebra/GA which have some strange indentation (and aren't valid Python source files either). Aaron also noticed this and they produce (harmless) errors when 2to3 is ran on them. I've finally had a chance to look at them and they seem to be included in the main GA module documentation, GAsympy.txt. In fact, they seem to be used like a doctest - the first part of the file (indented) are the comments that produce the second half of the file (not indented). These should be converted to be actual doctests.
Those files also haven't been touched since 2009 so it's not clear to me if anyone is even using this part of SymPy now, but fixing the docs shouldn't be too hard and can be a good introduction to SymPy for an interested developer (hence, I'm putting the EasyToFix tag here). Also, I don't think these files are ran as part of the doctest suite which means errors might be creeping in and we'd like to avoid this.
For the record, here are the errors produced when 2to3 is ran on these files:
RefactoringTool: Can't parse sympy-py3k/./doc/src/modules/galgebra/GA/reciprocalframeGAtest.py: ParseError: bad input: type=5, value=' ', context=('', (1, 0))
RefactoringTool: Can't parse sympy-py3k/./doc/src/modules/galgebra/GA/headerGAtest.py: ParseError: bad input: type=0, value='', context=('\n', (26, 0))
RefactoringTool: Can't parse sympy-py3k/./doc/src/modules/galgebra/GA/conformalgeometryGAtest.py: ParseError: bad input: type=5, value=' ', context=('', (1, 0))
RefactoringTool: Can't parse sympy-py3k/./doc/src/modules/galgebra/GA/BasicGAtest.py: ParseError: bad input: type=5, value=' ', context=('', (1, 0))
RefactoringTool: Can't parse sympy-py3k/./doc/src/modules/galgebra/GA/hyperbolicGAtest.py: ParseError: bad input: type=5, value=' ', context=('', (1, 0))
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Documentation, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2683 - det() is called when inverting matrix through GE
Please see http://code.google.com/p/sympy/issues/detail?id=2683 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
As noted at maillist, det()
is called when inverting a Matrix
with the GE method. This is used only the check if it is non-degenerate. This should instead be checked by the output of rref()
.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, EasyToFix, Matrices, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2760 - latex(symbol_names) not working with ~x
Please see http://code.google.com/p/sympy/issues/detail?id=2760 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Read this for more information https://github.com/sympy/sympy/pull/674
latex(x**2, symbol_names={x:'x_i'})
works fine, but when you try something as
latex(~x, symbol_names={x:'x_i'})
it doesn't. Besides, every time you need latex to use x's symbol_name, you need to pass the symbol_names dictionary.
Sage has some nice functionality:
var('sui', latex_name="s_{u,i}")
and you don't have to use a special dictionary everytime you need to typeset the symbol.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, Printing, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2763 - Fix the SymPy Logo
Please see http://code.google.com/p/sympy/issues/detail?id=2763 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The original logo is found at http://code.google.com/p/sympy/source/browse/#svn%2Fmaterials%2Flogo The problem is that the transparency is not done correctly on the tail, so that it does not look good unless the background is white. We need to fix it so that it uses the correct kind of alpha channel, so that it looks good everywhere. There is a svg image there, though I didn't have much luck with it.
- Category: Outreach
- Time to complete: 48 hours
CodeInCategory-Outreach, CodeInDifficulty-Easy, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2769 - Make video tutorials for SymPy
Please see http://code.google.com/p/sympy/issues/detail?id=2769 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): The task here is to make a tutorial about some aspect of SymPy.
We can have several Code-In tasks for this. Create some video tutorials for SymPy, and upload them to some SymPy channel on YouTube.
- Category: Training
- Labels: Priority-Medium, Type-Enhancement
- Time to complete: 48 hours
The task here is to make a tutorial about some aspect of SymPy.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2774 - See Also
feature in Number Theory
Please see http://code.google.com/p/sympy/issues/detail?id=2774 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
Ex.
>>> prime?
Docstring:
Return the nth prime, with the primes indexed as prime(1) = 2,
prime(2) = 3, etc.... The nth prime is approximately n*log(n) and
can never be larger than 2**n.
Reference: http://primes.utm.edu/glossary/xpage/BertrandsPostulate.html
This is the present doc-string. One needs to add the following line
See also : isprime, primerange, primepi
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2775 - See Also
feature in Combinotorics
Please see http://code.google.com/p/sympy/issues/detail?id=2775 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/combinatorics/generators.py
sympy/combinatorics/prufer.py
sympy/combinatorics/graycode.py
sympy/combinatorics/permutations.py
sympy/combinatorics/subsets.py
There are around 98(at max) functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2776 - See Also
feature in integrals
Please see http://code.google.com/p/sympy/issues/detail?id=2776 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/integrals/deltafunctions.py
sympy/integrals/integrals.py
sympy/integrals/risch.py
sympy/integrals/rationaltools.py
sympy/integrals/trigonometry.py
There are around 19 functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2777 - See Also
feature in functions
Please see http://code.google.com/p/sympy/issues/detail?id=2777 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/functions/combinatorial/factorials.py
sympy/functions/combinatorial/numbers.py
sympy/functions/elementary/trigonometric.py
sympy/functions/elementary/integers.py
sympy/functions/elementary/exponential.py
sympy/functions/elementary/piecewise.py
sympy/functions/elementary/complexes.py
sympy/functions/elementary/miscellaneous.py
sympy/functions/elementary/hyperbolic.py
There are around 52 functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2778 - See Also
feature in functions/special
Please see http://code.google.com/p/sympy/issues/detail?id=2778 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/functions/special/zeta_functions.py
sympy/functions/special/delta_functions.py
sympy/functions/special/tensor_functions.py
sympy/functions/special/hyper.py
sympy/functions/special/bsplines.py
sympy/functions/special/spherical_harmonics.py
sympy/functions/special/gamma_functions.py
sympy/functions/special/bessel.py
sympy/functions/special/polynomials.py
sympy/functions/special/error_functions.py
There are around 62 functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2780 - See Also
feature in Matrices
Please see http://code.google.com/p/sympy/issues/detail?id=2780 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Edit the doc-string to add list of other function that are closely related to the query.
This is the list of .py files which contains the functions.
sympy/matrices.py
There are around 69 functions which one needs to understand (the input parameters and final result and not the code) to interrelate them.
- Category: Documentation
- Time to complete: 48 hours
CodeInCategory-Documentation, CodeInDifficulty-Easy, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2785 - Use \functionname instead of \operatorname{functionname} whenever possible
Please see http://code.google.com/p/sympy/issues/detail?id=2785 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
SymPy uniformly uses \operatorname
when latex printing functions. However, tex engine in matplotlib doesn't support it. It would be convenient to use \functionname
directly whenever possible (trigonometric and hyperbolic functions, exp, log and maybe other).
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, Printing, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2788 - Commented out tests should be XFAILed
Please see http://code.google.com/p/sympy/issues/detail?id=2788 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
If you "git grep '# *assert'", you'll see a bunch of tests where the test line is commented out. These should be changed to be XFAIL tests, so that we can see if they start passing. Also, they should be double checked to see if they really would start passing (e.g., they don't have syntax errors).
- Category: QualityAssurance
- Time to complete: 48 hours
CodeInCategory-QA, CodeInDifficulty-Easy, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2797 - Translate our webpage to German
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Aaron Meurer
2797 - Translate our webpage to French
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Stefan Krastanov
2797 - Translate our webpage to Czech
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Vladimir Perić
2797 - Translate our webpage to Polish
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Aaron Meurer
2797 - Translate our webpage to Bulgarian
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Stefan Krastanov
2797 - Translate our webpage to Russian
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Alexey U. Gudchenko
2797 - Translate our webpage to Serbian
Please see http://code.google.com/p/sympy/issues/detail?id=2797 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): We only have one person available per language, so review may take a few days.
Our webpage can be translated to other languages. Note that this is connected with issue #2764, about improving our webpage: if someone is working on that, there's likely no point in translating the page as it'll change.
- Category: Translation
- Labels: Priority-Medium, Type-Defect
- Time to complete: 48 hours
We only have one person available per language, so review may take a few days.
- Mentors: Vladimir Perić
2800 - Flesh out the SymPy Papers wiki page
Please see http://code.google.com/p/sympy/issues/detail?id=2800 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
We have a page on the wiki SymPy-Papers that should list (scientific) papers mentioning SymPy, but it's currently empty. Populating this would be interesting and could also persuade other academics to try out/use SymPy. Google Scholar can be used to track down papers. See also the thread which originally asked about this.
- Category: Outreach
- Time to complete: 48 hours
CodeInCategory-Outreach, CodeInDifficulty-Easy, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2806 - Add more tips to the tips page (10 tips)
Please see http://code.google.com/p/sympy/issues/detail?id=2806 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): As the tips page grows, try to keep it organized.
We have a page of tips that we are compiling at tips. This should be really fleshed out, so that we have enough tips to do something interesting with.
For Code-In, we can create multiple tasks. Each task (easy) can be to create say ten tips.
- Category: Training
- Labels: Priority-Medium, Type-Enhancement
- Time to complete: 48 hours
As the tips page grows, try to keep it organized.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2815 - Parts of the pyglet plotting module does not follow PEP 8, fix it
Please see http://code.google.com/p/sympy/issues/detail?id=2815 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
The code there is a bit hard to read. It would be nice to have it refactored so it follows PEP8.
There are certain parts that are not pythonic but that's another problem needing more in-depth refactoring.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2817 - Make sure all the built-in methods are defined
Please see http://code.google.com/p/sympy/issues/detail?id=2817 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
At http://docs.python.org/reference/datamodel.html, it lists all the __methods__
that Python works with (like __int__
, __contains__
, etc.). We should go through all of these and make sure they are all defined on Basic
, Expr
, or whatever relevant subclass, so that we don't have simple bugs like
>>> long(Integer(3))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/Users/aaronmeurer/Documents/python/sympy/sympy/<ipython-input-72-5fff10d216fd> in <module>()
----> 1 long(Integer(3))
TypeError: long() argument must be a string or a number, not 'Integer'
Regarding where they should be defined, stuff that makes sense for any object should go on Basic, stuff that makes sense only on mathematical objects (like __add__
for example) should go on Expr, and stuff that makes sense only for numbers (like __int__
) should go in Number
.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2830 - checkodesol() should use force=True
Please see http://code.google.com/p/sympy/issues/detail?id=2830 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
> @@ -542,7 +542,11 @@ def test_1st_homogeneous_coeff_ode_check3():
> # (False, x*(log(exp(-LambertW(C1*x))) + LambertW(C1*x))*exp(-LambertW(C1*x) + 1))
> eq3 = f(x) + (x*log(f(x)/x) - 2*x)*diff(f(x),x)
> sol3 = Eq(f(x), x*exp(1 - LambertW(C1*x)))
> - assert checkodesol(eq3, sol3, solve_for_func=False)[0]
> + assert checkodesol(eq3, sol3, solve_for_func=True)[0]
> + # and without an assumption about x and f(x), the implicit form doesn't resolve, either:
> + # (False, (log(f(x)/x) + log(x/f(x)))*f(x))
So checkodesol()
needs to be more aggressive, since dsolve()
obtains these logarithms by calling logcombine(force=True)
. An expand with force=True
should be used on expressions being tested or else (as shown above) terms which should go to zero, don't:
>>> log(f(x)/x) + log(x/f(x))
log(f(x)/x) + log(x/f(x))
>>> _.expand(force=True)
0
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2838 - Move the KroneckerDelta class to another module
Please see http://code.google.com/p/sympy/issues/detail?id=2838 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
KroneckerDelta would be useful for more than just quantum physics. I think it should be moved into the functions module and imported with from sympy import *
.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Priority-Medium, Quantum, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2846 - Integral.transform should allow a change to a different variable
Please see http://code.google.com/p/sympy/issues/detail?id=2846 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Integral.transform is confusing, since it requires you to use the same integration variable. But usually, when we do a transfrom on an integral we change the name of the variable. It should allow something like
Integral.transform(x, 2*y, y)
where y is the new variable. The third argument would default to the integration variable, so that you can still use the current syntax.
Also, the docstring needs some doctests, which would also make it less confusing.
Related is issue 2297: Integral manipulations
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, Integration, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2636 - Pretty print Product
Please see http://code.google.com/p/sympy/issues/detail?id=2636 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): Do not attempt to solve this until the task for issue 2639 is fixed.
We should pretty print Product with a big capital Pi. Something like
>>> product(f(k), (k, 1, n))
n
-----
| | f(k)
| |
k = 1
```
in ascii, and
```
>>> product(f(k), (k, 1, n))
n
┌───┐
│ │ f(k)
│ │
k = 1
```
in unicode. Or, better, for unicode, do
```
n
┬───┬
│ │ f(k)
│ │
k = 1
So it looks more like the capital Pi at http://en.wikipedia.org/wiki/Multiplication#Capital_Pi_notation. I couldn't find a character as tall as │ but with a horizontal line at the bottom.
- Category: Code
- Labels: Concrete, Printing, Priority-Medium, Type-Enhancement
- Time to complete: 48 hours
Do not attempt to solve this until the task for issue 2639 is fixed.
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
615 - Fix the occasions where functions are called with wrong name and write tests
Please see http://code.google.com/p/sympy/issues/detail?id=615 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
/home/matt/hg/sympy/sympy/core/basic_methods.py in __getattr__(cls, name)
216 try: return MetaBasicMeths.classnamespace[name]
217 except KeyError: pass
--> 218 raise AttributeError("'%s' object has no attribute '%s'"%
219 (cls.__name__, name))
220
AttributeError: 'Basic' object has no attribute 'Log'.
Some time ago functions were renamed but in many places there are old names left, this should be fixed soon.
And especially tests need to be written to catch these bugs. Because what is not tested for is broken.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, NeedsBetterPatch, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
654 - Remove dead code from _eval_subs()
Please see http://code.google.com/p/sympy/issues/detail?id=654 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
It seems this piece of code is never (?) executed in sympy since exp(3*log(x)) canonize to x**3.
--- a/sympy/functions/elementary/exponential.py
@@ -13,7 +13,7 @@ class exp(Function):
raise ArgumentIndexError(self, argindex)
def inverse(self, argindex=3D1):
- return S.Log
+ return log
@classmethod
def _eval_apply_subs(self, *args):
@@ -124,7 +124,7 @@ class exp(Function):
arg =3D self.args[0]
o =3D old
if isinstance(old, Basic.Pow): # handle (exp(3*log(x))).subs(x*=
*2, z) -> z**(3/2)
- old =3D exp(old.exp * S.Log(old.base))
+ old =3D exp(old.exp * log(old.base))
On the other hand when autoevaluation would be turned off exp(3log(x)) will be just that -- so there should be a test which constructs unevaluated exp(3log(x), evaluate=False) and calls subs.
- Category: Code
- Time to complete: 48 hours
CodeInCategory-Code, CodeInDifficulty-Easy, CodeInImportedIntoSpreadsheet, EasyToFix, Matching, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
93 - Square root denesting
Please see http://code.google.com/p/sympy/issues/detail?id=93 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Just an idea: implement the "square root denesting" ideas of http://www.almaden.ibm.com/cs/people/fagin/symb85.pdf doesn't look to complicated.
- Category: Code
- Time to complete: 144 hours
CodeInCategory-Code, CodeInDifficulty-Hard, GHOP, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1594 - bin/test --random should also shuffle tests inside a file
Please see http://code.google.com/p/sympy/issues/detail?id=1594 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): This can only be done after issue 1594 is resolved.
Currently it only shuffles the test files, not the test functions.
- Category: QualityAssurance
- Labels: Priority-Medium, Testing, Type-Defect
- Time to complete: 144 hours
This can only be done after issue 1594 is resolved.
1817 - SymPy Cheat Sheet
Please see http://code.google.com/p/sympy/issues/detail?id=1817 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
See maillist
The idea is to make a cheat sheet for sympy, similar to PSageMath quickref](http://wiki.sagemath.org/quickref)
- Category: Training
- Time to complete: 144 hours
CodeInCategory-Training, CodeInDifficulty-Hard, Documentation, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
1941 - Objects that know how to combine themselves
Please see http://code.google.com/p/sympy/issues/detail?id=1941 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
This is related to issue 1908. When I met with Ondrej last summer, we worked on a core where objects knew how to combine themselves with respect to Mul and Add. See the handler branch at https://github.com/certik/sympyx/. The idea originally stemmed from issue 1336, but we soon discovered that it also simplifies the logic for things like O() (the order function), and oo, which combine abnormally with respect to Mul and Add. This could also be useful for issue 1940, so that the units could tell Mul that they need to stay together without Mul explicitly having to know about units. Right now, Mul.flatten is cluttered with code for handling all these things, and the only way to handle additional classes is to either completely separate them from Basic (as with Poly), or to add more special case code in Mul.flatten.
Anyway, if we ever rework the core as suggested in issue 1908 or elsewhere, we should also look into doing this too.
- Category: Research
- Time to complete: 144 hours
CodeInCategory-Research, CodeInDifficulty-Hard, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2319 - LaTeX input
Please see http://code.google.com/p/sympy/issues/detail?id=2319 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
So my friend pointed out to me that WolphramAlpha lets you enter any LaTeX formula, and it will parse it and evaluate it. I think we should have a parser that lets us do the same thing. In his case, he takes notes in LaTeX and does all of his homework in it, and he was able to just paste an expression from his homework into WolphramAlpha and it did if for him.
- Category: Code
- Time to complete: 144 hours
CodeInCategory-Code, CodeInDifficulty-Hard, Priority-Medium, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2521 - live.sympy.org isn't so easy to use on a mobile device
Please see http://code.google.com/p/sympy/issues/detail?id=2521 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
I tried the new live.sympy.org on my 1st gen iPod touch (iOS 3). There are a couple of things that make the usage difficult:
-
Pressing both "Return" and "Shift-Return" on the keyboard just creates a newline in the input, regardless of whether the "Enter/Shift-Enter" popup is set to. You can still enter the expression by pressing the "Evaluate" button, but it would be nice if the keyboard worked.
-
There's no way to access the history. There is no "Control" key on an iPod touch.
-
You cannot scroll within a frame in mobile Safari, so you can't access the history of the session beyond a few inputs.
-
This may be an inherent problem with the fonts in iOS, but the unicode output of the result of
dsolve(f(x).diff(x, x) + 2*f(x).diff(x) + f(x) - exp(x) + sin(x), f(x))
is a little off. I'm happy to report that the LaTeX output works great, though. -
There are a few minor issues with the size of things, which would be fixed the best if there were a mobile version of the site. But this is a lower priority. If the above items can be fixed, the site as it is will work just fine in a mobile environment.
-
Category: User Interface
-
Time to complete: 144 hours
CodeInCategory-UI, CodeInDifficulty-Hard, Live, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2626 - Piecewise should use a different syntax for "otherwise"
Please see http://code.google.com/p/sympy/issues/detail?id=2626 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
This is something that's been bothering me for a while. Piecewise has the following syntax (I quote the docstring):
Usage
=====
Piecewise( (expr,cond), (expr,cond), ... )
- Each argument is a 2-tuple defining a expression and condition
- The conds are evaluated in turn returning the first that is True.
If any of the evaluated conds are not determined explicitly False,
e.g. x < 1, the function is returned in symbolic form.
- If the function is evaluated at a place where all conditions are False,
a ValueError exception will be raised.
- Pairs where the cond is explicitly False, will be removed.
Examples
========
>>> from sympy import Piecewise, log
>>> from sympy.abc import x
>>> f = x**2
>>> g = log(x)
>>> p = Piecewise( (0, x<-1), (f, x<=1), (g, True))
>>> p.subs(x,1)
1
>>> p.subs(x,5)
log(5)
The problem is the use of (g, True) for the "otherwise" condition. The problem is that if a conditional reduces to True, then this will be interpreted as an "otherwise" condition rather than returning it.
>>> Piecewise((f(x), x < 0), (x, 1 > 0))
⎧f(x) for x < 0
⎨
⎩ x otherwise
This is also inconsistant in that it treats it correctly if only one condition is given:
>>> Piecewise((x, 1 > 0))
x
- Category: Code
- Time to complete: 144 hours
CodeInCategory-Code, CodeInDifficulty-Hard, Milestone-Release0.7.2, Priority-High, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2765 - Research ways to do the assumptions system, including removing the old system
Please see http://code.google.com/p/sympy/issues/detail?id=2765 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
See https://github.com/sympy/sympy/wiki/Assumptions and some threads on the mailing list, as well as any issue with the Assumptions label. We have two assumptions systems in SymPy, the old system, which works like
>>> x = Symbol('x', positive=True)
>>> x.is_positive
True
and the new system, which works like
>>> ask(Q.positive(x), Q.positive(x))
True
- Category: Research
- Time to complete: 144 hours
Assumptions, CodeInCategory-Research, CodeInDifficulty-Hard, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2768 - Add a feed of what people are doing at SymPy Live
Please see http://code.google.com/p/sympy/issues/detail?id=2768 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): It would be cool to have a little feed at the right on live.sympy.org to show what other people are entering, so that people can see what sorts of things are being done.
It would be cool to have a little feed at the right on live.sympy.org to show what other people are entering, so that people can see what sorts of things are being done. Of course, you should be able to disable this for your own entries, for privacy reasons. It should allow you to input the same expression in your session and execute it.
- Category: User Interface
- Labels: Live, Priority-Medium, Type-Defect
- Time to complete: 144 hours
It would be cool to have a little feed at the right on live.sympy.org to show what other people are entering, so that people can see what sorts of things are being done.
2771 - Write a document showing the difference between SymPy and other mathematical systems: Maple
Please see http://code.google.com/p/sympy/issues/detail?id=2771 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
We should document the differences between SymPy and other mathematical systems. For Code-In, a task should be for one other system.
- Category: Training
- Time to complete: 144 hours
CodeInCategory-Training, CodeInDifficulty-Hard, CodeInMultiple, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2772 - Some UI/GUI for the test runner
Please see http://code.google.com/p/sympy/issues/detail?id=2772 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): It would be cool to have some UI/GUI for the test runner that makes it easier to see the failures when they happen. E.g. like http://sourceforge.net/apps/mediawiki/cppunit/nfs/project/c/cp/cppunit/c/c2/Qttestrunner_exa.png
It would be cool to have some UI/GUI for the test runner that makes it easier to see the failures when they happen.
- Category: User Interface
- Labels: Priority-Medium, Type-Enhancement
- Time to complete: 144 hours
It would be cool to have some UI/GUI for the test runner that makes it easier to see the failures when they happen. E.g. like http://sourceforge.net/apps/mediawiki/cppunit/nfs/project/c/cp/cppunit/c/c2/Qttestrunner_exa.png
2773 - Implement the trigsimp algorithm by fu et al
Please see http://code.google.com/p/sympy/issues/detail?id=2773 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Implement the algorithm for trigonometric simplification from the paper "Automated and readable simplification of trigonometric expressions" by Fu, et. al. (you should be able to find the paper for free from Google Scholar, otherwise email me and I will send it to you).
- Category: Code
- Time to complete: 144 hours
CodeInCategory-Code, CodeInDifficulty-Hard, Priority-Medium, Simplify, Type-Enhancement
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2789 - minpoly should work with roots of unity in exponential form
Please see http://code.google.com/p/sympy/issues/detail?id=2789 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
>>> minpoly(exp(I*pi/8))
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (16, 0))
---------------------------------------------------------------------------
/Users/aaronmeurer/Documents/python/sympy/sympy/sympy/polys/numberfields.pyc in bottom_up_scan(ex)
117 return symbols[ex.root]
118
--> 119 raise NotAlgebraic("%s doesn't seem to be an algebraic number" % ex)
120
121 polys = args.get('polys', False)
NotAlgebraic: exp(I*pi/8) doesn't seem to be an algebraic number
But this is a root of x**16 - 1
. I don't know how minpoly works internally if this can be done in a general fashion for exponentials nested inside other expressions (like e.g., sqrt(1 + exp(I*pi/8)))
.
Marking as Code-In difficulty hard because this is a nontrivial algorithm, especially for a high school student.
- Category: Code
- Time to complete: 144 hours
CodeInCategory-Code, CodeInDifficulty-Hard, Polynomial, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2791 - Allow to manage slow tests better with our test runner
Please see http://code.google.com/p/sympy/issues/detail?id=2791 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Additional Note(s): Currently slow tests are simply skipped, but this makes it hard to actually run them. There should be a decorator for this (e.g. @slow) that would all to to run such tests when give an extra option to bin/test or test() (--slow and slow=True, respectively). It should be also possible to specify a timeout for slow tests so that they do not hang test runner. It should be also possible to press Ctrl+C (KeyboardInterrupt) to kill a slow test without killing test runner. There should be statistics added at the end which would tell how many slow tests were run, how many timed out and maybe other. Also, almost all skipped tests (or maybe all) are currently skipped because they are slow, so after this is implemented, they should all be converted.
Currently slow tests are simply skipped, but this makes it hard to actually run them. There should be a decorator for this (e.g. @slow) that would all to to run such tests when give an extra option to bin/test or test() (--slow and slow=True, respectively). It should be also possible to specify a timeout for slow tests so that they do not hang test runner. It should be also possible to press Ctrl+C (KeyboardInterrupt) to kill a slow test without killing test runner. There should be statistics added at the end which would tell how many slow tests were run, how many timed out and maybe other.
- Category: QualityAssurance
- Labels: Priority-Medium, Testing, Type-Enhancement
- Time to complete: 144 hours
Currently slow tests are simply skipped, but this makes it hard to actually run them. There should be a decorator for this (e.g. @slow) that would all to to run such tests when give an extra option to bin/test or test() (--slow and slow=True, respectively). It should be also possible to specify a timeout for slow tests so that they do not hang test runner. It should be also possible to press Ctrl+C (KeyboardInterrupt) to kill a slow test without killing test runner. There should be statistics added at the end which would tell how many slow tests were run, how many timed out and maybe other. Also, almost all skipped tests (or maybe all) are currently skipped because they are slow, so after this is implemented, they should all be converted.
2792 - Investigate how to employ complexity measures in functions like trigsimp(), etc.
Please see http://code.google.com/p/sympy/issues/detail?id=2792 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
simplify()
already implements measure argument and uses it to choose over alternative expressions given by pairs of specific simplification routines. However, those specific simplification routines (like trigsimp()
) don't support measure argument and make arbitrary built-in choices when simplifying expressions. This leads to simplification results that are dependent on the implicit measure built-in into a particular simplification step of a function. Those functions should use a measure to verify whether a candidate simplified expression is really simpler than an input expression. Investigate how to implement measures in those functions (at least in trigsimp()
) to avoid combinatorial explosion of choices. You may have to employ optimization techniques like greedy algorithms, dynamic programming, meta heuristics, etc. Prepare sample non-trivial inputs, measures and outputs that can be used as tests for the algorithm(s) you will propose.
- Category: Research
- Time to complete: 144 hours
CodeInCategory-Research, CodeInDifficulty-Hard, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin
2799 - coverage testing should be part of the bot test
Please see http://code.google.com/p/sympy/issues/detail?id=2799 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
Two things on my wish list for testing;
-
a coverage fingerprint of master would be compared to a given branch's coverage profile to make sure that no line has become uncovered.
-
a report of lines added that are not covered would be reported with the test-bot report.
Someone who likes parsing html (beautiful soup might help with this) might enjoy this as a project.
- Category: QualityAssurance
- Time to complete: 144 hours
CodeInCategory-QA, CodeInDifficulty-Hard, Priority-Medium, Testing, Type-Enhancement
2812 - Fix failures found by shuffling tests in test file
Please see http://code.google.com/p/sympy/issues/detail?id=2812 for full information on this task.
Please read https://github.com/sympy/sympy/wiki/gci-2011-landing before completing any tasks for SymPy.
This builds on issue 1594: once we have the shuffling, we should fix all the failures caused by it. Marking this as a hard task for Code-In, per Aaron's comment on the other issue.
- Category: QualityAssurance
- Time to complete: 144 hours
CodeInCategory-QA, CodeInDifficulty-Hard, Priority-Medium, Type-Defect
- Mentors: Aaron Meurer, Stefan Krastanov, Vladimir Perić, Matthew Rocklin