summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Waldmann <tw AT waldmann-edv DOT de>2011-06-24 01:47:04 +0200
committerThomas Waldmann <tw AT waldmann-edv DOT de>2011-06-24 01:47:04 +0200
commit5f765b829a5a823441654d539d786f6075f80e80 (patch)
treeeef69e534b9141be393600543534bdd58a58ad0e
parentfcc213ab15e7aa783835cfead3cc9e988c8da81d (diff)
downloadxstatic-5f765b829a5a823441654d539d786f6075f80e80.tar.gz
add some first versions of setup / code (untested)
-rw-r--r--MANIFEST.in7
-rw-r--r--README.txt8
-rw-r--r--setup.py23
-rw-r--r--xstatic/__init__.py47
4 files changed, 85 insertions, 0 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..04ae8b9
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,7 @@
+include README.txt
+
+global-exclude *.pyc
+global-exclude *.pyo
+global-exclude *.orig
+global-exclude *.rej
+
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..f5c5757
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,8 @@
+XStatic
+-------
+
+The goal of XStatic family of packages is to provide static file packages
+with minimal overhead - without selling you some dependencies you don't want.
+
+XStatic has some minimal support code for working with the XStatic-* packages.
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..236e4ae
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,23 @@
+from setuptools import setup, find_packages
+
+# The README.txt file should be written in reST so that PyPI can use
+# it to generate your project's PyPI page.
+long_description = open('README.txt').read()
+
+
+setup(
+ name='XStatic',
+ version='0.0.1a0',
+ description='XStatic base package with minimal support code',
+ long_description=long_description,
+ classifiers=[],
+ keywords=[],
+ author='Thomas Waldmann',
+ author_email='tw@waldmann-edv.de',
+ license='MIT license',
+ packages=find_packages(),
+ include_package_data=True,
+ zip_safe=False,
+ install_requires=[], # there should never be a dependency!
+)
+
diff --git a/xstatic/__init__.py b/xstatic/__init__.py
new file mode 100644
index 0000000..1c362fa
--- /dev/null
+++ b/xstatic/__init__.py
@@ -0,0 +1,47 @@
+# http://remote_base/path
+# http://local_base/path
+
+class XStatic(object):
+ """
+ minimal support code to access resources from xstatic.pkg.* files
+ or CDN locations.
+ """
+ name = None # lowercase short name
+ base_dir = None # fs path to the files
+ locations = {} # CDN/remote locations
+
+ def __init__(self, root_url='/xstatic', provider='local', protocol='http'):
+ """
+ :arg root_url: the common root url path for all local xstatic
+ resources
+ :arg provider: 'local' to get it from local server or
+ a name of another source (e.g. CDN)
+ :arg protocol: 'http' (default) or 'https'
+ """
+ self.provider = provider
+ if provider == 'local':
+ self.base_url = "%s/%s" % (root_url, self.name)
+ else:
+ self.base_url = self.locations[(provider, protocol)]
+
+ def get_mapping(self):
+ """
+ query the mapping url -> directory, use this to setup
+ your own static file serving.
+ """
+ if self.provider == 'local':
+ return self.base_url, self.base_dir
+
+ def url_for(self, path):
+ """
+ compute the url for some resource.
+
+ :arg path: a relative path into the data
+ """
+ loc = self.base_url
+ if isinstance(loc, str):
+ loc = "%s/%s" % (loc, path)
+ elif isinstance(loc, dict):
+ loc = loc[path]
+ return loc
+