Skip to content
This repository has been archived by the owner on Mar 28, 2019. It is now read-only.

Refactor the imports - Refs #34 #277

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 3 additions & 2 deletions cliquet/__init__.py
Expand Up @@ -2,8 +2,8 @@
"""
import warnings
import pkg_resources

import structlog
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here we separate imports from the sdlib from imports from other libraries having import first and then from


from cornice import Service
from pyramid.settings import asbool, aslist

Expand All @@ -13,7 +13,8 @@
from cliquet import utils
from cliquet.initialization import ( # NOQA
initialize, initialize_cliquet, install_middlewares)

from cliquet import resource
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here it is not what we want.

We should probably define all to define the exaustive list of what we want to expose in cliquet itself.

See https://github.com/django/django/blob/master/django/core/files/__init__.py#L3

from cliquet import logger

# Module version, as defined in PEP-0396.
__version__ = pkg_resources.get_distribution(__package__).version
Expand Down
1 change: 0 additions & 1 deletion cliquet/errors.py
@@ -1,6 +1,5 @@
import six
from pyramid import httpexceptions

from cliquet import logger
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

from cliquet.utils import Enum, json, reapply_cors

Expand Down
37 changes: 18 additions & 19 deletions cliquet/resource.py
Expand Up @@ -12,7 +12,7 @@
from cliquet.storage import exceptions as storage_exceptions, Filter, Sort
from cliquet.errors import (http_error, raise_invalid, ERRORS,
json_error_handler)
from cliquet.schema import ResourceSchema
from cliquet.schema import Schema
from cliquet.utils import (
COMPARISON, classname, native_value, decode64, encode64, json,
current_service
Expand All @@ -31,11 +31,10 @@ def crud(**kwargs):
.. code-block:: python

from cliquet import resource

@resource.crud(collection_path='/stories',
path='/stories/{id}',
description='My favorite stories')
class Story(resource.BaseResource):
class Story(resource.Resource):
...
"""
def wrapper(klass):
Expand All @@ -52,9 +51,9 @@ def wrapper(klass):
return wrapper


class BaseResource(object):
class Resource(object):
"""Base resource class providing every endpoint."""
mapping = ResourceSchema()
mapping = Schema()
"""Schema to validate records."""

validate_schema_for = ('POST', 'PUT')
Expand Down Expand Up @@ -97,7 +96,7 @@ def schema(self):
"""Resource schema, depending on HTTP verb.

:returns: a :class:`~cornice:cornice.schemas.CorniceSchema` object
built from this resource :attr:`mapping <.BaseResource.mapping>`.
built from this resource :attr:`mapping <.Resource.mapping>`.
"""
colander_schema = self.mapping

Expand Down Expand Up @@ -141,7 +140,7 @@ def collection_get(self):
.. seealso::

Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.get_records`
:meth:`cliquet.resource.Resource.get_records`
"""
self._add_timestamp_header(self.request.response)
self._raise_304_if_not_modified()
Expand Down Expand Up @@ -176,8 +175,8 @@ def collection_post(self):
.. seealso::

Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.process_record` or
:meth:`cliquet.resource.BaseResource.create_record`
:meth:`cliquet.resource.Resource.process_record` or
:meth:`cliquet.resource.Resource.create_record`
"""
self._raise_412_if_modified()

Expand Down Expand Up @@ -205,7 +204,7 @@ def collection_delete(self):
.. seealso::

Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.delete_records`.
:meth:`cliquet.resource.Resource.delete_records`.
"""
settings = self.request.registry.settings
enabled = settings['cliquet.delete_collection_enabled']
Expand Down Expand Up @@ -239,7 +238,7 @@ def get(self):
.. seealso::

Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.get_record`.
:meth:`cliquet.resource.Resource.get_record`.
"""
self._raise_400_if_invalid_id(self.record_id)
self._add_timestamp_header(self.request.response)
Expand All @@ -262,8 +261,8 @@ def put(self):
.. seealso::

Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.process_record` or
:meth:`cliquet.resource.BaseResource.update_record`.
:meth:`cliquet.resource.Resource.process_record` or
:meth:`cliquet.resource.Resource.update_record`.
"""
self._raise_400_if_invalid_id(self.record_id)
try:
Expand Down Expand Up @@ -307,10 +306,10 @@ def patch(self):

.. seealso::
Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.get_record`,
:meth:`cliquet.resource.BaseResource.apply_changes`,
:meth:`cliquet.resource.BaseResource.process_record` or
:meth:`cliquet.resource.BaseResource.update_record`.
:meth:`cliquet.resource.Resource.get_record`,
:meth:`cliquet.resource.Resource.apply_changes`,
:meth:`cliquet.resource.Resource.process_record` or
:meth:`cliquet.resource.Resource.update_record`.
"""
self._raise_400_if_invalid_id(self.record_id)
old_record = self.get_record(self.record_id)
Expand Down Expand Up @@ -363,8 +362,8 @@ def delete(self):

.. seealso::
Add custom behaviour by overriding
:meth:`cliquet.resource.BaseResource.get_record` or
:meth:`cliquet.resource.BaseResource.delete_record`,
:meth:`cliquet.resource.Resource.get_record` or
:meth:`cliquet.resource.Resource.delete_record`,
"""
self._raise_400_if_invalid_id(self.record_id)
record = self.get_record(self.record_id)
Expand Down
14 changes: 7 additions & 7 deletions cliquet/schema.py
Expand Up @@ -4,7 +4,7 @@
from cliquet.utils import strip_whitespace, msec_time


class ResourceSchema(colander.MappingSchema):
class Schema(colander.MappingSchema):
"""Base resource schema, with *Cliquet* specific built-in options."""

class Options:
Expand All @@ -15,7 +15,7 @@ class Options:

.. code-block:: python

class Product(ResourceSchema):
class Product(Schema):
reference = colander.SchemaNode(colander.String())

class Options:
Expand All @@ -31,7 +31,7 @@ class Options:
"""Fields that cannot be updated. Values for fields will have to be
provided either during record creation, through default values using
``missing`` attribute or implementing a custom logic in
:meth:`cliquet.resource.BaseResource.process_record`.
:meth:`cliquet.resource.Resource.process_record`.
"""

preserve_unknown = False
Expand All @@ -43,13 +43,13 @@ class Options:

.. code-block:: python

class SchemaLess(ResourceSchema):
class SchemaLess(Schema):
class Options:
preserve_unknown = True
"""

def get_option(self, attr):
default_value = getattr(ResourceSchema.Options, attr)
default_value = getattr(Schema.Options, attr)
return getattr(self.Options, attr, default_value)

def is_readonly(self, field):
Expand All @@ -76,7 +76,7 @@ class TimeStamp(colander.SchemaNode):

.. code-block:: python

class Book(ResourceSchema):
class Book(Schema):
added_on = TimeStamp()
read_on = TimeStamp(auto_now=False, missing=-1)
"""
Expand Down Expand Up @@ -104,7 +104,7 @@ class URL(SchemaNode):

.. code-block:: python

class BookmarkSchema(ResourceSchema):
class BookmarkSchema(Schema):
url = URL()
"""
schema_type = String
Expand Down
21 changes: 11 additions & 10 deletions cliquet/storage/__init__.py
Expand Up @@ -48,10 +48,11 @@ def ping(self, request):
:returns: ``True`` is everything is ok, ``False`` otherwise.
:rtype: bool
"""
from cliquet.resource import BaseResource
from cliquet.resource import Resource

resource = BaseResource(request)
resource = Resource(request)
resource.name = _HEARTBEAT_RESOURCE_NAME

try:
if random.random() < _HEARTBEAT_DELETE_RATE:
self.delete_all(resource, _HEARTBEAT_USER_ID)
Expand All @@ -70,7 +71,7 @@ def collection_timestamp(self, resource, user_id):
This should take deleted records into account.

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record

Expand All @@ -82,7 +83,7 @@ def collection_timestamp(self, resource, user_id):
def create(self, resource, user_id, record):
"""Create the specified `record` in this `resource` for this `user_id`.
Assign the id to the record, using the attribute
:attr:`cliquet.resource.BaseResource.id_field`.
:attr:`cliquet.resource.Resource.id_field`.

.. note::

Expand All @@ -91,7 +92,7 @@ def create(self, resource, user_id, record):
:raises: :exc:`cliquet.storage.exceptions.UnicityError`

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record
:param dict record: the record to create.
Expand All @@ -108,7 +109,7 @@ def get(self, resource, user_id, record_id):
:raises: :exc:`cliquet.storage.exceptions.RecordNotFoundError`

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record
:param str record_id: unique identifier of the record
Expand All @@ -131,7 +132,7 @@ def update(self, resource, user_id, record_id, record):
:raises: :exc:`cliquet.storage.exceptions.UnicityError`

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record
:param str record_id: unique identifier of the record
Expand All @@ -157,7 +158,7 @@ def delete(self, resource, user_id, record_id):
:raises: :exc:`cliquet.storage.exceptions.RecordNotFoundError`

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record
:param str record_id: unique identifier of the record
Expand All @@ -171,7 +172,7 @@ def delete_all(self, resource, user_id, filters=None):
"""Delete all records in this `resource` for this `user_id`.

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record

Expand All @@ -188,7 +189,7 @@ def get_all(self, resource, user_id, filters=None, sorting=None,
"""Retrieve all records in this `resource` for this `user_id`.

:param resource: the record associated resource
:type resource: :class:`cliquet.resource.BaseResource`
:type resource: :class:`cliquet.resource.Resource`

:param str user_id: the owner of the record

Expand Down
4 changes: 2 additions & 2 deletions cliquet/tests/resource/__init__.py
Expand Up @@ -2,7 +2,7 @@

from cliquet.storage import memory
from cliquet.tests.support import unittest, DummyRequest
from cliquet.resource import BaseResource
from cliquet.resource import Resource


class BaseTest(unittest.TestCase):
Expand All @@ -11,7 +11,7 @@ def __init__(self, *args, **kwargs):
self.storage = memory.Memory()

def setUp(self):
self.resource = BaseResource(self.get_request())
self.resource = Resource(self.get_request())
self.patch_known_field = mock.patch.object(self.resource,
'is_known_field')

Expand Down
4 changes: 2 additions & 2 deletions cliquet/tests/resource/test_collection.py
@@ -1,13 +1,13 @@
import mock
from pyramid import httpexceptions

from cliquet.resource import BaseResource
from cliquet.resource import Resource
from cliquet.tests.resource import BaseTest


class CustomNameTest(BaseTest):
def test_resource_name_can_be_defined_as_property(self):
class Custom(BaseResource):
class Custom(Resource):
@property
def name(self):
return 'foo'
Expand Down
4 changes: 2 additions & 2 deletions cliquet/tests/resource/test_preconditions.py
Expand Up @@ -2,7 +2,7 @@
from pyramid import httpexceptions

from cliquet.errors import ERRORS
from cliquet.resource import BaseResource
from cliquet.resource import Resource
from cliquet.tests.resource import BaseTest


Expand All @@ -11,7 +11,7 @@ def setUp(self):
super(NotModifiedTest, self).setUp()
self.stored = self.storage.create(self.resource, 'bob', {})

self.resource = BaseResource(self.get_request())
self.resource = Resource(self.get_request())
self.resource.collection_get()
current = self.last_response.headers['Last-Modified']
self.resource.request.headers['If-Modified-Since'] = current
Expand Down
4 changes: 2 additions & 2 deletions cliquet/tests/resource/test_sync.py
Expand Up @@ -4,7 +4,7 @@
import six
from pyramid import httpexceptions

from cliquet.resource import BaseResource
from cliquet.resource import Resource
from cliquet.tests.resource import BaseTest
from cliquet.tests.support import ThreadMixin

Expand Down Expand Up @@ -34,7 +34,7 @@ def test_the_timestamp_header_is_equal_to_last_modification(self):
result = self.resource.collection_post()
modification = result['last_modified']

self.resource = BaseResource(self.get_request())
self.resource = Resource(self.get_request())
self.resource.collection_get()
header = int(self.last_response.headers['Last-Modified'])
self.assertEqual(header, modification)
Expand Down
4 changes: 2 additions & 2 deletions cliquet/tests/resource/test_views_cors.py
@@ -1,5 +1,5 @@
import mock

import cliquet
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it necessary?

from .test_views import BaseWebTest, FakeAuthentMixin


Expand Down Expand Up @@ -84,7 +84,7 @@ def test_present_on_unauthorized(self):
self.assertIn('Access-Control-Allow-Origin', response.headers)

def test_present_on_internal_error(self):
with mock.patch('cliquet.resource.BaseResource.get_records',
with mock.patch('cliquet.resource.Resource.get_records',
side_effect=ValueError):
response = self.app.get('/mushrooms',
headers=self.headers, status=500)
Expand Down