Show More
@@ -0,0 +1,1 b'' | |||
|
1 | * autoreload can now reload ``Enum``. See :ghissue:`10232` and :ghpull:`10316` |
@@ -278,9 +278,10 b' def update_class(old, new):' | |||
|
278 | 278 | method code objects""" |
|
279 | 279 | for key in list(old.__dict__.keys()): |
|
280 | 280 | old_obj = getattr(old, key) |
|
281 | ||
|
282 | 281 | try: |
|
283 | 282 | new_obj = getattr(new, key) |
|
283 | if old_obj == new_obj: | |
|
284 | continue | |
|
284 | 285 | except AttributeError: |
|
285 | 286 | # obsolete attribute: remove it |
|
286 | 287 | try: |
@@ -15,6 +15,7 b'' | |||
|
15 | 15 | import os |
|
16 | 16 | import sys |
|
17 | 17 | import tempfile |
|
18 | import textwrap | |
|
18 | 19 | import shutil |
|
19 | 20 | import random |
|
20 | 21 | import time |
@@ -23,6 +24,8 b' from io import StringIO' | |||
|
23 | 24 | import nose.tools as nt |
|
24 | 25 | import IPython.testing.tools as tt |
|
25 | 26 | |
|
27 | from IPython.testing.decorators import skipif | |
|
28 | ||
|
26 | 29 | from IPython.extensions.autoreload import AutoreloadMagics |
|
27 | 30 | from IPython.core.events import EventManager, pre_run_cell |
|
28 | 31 | |
@@ -126,6 +129,29 b' class Fixture(object):' | |||
|
126 | 129 | #----------------------------------------------------------------------------- |
|
127 | 130 | |
|
128 | 131 | class TestAutoreload(Fixture): |
|
132 | ||
|
133 | @skipif(sys.version_info < (3, 6)) | |
|
134 | def test_reload_enums(self): | |
|
135 | import enum | |
|
136 | mod_name, mod_fn = self.new_module(textwrap.dedent(""" | |
|
137 | from enum import Enum | |
|
138 | class MyEnum(Enum): | |
|
139 | A = 'A' | |
|
140 | B = 'B' | |
|
141 | """)) | |
|
142 | self.shell.magic_autoreload("2") | |
|
143 | self.shell.magic_aimport(mod_name) | |
|
144 | self.write_file(mod_fn, textwrap.dedent(""" | |
|
145 | from enum import Enum | |
|
146 | class MyEnum(Enum): | |
|
147 | A = 'A' | |
|
148 | B = 'B' | |
|
149 | C = 'C' | |
|
150 | """)) | |
|
151 | with tt.AssertNotPrints(('[autoreload of %s failed:' % mod_name), channel='stderr'): | |
|
152 | self.shell.run_code("pass") # trigger another reload | |
|
153 | ||
|
154 | ||
|
129 | 155 | def _check_smoketest(self, use_aimport=True): |
|
130 | 156 | """ |
|
131 | 157 | Functional test for the automatic reloader using either |
General Comments 0
You need to be logged in to leave comments.
Login now