Repository: Shopify/shopify_python_api

Issue:
How do I retrieve Location information?
I see that dir(shopify) doesn't show me Location as an attribute, but I'm wondering if there's another way to use the API to get it (even though perhaps it's not wrapped as nicely as these other resources):

https://docs.shopify.com/api/location

dir(shopify)
['Address', 'ApplicationCharge', 'Article', 'Asset', 'BillingAddress', 'Blog', 'CarrierService', 'Cart', 'Checkout', 'Collect', 'Comment', 'Country', 'CustomCollection', 'Customer', 'CustomerGroup', 'CustomerSavedSearch', 'Event', 'Fulfillment', 'FulfillmentService', 'GiftCard', 'Image', 'LineItem', 'Metafield', 'NoteAttribute', 'Option', 'Order', 'OrderRisk', 'Page', 'PaymentDetails', 'Policy', 'Product', 'ProductSearchEngine', 'Province', 'Receipt', 'RecurringApplicationCharge', 'Redirect', 'Rule', 'ScriptTag', 'Session', 'ShippingAddress', 'ShippingLine', 'Shop', 'ShopifyResource', 'SmartCollection', 'TaxLine', 'Theme', 'Transaction', 'VERSION', 'ValidationException', 'Variant', 'Webhook', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'address', 'application_charge', 'article', 'asset', 'base', 'billing_address', 'blog', 'carrier_service', 'cart', 'checkout', 'collect', 'comment', 'country', 'custom_collection', 'customer', 'customer_group', 'customer_saved_search', 'event', 'fulfillment', 'fulfillment_service', 'gift_card', 'image', 'line_item', 'metafield', 'mixins', 'note_attribute', 'option', 'order', 'order_risk', 'page', 'payment_details', 'policy', 'product', 'product_search_engine', 'province', 'receipt', 'recurring_application_charge', 'redirect', 'resources', 'rule', 'script_tag', 'session', 'shipping_address', 'shipping_line', 'shop', 'smart_collection', 'tax_line', 'theme', 'transaction', 'variant', 'version', 'webhook', 'yamlobjects']

Can I use this module to get location information?

Thanks!

Discussion:

Patch:
diff --git a/shopify/resources/__init__.py b/shopify/resources/__init__.py
index adacc08..da17196 100644
--- a/shopify/resources/__init__.py
+++ b/shopify/resources/__init__.py
@@ -47,5 +47,6 @@ from .smart_collection import SmartCollection
 from .gift_card import GiftCard
 from .discount import Discount
 from .shipping_zone import ShippingZone
+from .location import Location
 
 from ..base import ShopifyResource
diff --git a/shopify/resources/location.py b/shopify/resources/location.py
new file mode 100644
index 0000000..671b5b0
--- /dev/null
+++ b/shopify/resources/location.py
@@ -0,0 +1,5 @@
+from ..base import ShopifyResource
+
+
+class Location(ShopifyResource):
+    pass


Test patch:
diff --git a/test/fixtures/location.json b/test/fixtures/location.json
new file mode 100644
index 0000000..ae07fac
--- /dev/null
+++ b/test/fixtures/location.json
@@ -0,0 +1,19 @@
+{
+  "location": {
+    "id": 487838322,
+    "name": "Fifth Avenue AppleStore",
+    "deleted_at": null,
+    "address1": null,
+    "address2": null,
+    "city": null,
+    "zip": null,
+    "province": null,
+    "country": "US",
+    "phone": null,
+    "created_at": "2015-12-08T11:44:58-05:00",
+    "updated_at": "2015-12-08T11:44:58-05:00",
+    "country_code": "US",
+    "country_name": "United States",
+    "province_code": null
+  }
+}
diff --git a/test/fixtures/locations.json b/test/fixtures/locations.json
new file mode 100644
index 0000000..906f7b7
--- /dev/null
+++ b/test/fixtures/locations.json
@@ -0,0 +1,38 @@
+{
+  "locations": [
+    {
+      "id": 487838322,
+      "name": "Fifth Avenue AppleStore",
+      "deleted_at": null,
+      "address1": null,
+      "address2": null,
+      "city": null,
+      "zip": null,
+      "province": null,
+      "country": "US",
+      "phone": null,
+      "created_at": "2015-12-08T11:44:58-05:00",
+      "updated_at": "2015-12-08T11:44:58-05:00",
+      "country_code": "US",
+      "country_name": "United States",
+      "province_code": null
+    },
+    {
+      "id": 1034478814,
+      "name": "Berlin Store",
+      "deleted_at": null,
+      "address1": null,
+      "address2": null,
+      "city": null,
+      "zip": null,
+      "province": null,
+      "country": "DE",
+      "phone": null,
+      "created_at": "2015-12-08T11:44:58-05:00",
+      "updated_at": "2015-12-08T11:44:58-05:00",
+      "country_code": "DE",
+      "country_name": "Germany",
+      "province_code": null
+    }
+  ]
+}
diff --git a/test/locations_test.py b/test/locations_test.py
new file mode 100644
index 0000000..44a6768
--- /dev/null
+++ b/test/locations_test.py
@@ -0,0 +1,14 @@
+import shopify
+from test.test_helper import TestCase
+
+class LocationsTest(TestCase):
+    def test_fetch_locations(self):
+        self.fake("locations", method='GET', body=self.load_fixture('locations'))
+        locations = shopify.Location.find()
+        self.assertEqual(2,len(locations))
+
+    def test_fetch_location(self):
+        self.fake("locations/487838322", method='GET', body=self.load_fixture('location'))
+        location = shopify.Location.find(487838322)
+        self.assertEqual(location.id,487838322)
+        self.assertEqual(location.name,"Fifth Avenue AppleStore")