2009-04-10 08:06:44 +00:00
# Scrapy setup.py script
#
# Most of the code here was taken from Django setup.py
2008-09-18 14:58:43 +00:00
2009-04-10 08:06:44 +00:00
from distutils . core import setup
from distutils . command . install_data import install_data
from distutils . command . install import INSTALL_SCHEMES
import os
import sys
2008-09-18 14:58:43 +00:00
2009-04-10 08:06:44 +00:00
class osx_install_data ( install_data ) :
# On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../
# which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix
# for this in distutils.command.install_data#306. It fixes install_lib but not
# install_data, which is why we roll our own install_data class.
def finalize_options ( self ) :
# By the time finalize_options is called, install.install_lib is set to the
# fixed directory, so we set the installdir to install_lib. The
# install_data class uses ('install_data', 'install_dir') instead.
self . set_undefined_options ( ' install ' , ( ' install_lib ' , ' install_dir ' ) )
install_data . finalize_options ( self )
if sys . platform == " darwin " :
cmdclasses = { ' install_data ' : osx_install_data }
else :
cmdclasses = { ' install_data ' : install_data }
def fullsplit ( path , result = None ) :
"""
Split a pathname into components ( the opposite of os . path . join ) in a
platform - neutral way .
"""
if result is None :
result = [ ]
head , tail = os . path . split ( path )
if head == ' ' :
return [ tail ] + result
if head == path :
return result
return fullsplit ( head , [ tail ] + result )
# Tell distutils to put the data_files in platform-specific installation
# locations. See here for an explanation:
# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb
for scheme in INSTALL_SCHEMES . values ( ) :
scheme [ ' data ' ] = scheme [ ' purelib ' ]
# Compile the list of packages available, because distutils doesn't have
# an easy way to do this.
packages , data_files = [ ] , [ ]
root_dir = os . path . dirname ( __file__ )
if root_dir != ' ' :
os . chdir ( root_dir )
scrapy_dir = ' scrapy '
def is_not_module ( filename ) :
return os . path . splitext ( f ) [ 1 ] not in [ ' .py ' , ' .pyc ' , ' .pyo ' ]
for dirpath , dirnames , filenames in os . walk ( scrapy_dir ) :
# Ignore dirnames that start with '.'
for i , dirname in enumerate ( dirnames ) :
if dirname . startswith ( ' . ' ) : del dirnames [ i ]
if ' __init__.py ' in filenames :
packages . append ( ' . ' . join ( fullsplit ( dirpath ) ) )
data = [ f for f in filenames if is_not_module ( f ) ]
if data :
data_files . append ( [ dirpath , [ os . path . join ( dirpath , f ) for f in data ] ] )
elif filenames :
data_files . append ( [ dirpath , [ os . path . join ( dirpath , f ) for f in filenames ] ] )
# Small hack for working with bdist_wininst.
# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
if len ( sys . argv ) > 1 and sys . argv [ 1 ] == ' bdist_wininst ' :
for file_info in data_files :
file_info [ 0 ] = ' \\ PURELIB \\ %s ' % file_info [ 0 ]
# Dynamically calculate the version based on scrapy.__version__
version = __import__ ( ' scrapy ' ) . __version__
if u ' SVN ' in version :
version = ' ' . join ( version . split ( ' ' ) [ : - 1 ] )
2008-09-18 14:58:43 +00:00
2008-09-18 16:08:33 +00:00
setup (
2009-09-16 22:40:36 -03:00
name = ' scrapy ' ,
2009-04-10 08:06:44 +00:00
version = version ,
2008-09-18 14:58:43 +00:00
url = ' http://scrapy.org ' ,
2009-04-10 08:06:44 +00:00
description = ' A high-level Python Screen Scraping framework ' ,
long_description = ' Scrapy is a high level scraping and web crawling framework for writing spiders to crawl and parse web pages for all kinds of purposes, from information retrieval to monitoring or testing web sites. ' ,
author = ' Scrapy developers ' ,
2009-09-16 22:40:36 -03:00
maintainer = ' Pablo Hoffman ' ,
maintainer_email = ' pablo@pablohoffman.com ' ,
2009-04-10 08:06:44 +00:00
license = ' BSD ' ,
packages = packages ,
cmdclass = cmdclasses ,
data_files = data_files ,
2009-08-24 15:43:36 -03:00
scripts = [ ' bin/scrapy-ctl.py ' ] ,
2009-09-17 11:22:48 -03:00
classifiers = [
' Programming Language :: Python ' ,
' Programming Language :: Python :: 2.5 ' ,
' Programming Language :: Python :: 2.6 ' ,
' Programming Language :: Python :: 2.7 ' ,
' License :: OSI Approved :: BSD License ' ,
' Operating System :: OS Independent ' ,
' Development Status :: 5 - Production/Stable ' ,
' Intended Audience :: Developers ' ,
' Environment :: Console ' ,
' Topic :: Software Development :: Libraries :: Application Frameworks ' ,
' Topic :: Software Development :: Libraries :: Python Modules ' ,
' Topic :: Internet :: WWW/HTTP ' ,
]
2008-09-18 14:58:43 +00:00
)