You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a placeholder for a list of ongoing project ideas, to be split into separate issues as people work on them.
Pylint message improvements. Over the break, I went through all of the existing Pylint checks and made notes about which ones were currently undocumented, and which ones I wanted to improve the error message for. Either or both of you could work on these improvements incrementally (this is nice because the tasks are already divided up cleanly).
Runtime contract checking. This is a new feature that I'm hoping to deploy in Fall 2020. You can see the prototype under python_ta/contracts; the idea is similar to what you did for the last part of CSC324 A1. The prototype works but isn't very robust, and needs to be extended to support a bunch of different things. Because this is such a new feature, this is also an opportunity for some creative brainstorming/design. I think one or both of you could work on this, but I don't know there's enough work to last the whole semester (which is okay!).
Investigate incorporating mypy (static type checker).mypy is a static type checker for Python that's actively being developed. I've had students work on a static type checker as well (see python_ta/typecheck) but the work is incomplete. I'm leaning towards switching to mypy, but the downside is I think it's a fairly closed API, so I'm not sure how much control/configuration we'd be able to do. But it also supports plugins, so it could actually be quite configurable.
Investigating astroid "inference" and constant propagation. This is sort of a hybrid between static and dynamic analysis. Basically, constant propagation is a static analysis that determines values of variables that are just constants, e.g. in
x = 1
y = x + 3 # y = 4
z = x + y # z = 5
This could be useful as a generalization of our "constant_test_checker", which is a mistake students sometimes might make. Astroid's inference might do some/all of this already, but we could also use control flow graphs I think.
Data collection. Basically, we can implement a mode for PyTA so that every time it runs check_all, it sends the code being inspected to a server somewhere, along with the configuration used to run pyta. Eventually, instructors would be able to use this data to analyze how students are using PyTA. Obviously, this would incorporate a permission setting on individual installations and a server back-end to receive and store the files.
Command-line interface. Another more general technical task, but it would be nice to be able to run python_ta on the command-line, like pylint itself. This would involve learning about how to turn Python modules into command-line executables.
PyCharm plugin integration. It would be nice to have a plugin for PythonTA and PyCharm. This again would require some pretty open-ended investigation of how PyCharm plugins work.
The text was updated successfully, but these errors were encountered:
This is a placeholder for a list of ongoing project ideas, to be split into separate issues as people work on them.
Pylint message improvements. Over the break, I went through all of the existing Pylint checks and made notes about which ones were currently undocumented, and which ones I wanted to improve the error message for. Either or both of you could work on these improvements incrementally (this is nice because the tasks are already divided up cleanly).
Runtime contract checking. This is a new feature that I'm hoping to deploy in Fall 2020. You can see the prototype under
python_ta/contracts
; the idea is similar to what you did for the last part of CSC324 A1. The prototype works but isn't very robust, and needs to be extended to support a bunch of different things. Because this is such a new feature, this is also an opportunity for some creative brainstorming/design. I think one or both of you could work on this, but I don't know there's enough work to last the whole semester (which is okay!).Investigate incorporating mypy (static type checker). mypy is a static type checker for Python that's actively being developed. I've had students work on a static type checker as well (see
python_ta/typecheck
) but the work is incomplete. I'm leaning towards switching to mypy, but the downside is I think it's a fairly closed API, so I'm not sure how much control/configuration we'd be able to do. But it also supports plugins, so it could actually be quite configurable.Investigating astroid "inference" and constant propagation. This is sort of a hybrid between static and dynamic analysis. Basically, constant propagation is a static analysis that determines values of variables that are just constants, e.g. in
This could be useful as a generalization of our "constant_test_checker", which is a mistake students sometimes might make. Astroid's inference might do some/all of this already, but we could also use control flow graphs I think.
Data collection. Basically, we can implement a mode for PyTA so that every time it runs
check_all
, it sends the code being inspected to a server somewhere, along with the configuration used to run pyta. Eventually, instructors would be able to use this data to analyze how students are using PyTA. Obviously, this would incorporate a permission setting on individual installations and a server back-end to receive and store the files.Command-line interface. Another more general technical task, but it would be nice to be able to run python_ta on the command-line, like pylint itself. This would involve learning about how to turn Python modules into command-line executables.
PyCharm plugin integration. It would be nice to have a plugin for PythonTA and PyCharm. This again would require some pretty open-ended investigation of how PyCharm plugins work.
The text was updated successfully, but these errors were encountered: