add some first versions of setup / code (untested)
This commit is contained in:
		
							
								
								
									
										7
									
								
								MANIFEST.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								MANIFEST.in
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										8
									
								
								README.txt
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										23
									
								
								setup.py
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										47
									
								
								xstatic/__init__.py
									
									
									
									
									
										Normal 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 | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Thomas Waldmann
					Thomas Waldmann