Skip to content

Commit 640d925

Browse files
committed
Moving create_class_instance from user to utils.
1 parent d544ac2 commit 640d925

File tree

3 files changed

+21
-22
lines changed

3 files changed

+21
-22
lines changed

intercom/user.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,6 @@
1414
from intercom.traits.api_resource import Resource
1515
from intercom.traits.incrementable_attributes import IncrementableAttributes
1616

17-
18-
CLASS_REGISTRY = {}
19-
20-
def create_class_instance(class_name):
21-
22-
if class_name in CLASS_REGISTRY:
23-
return CLASS_REGISTRY[class_name]
24-
25-
class Meta(type):
26-
def __new__(mcs, name, bases, attributes):
27-
return super(Meta, mcs).__new__(mcs, str(class_name), bases, attributes)
28-
29-
class DynamicClass(Resource):
30-
__metaclass__ = Meta
31-
32-
dyncls = DynamicClass()
33-
CLASS_REGISTRY[class_name] = dyncls
34-
return dyncls
35-
36-
3717
class User(Resource, Find, FindAll, All, Count, Save, Delete, IncrementableAttributes):
3818

3919
@property

intercom/utils.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ def entity_key_from_type(type):
1717

1818
def constantize_singular_resource_name(resource_name):
1919
class_name = inflection.camelize(resource_name)
20-
from intercom.user import create_class_instance
2120
return create_class_instance(class_name)
2221

2322

@@ -27,3 +26,23 @@ def resource_class_to_collection_name(cls):
2726

2827
def resource_class_to_name(cls):
2928
return cls.__name__.lower()
29+
30+
31+
CLASS_REGISTRY = {}
32+
33+
def create_class_instance(class_name):
34+
from intercom.traits.api_resource import Resource
35+
36+
if class_name in CLASS_REGISTRY:
37+
return CLASS_REGISTRY[class_name]
38+
39+
class Meta(type):
40+
def __new__(mcs, name, bases, attributes):
41+
return super(Meta, mcs).__new__(mcs, str(class_name), bases, attributes)
42+
43+
class DynamicClass(Resource):
44+
__metaclass__ = Meta
45+
46+
dyncls = DynamicClass()
47+
CLASS_REGISTRY[class_name] = dyncls
48+
return dyncls

tests/unit/user_spec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from intercom.collection_proxy import CollectionProxy
1717
from intercom.lib.flat_store import FlatStore
1818
from intercom.user import User
19-
from intercom.user import create_class_instance
19+
from intercom.utils import create_class_instance
2020
from tests.unit import test_user_obj
2121

2222

0 commit comments

Comments
 (0)