gregmalcolm / python_koans Goto Github PK
View Code? Open in Web Editor NEWPython Koans - Learn Python through TDD
License: MIT License
Python Koans - Learn Python through TDD
License: MIT License
The test with an issue claims that it is showing that type exists but not the class attribute. The first line of the test method fails with an AttributeError.
def test_old_style_classes_have_type_but_no_class_attribute(self):
self.assertEqual(__, self.OldStyleClass.__class__)
try:
cls = self.OldStyleClass.__class__
except Exception as ex:
pass
self.assertMatch(__, ex[0])
Here is the output from this failure:
You have not yet reached enlightenment ...
AttributeError: class OldStyleClass has no attribute '__class__'
Please meditate on the following code:
File "/Users/aron/dev/python_koans/python2/koans/about_new_style_classes.py", line 37, in test_old_style_classes_have_type_but_no_class_attribute
self.assertEqual(__, self.OldStyleClass.__class__)
If you call type(OldStyleClass), you get <type 'classobj'>, which is something that hasn't been introduced in earlier koans. Maybe convert this check into:
self.assertEqual(__, str(type(self.OldStyleClass)))
This way, the student needs to document the name of the type as a string instead of worrying about ClassType inside the types module or any other way of creating the classobj type.
Python version:
Python 2.7.2 (default, Oct 11 2012, 20:14:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Hi, I'm learning python. I encounter the following problem at line 69 in koans_about_multiple_inheritance:
super(AboutMultipleInheritance.Nameable, self).__init__()
doesn't make sense, because in MRO order, after "Nameable" is "object".
Hi @gregmalcolm
I wonder if I can make a python koans fork and translate it.
in koans/about_generators.py, the function cube_me actually squares.
def cube_me(self, seq):
for x in seq:
yield x * x
Quoting @denis-roy's pull request #157, regarding the Python 3 version of AboutWithStatements.test_finding_lines2
:
The default placeholder value of
__
can be left as is and the test will pass.
And from his comment in the file itself:
[...] In fact it accepts anything that is not
'test\n'
as an answer.
The Python 2 version of the same test explicitly asserts that the user-written function does not return None
:
def find_line2(self, file_name):
# Rewrite find_line using the Context Manager.
pass
def test_finding_lines2(self):
self.assertEqual(__, self.find_line2("example_file.txt"))
self.assertNotEqual(None, self.find_line2("example_file.txt"))
I think the idea was that the assertNotEqual
would test that the student-written function returns anything, while the assertEqual
would test that furthermore the return value is correct. That would be more clear if:
...and maybe:
Something like:
def test_finding_lines2(self):
self.assertNotEqual(None, self.find_line2("example_file.txt"))
self.assertEqual("test\n", self.find_line2("example_file.txt"))
This should focus the student's attention entirely on rewriting find_line2
.
I even went to the answers branch and copied the first part of the file over annd it didn't seem to work. It just gave me a stack trace.
Thinking AboutProxyObjectProject
test_proxy_method_returns_wrapped_object has damaged your karma.
You have not yet reached enlightenment ...
RuntimeError: maximum recursion depth exceeded
Please meditate on the following code:
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 47, in test_proxy_method_returns_wrapped_object
tv = Proxy(Television())
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 23, in __init__
self._messages = list()
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 35, in __setattr__
return object.__setattr__(self._obj, attr_name, attr_value)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
File "/Users/mandaris/Virtualenvs/koans/Tests/python3/koans/about_proxy_object_project.py", line 29, in __getattr__
temp = getattr(self._obj, name)
Please advise.
a comment says # Note: Sets have only started using braces since Python 3
, however, set literal syntax was backported to python 2.7.
I can make a pull request to update this comment if that's ok.
I am not sure why the version of Colorama that is currently used fails because it is fairly random, but I get the following exception. Dropping Colorama 0.2.7 into the libs folder fixes it.
Traceback (most recent call last):
File "contemplate_koans.py", line 37, in
Mountain().walk_the_path(sys.argv)
File "D:\python_koans\python2\runner\mountain.py", line 24, in walk_the_path
self.tests(self.lesson)
File "C:\Python27\lib\unittest\suite.py", line 70, in call
return self.run(_args, *_kwds)
File "C:\Python27\lib\unittest\suite.py", line 108, in run
test(result)
File "C:\Python27\lib\unittest\case.py", line 395, in call
return self.run(_args, *_kwds)
File "C:\Python27\lib\unittest\case.py", line 370, in run
result.addSuccess(self)
File "D:\python_koans\python2\runner\sensei.py", line 45, in addSuccess
Fore.RESET, Style.NORMAL))
File "D:\python_koans\python2\runner\writeln_decorator.py", line 17, in writeln
if arg: self.write(arg)
File "D:\python_koans\python2\libs\colorama\ansitowin32.py", line 34, in write
self.__convertor.write(text)
File "D:\python_koans\python2\libs\colorama\ansitowin32.py", line 115, in write
self.write_and_convert(text)
File "D:\python_koans\python2\libs\colorama\ansitowin32.py", line 140, in write_and_convert
self.convert_ansi(_match.groups())
File "D:\python_koans\python2\libs\colorama\ansitowin32.py", line 154, in convert_ansi
self.call_win32(command, params)
File "D:\python_koans\python2\libs\colorama\ansitowin32.py", line 175, in call_win32
func(_args, **kwargs)
File "D:\python_koans\python2\libs\colorama\winterm.py", line 48, in fore
self.set_console(on_stderr=on_stderr)
File "D:\python_koans\python2\libs\colorama\winterm.py", line 68, in set_console
win32.SetConsoleTextAttribute(handle, attrs)
File "D:\python_koans\python2\libs\colorama\win32.py", line 66, in SetConsoleTextAttribute
assert success
AssertionError
should this be
return a + b
?
So there's this function in about_iteration.py which is supposed to calculate a number from the Fibonacci sequence, judging from the name of the variable. But instead it just adds up the numbers in range (1,6):
def test_iterators_are_a_type(self):
it = iter(range(1,6))
fib = 0
for num in it:
fib += num
self.assertEqual(__ , fib)
So fib = 0 + 1 + 2 + 3 + 4 + 5 = 15
Hey, @gregmalcolm and mates!
I've created a branch in my station and made a very little commit here showing the percentage of lessons done and the total of lessons right after the lessons done.
And just wanted to know if you prefer I fork your project then you could incorporate my suggestion I added, or may I be part of the contributors of this repository to send my pull request?
Big hug!
ps: maybe I'm rebooting my technical life, starting from scratch with python development, so I wanted to give you this context and see if you take this risk ;-P
In the following test in about_tuples.py
def test_tuples_of_one_look_peculiar(self):
self.assertEqual(int, (1).__class__)
self.assertEqual(tuple, (1,).__class__)
self.assertEqual(__, ("Hello comma!", ))
Should the last statment be
self.assertEqual(__, ("Hello comma!", ).__class__)
The test runner contemplate_koans.py
doesn't collect AboutRegex class.
Now in python2/koans/about_new_style_classes.py, line 37 i see:
def test_old_style_classes_have_type_but_no_class_attribute(self):
self.assertEqual(, self.OldStyleClass.__class)
I think that it's an error here. Either we you should use assertRaises here or NewStyleClass.
I believe the comment on line 109 of Python 3/koans/about_lists.py should say:
# This is not an issue for Python 3 though
rather than (what it currently says):
# This is not as issue for Python 3 through
I'm not sure what self.assertEqual(__, ("Hello comma!",)) is trying to teach.
Should it be
self.assertEqual(__, ("Hello comma!")) ?
Two of the names of the tests in about_generators.py seem a little off. Specifically:
test_coroutines_can_take_arguments
: The test here seems to have nothing to do with generators as coroutines, and additionally coroutines haven't been introduced yet. Not sure what the name should be though.test_generators_can_take_coroutines
: It seems the generator here isn't /taking/ a coroutine, but rather it is a coroutine. Perhaps something like test_generators_are_also_coroutines
?The current test is:
self.assertEqual(__, fido.__class__)
I'm assuming that this would have worked previous versions, but python gives the warning.
AssertionError: '-=> FILL ME IN! <=-' != <class 'koans.about_classes.AboutClasses.Dog'>
I think the test should be.
self.assertRegexpMatches(fido.__class__, __)
That's pretty much it.
If I run the _“runner_tests.py” (both Python2 and Python3) it fails on 5 tests.
Hi
I have added the code into triangle.py
- and saved it!
def triangle(a, b, c):
# DELETE 'PASS' AND WRITE THIS CODE
#pass
def triangle(a, b, c):
if a <= 0 or b <= 0 or c <= 0:
raise TriangleError(AttributeError('Negative edge is not allowed'))
if a + b + c <= 2 * max(a, b, c):
raise TriangleError(AttributeError('largest side should be smaller than sum of 2 other sides'))
if a == b == c:
return 'equilateral'
elif a == b or b == c or c == a:
return 'isosceles'
return 'scalene'
# Error class used in part 2. No need to change this code.
class TriangleError(Exception):
pass
When I run the contemplate_koans.py
I get the following error and I'm struggling to work out what is wrong.
I get "AssertionError: TriangleError not raised" on the line that calls triangle in about_triangle_project2.py
the line is triangle(0, 0, 0)
Can you help me?
In koans/about_generators.py, the function sum_it is uninteresting. It would be much better if it was:
def sum_it(self, seq):
value = 0
for num in seq:
# The local state of 'value' will be retained between iterations
value += num
yield value # the yield is now inside the for
The tests after the class (python3/koans/about_class_attributes.py 77-90) seem to imply that when one uses the @staticmethod and @classmethod some how override the instance methods. Especially the test test_staticmethods_also_overshadow_instance_methods makes me think that. However when I change the order to declare the instance methods bark(self) and growl(self) after the other two with the same names the opposite happens. That is the instance methods override the class and static ones.
eg.
class Dog2:
def wag(self):
return 'instance wag'
@staticmethod
def bark():
return "staticmethod bark, arg: None"
@classmethod
def growl(cls):
return "classmethod growl, arg: cls=" + cls.__name__
def bark(self):
return "instance bark"
def growl(self):
return "instance growl"
def test_since_classes_are_objects_you_can_define_singleton_methods_on_them_too(self):
self.assertRegexpMatches(self.Dog2().growl(), 'instance growl')
def test_classmethods_are_not_independent_of_instance_methods(self):
fido = self.Dog2()
self.assertRegexpMatches(fido.growl(), 'instance growl')
self.assertRegexpMatches(self.Dog2().growl(), 'instance growl')
def test_staticmethods_are_unbound_functions_housed_in_a_class(self):
self.assertRegexpMatches(self.Dog2().bark(), 'instance bark')
def test_staticmethods_also_overshadow_instance_methods(self):
fido = self.Dog2()
self.assertRegexpMatches(fido.bark(), 'instance bark')
Am I the only person to get the wrong message by this?
Hi, I'd like to ask what is the intended solution to this task:
def test_use_backslash_at_the_end_of_a_line_to_continue_onto_the_next_line(self):
string = "It was the best of times,\n\
It was the worst of times."
self.assertEqual(__, len(string))
Should one count the letters one-by-one and then put there "52"?
I can't figure out any better solution.
Thanks in advance!
I'm having trouble getting through these tests. I'm having trouble googling information about the none object outside of the original documentation.
Could someone point me in the right direction? How many of you have done those test recently? Would it make more since to have them later in set of tests because I was flying through the first part of simple asserts and I don't know how much of this will affect the rest of the tests.
self.assertEqual(__, self.truth_value(1,))
I believe your intention is to pass a tuple in function truth_value?
in that case, it should be written as:
self.assertEqual(__, self.truth_value((1,)))
This is not a super issue, but I noticed that there are small things (indentations, spaces, names) that are not PEP8 compliant. I noticed this in the Python3 folder (Had not checked the Python2 folder)
on line 186 of about_attribute_access.py in class PossessiveSetter:
def test_setattr_intercepts_attribute_assignments(self):
fanboy = self.PossessiveSetter()
fanboy.comic = 'The Laminator, issue #1'
fanboy.pie = 'blueberry'
self.assertEqual('blueberry', fanboy.a_pie)
prefix = '__'
self.assertEqual(
"The Laminator, issue #1",
getattr(fanboy, prefix + '_comic'))
The requirement is unclear. Changing the value of the variable 'prefix' causes a successful koan, but this is not uniform with how the other koans are changed. An instruction here might be helpful.
Nice work. Thank you.
Hi Everyone,
I have got a question while I was doing python_koans myself.
So, here it goes. In about_none.py file, around line 45
I do not get why both
self.assertMatch('NoneType', ex.args[0])
self.assertMatch('None', ex.args[0])
are passed, any explanation will be appreciated.
Lin
Thinking AboutMethods
test_calling_a_global_function has expanded your awareness.
test_calling_functions_with_wrong_number_of_arguments has damaged your karma.
You have not yet reached enlightenment ...
AssertionError: Regex didn't match: 'my_global_function\\(\\) takes exactly 2 arguments \\(0 given\\)' not found in "my_global_function() missing 2 required positional arguments: 'a' and 'b'"
I don't think that the koans have been updated for changes in python.
Anybody know if there is a pytest port of this cool repo?
NVM I FIXED MY ISSUE!!!
I think it should be renamed "test_escaping_quotes_at_the_end_of_triple_quoted_string" and it should have a proper assert statement in it. I can send a pull request for this if you think this is what you intended to do.
Not a bug, more of a nitpick or cavil
In using "python2 contemplate_koans py", test_triple_single_quotes_work_too (about_strings.py - line 21) is followed by test_use_single_quotes_to_create_string_with_double_quotes (about_strings.py - line 29) , skipping over test_raw_strings_are_also_strings (about_strings.py - line 25).
The test_raw_strings_are_also_strings (about_strings.py - line 25) is then performed next.
There seems to be a bug on line 109/110.
When I "Uncomment for debugging info" and run contemplate_koans.py it gets stuck in a loop:
You have not yet reached enlightenment ...
RuntimeError: maximum recursion depth exceeded while calling a Python object
Please meditate on the following code:
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 131, in test_getattribute_is_a_bit_overzealous_sometimes
catcher.my_method()
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_attribute_access.py", line 110, in getattribute
On lines 18 and 19:
self.assertNotRaises(TriangleError, triangle, 1, 1, 3)
self.assertNotRaises(TriangleError, triangle, 2, 5, 2)
I don't understand why those are considered invalid triangles. The fact that there is a valid type of triangle called "scalene" means that it can't be because they aren't valid right angle triangles.
The fact they don't conform to Pythagoras Theorem is the only thing I can think of.
Unused variable expected
in both versions of test_sensei.py
, in the test_that_nothing_is_returned_as_sorted_result_if_there_are_3_shuffled_results
method. It's a list of tuples that look like they should have been used in the assertions --- something like self.assertEqual(expected, results)
, maybe? I'll leave that change to someone who already knows what the intent was.
This test assigns to two variables, first_time and second_time:
dice.roll(5) first_time = dice.values dice.roll(5) second_time = dice.values
But since these are both reference assignments doesn't that mean that the test will necessarily fail no matter how one implements the roll() method?
I am sure you must not have heard this kind of question, and I assume its been pretty long for you had seen the code as well.
I have cloned the python_koans github repository and started working on it. From the documentation what I learnt it change in the file to the appropriate value and make the test pass.
Well it did seemed very simple at first, but once i stated to move again ahead with the koans i found that merely replacing the empty fields with the variable defined in the test solves the issue, which sounded pretty simple to me and I see there I am not learning anything new or programatic in doing such thing. Hence, I felt that may be what I am doing is not right and come to you to ask, if thats what is to be done, or shall we write any code to make it success. Please advise.
for eg.
def test_plus_will_not_modify_original_strings(self):
hi = "Hello, "
there = "world"
string = hi + there
self.assertEqual(___ , hi)
self.assertEqual(___ , there)
This will fail, but if I add
def test_plus_will_not_modify_original_strings(self):
hi = "Hello, "
there = "world"
string = hi + there
self.assertEqual(hi , hi)
self.assertEqual(there , there)
This is success. Is this what is to be done?
I just noticed all the images for the readme are down. Might want to just re-up those on github.
Thanks for creating these koans. If you have the time, I'm a little curious about the difference between "unit test asserts" and "python asserts."
I just realized that you have a bunch of calls to self.assertTrue, but assertTrue isn't actually defined anywhere within about_asserts.py nor does the class in that file inherit from anything. So I can't figure out where self.assertTrue would be coming from.
I'm guessing, though, that self.assertTrue is somehow the "unit test assert" whereas the bare assert is the Python assert. But it would be nice to get confirmation.
Isn't 2, 4, 2 a valid triangle? Since any two of the sides can be added and will be greater than or equal to the remaining side.
As of Python 3.3 the:
test_subfolders_without_an_init_module_are_not_part_of_the_package
koan doesn't raise any exception. You'd want to change the code to:
with self.assertRaises(____):
from a_normal_folder import Duck
to force the Error.
Still have regex to do (maybe more) and this is what's displaying
...
Thinking TelevisionTest
test_can_set_the_channel has expanded your awareness.
test_edge_case_on_off has expanded your awareness.
test_it_also_turns_off has expanded your awareness.
test_it_turns_on has expanded your awareness.
Thinking AboutExtraCredit
test_extra_credit_task has expanded your awareness.
Thinking AboutRegex
test_matching_literal_text has damaged your karma.
You have not yet reached enlightenment ...
AssertionError: I want my name
Please meditate on the following code:
File "/home/tom/Dropbox/Misc Coding/python_koans/python2/koans/about_regex.py", line 27, in test_matching_literal_text
You have completed 297 koans and 39 lessons.
You are now 6 koans and -1 lessons away from reaching enlightenment.
Explicit is better than implicit.
There doesn't seem to be an indication that you should rewrite it to get past koans that depend on it.
Original definition
class Dog6:
def __init__(self, initial_name):
self._name = initial_name
def get_self(self):
return self
def __str__(self):
return __
def __repr__(self):
return "<Dog named '" + self._name + "'>"
Definition in answers (I'm cheating!)
class Dog6:
def __init__(self, initial_name):
self._name = initial_name
def get_self(self):
return self
def __str__(self):
return self._name
##### return __
def __repr__(self):
return "<Dog named '" + self._name + "'>"
Not trying to nitpick.
To be fair ranges are objects in py3k, but https://github.com/gregmalcolm/python_koans/blob/master/python2/koans/about_iteration.py#L97-L99 doesn't make sense when users are taught earlier that ranges are lists at https://github.com/gregmalcolm/python_koans/blob/master/python2/koans/about_lists.py#L56.
I noticed that the about_regex.py
koans are at the very bottom of the "Path to Enlightenment", after even the extra credit (in the python[23]/koans.txt
files I created, and in the test runners before them). Was that supposed to be a hint that it's not ready for prime time?
I ran into several problems with the koans in AboutRegex
, and I often couldn't figure out what the author's intent was. (I gather it wasn't @gregmalcolm.) The author credits SAMS Teach Yourself Regular Expressions in 10 Minutes by Ben Forta for inspiring the module. I don't have that book, but it might not help anyway --- presumably the koans aren't just copies of the book's examples.
I guess I'm mostly asking if the original author (Felix?) is still around, and if not, what your plan is for this module?
(I've submitted #159 to make comparing the Python 2 and Python 3 versions of about_regex.py
easier. Turns out, they're identical after all Python 2 fixes are applied to the Python 3 version.)
A few examples of things I want to fix (line numbers taken from the Python 2 file):
I think the intent of test_matching_literal_text_how_many
is for the user to replace re.match(...)
with something like len(re.findall(...))
. But the assertion has the user typing something that will evaluate equal to a match object.
As written, the __
should be replaced with None
, which might be what the "tip" is trying to say. But that contradicts the other comment that asks for how many times the name 'Felix'
appears, which would be a number.
def test_matching_literal_text_how_many(self):
...
string = ("Hello, my name is Felix and these koans are based " +
"on Ben's book: Regular Expressions in 10 minutes. " +
"Repeat My name is Felix")
m = re.match('Felix', string) # TIP: match may not be the best option
# I want to know how many times my name appears
self.assertEqual(m, __)
If the goal is to fix the function called, then the assertion should be complete:
# I want to know how many times my name appears.
# TIP: match may not be the best function for the job.
matches = re.match('Felix', string)
count = len(matches)
self.assertEqual(count, 2)
If the goal is to fill in the assertion with None
, then the second comment is wrong. (Also, this koan won't teach much.)
Maybe there should be two koans, this one and something like test_failed_matches_return_none()
?
There is no myArray
variable in test_matching_any_character
, and it doesn't occur in the string we're given to search. What did the author mean here?
change_this_search_string = 'a..xlx' # <-- I want to find all uses of myArray
Making the assertion in test_matching_any_character
pass has almost nothing to do with the .
character or what it matches. The real problem is the typo in the regex: 'a..xlx'
should be 'a..xls'
.
(Note that the first .
in this regex will match a variety of digits, while the second will by chance only match periods... This will almost certainly confuse beginners.)
test_matching_set_character
is looking for the wrong answer. There are four files that match, not 3.
# I want to find all files for North America(na) or South
# America(sa), but not (ca) TIP you can use the pattern .a.
# which matches in above test but in this case matches more than
# you want
change_this_search_string = r'[nsc]a[2-9]\.xls'
self.assertEquals(
len(re.findall(change_this_search_string, string)),
3) # <----= Should be 4, not 3.
Maybe he specifically wants only the '1'
version of each file? If so, then the solution is to entirely remove the character set and replace it with the literal '1'
... which is a weird solution for the koan that introduces character sets.
Also, what "above test" is that "tip" talking about? There was no '.a.'
in test_matching_any_character
.
test_anything_but_matching
has nothing to do with character sets, negated or otherwise... The string 'am'
appears exactly once in the input, so there's nothing to filter out. Once again, the solution is to remove the supposed subject.
def test_anything_but_matching(self):
# ...
# I want to find the name sam
change_this_search_string = '[^nc]am'
self.assertEquals(
re.findall(change_this_search_string, string),
['sam.xls'])
The claim in the comments ("I want to find the name 'sam'") is wrong --- he wants to find exactly one filename, 'sam.xls'
, which doesn't even require a regex... Windows' Ctrl-F
could solve this one.
Thank you for this great educational tool!
When I see failing test output like this:
You have not yet reached enlightenment ...
AssertionError: '-=> FILL ME IN! <=-' != 0
…well, I know the answer is 0
, and for the sake of my learning, that value is hard to "un-see." Is there anyway to hide it?
While i was working on a about_strings, i got stuck on escaping double quotes / triple quotes, and the whole thing just stopped working ? when i run run.sh i get this :
Traceback (most recent call last):
File "contemplate_koans.py", line 35, in <module>
Mountain().walk_the_path(sys.argv)
File "/home/noirchrome/python_koans/python3/runner/mountain.py", line 14, in __init__
self.tests = path_to_enlightenment.koans()
File "/home/noirchrome/python_koans/python3/runner/path_to_enlightenment.py", line 62, in koans
return koans_suite(names)
File "/home/noirchrome/python_koans/python3/runner/path_to_enlightenment.py", line 51, in koans_suite
tests = loader.loadTestsFromName(name)
File "/usr/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName
module = __import__(module_name)
File "/home/noirchrome/python_koans/python3/koans/about_strings.py", line 93
self.assertEqual("""\n""", string)
^
SyntaxError: unexpected character after line continuation character
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.