add some first versions of setup / code (untested)

This commit is contained in:
Thomas Waldmann
2011-06-24 01:47:04 +02:00
parent fcc213ab15
commit 5f765b829a
4 changed files with 85 additions and 0 deletions

7
MANIFEST.in Normal file
View File

@@ -0,0 +1,7 @@
include README.txt
global-exclude *.pyc
global-exclude *.pyo
global-exclude *.orig
global-exclude *.rej

8
README.txt Normal file
View File

@@ -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.

23
setup.py Normal file
View File

@@ -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!
)

47
xstatic/__init__.py Normal file
View File

@@ -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