On May 25, 2:53 am, Jorge Vargas <[email protected]> wrote:
> Now here is the fun fact. I'm sure TG+ all it's dependencies is many
> more LOC than django, someone should count those.

First, let me say I'm sorry for my original bogus reasoning about
mod_wsgi's daemon mode.

In any case, besides the LOC count, there seems to be another issue
which is the unconditional loading of all dependencies. Here is the
list of loaded modules (taken from sys.modules) after a simple "import
tg":

- ConfigParser
- Cookie
- FixTk
- HTMLParser
- Image
- ImageColor
- ImageDraw
- ImageFont
- ImageMode
- ImagePalette
- SocketServer
- StringIO
- UserDict
- __builtin__
- __future__
- __main__
- _abcoll
- _ast
- _bisect
- _bsddb
- _codecs
- _collections
- _functools
- _hashlib
- _heapq
- _imaging
- _json
- _locale
- _random
- _socket
- _sre
- _ssl
- _struct
- _warnings
- _weakref
- _xmlplus
- abc
- anydbm
- array
- atexit
- base64
- bdb
- beaker
- beaker.cache
- beaker.container
- beaker.converters
- beaker.exceptions
- beaker.ext
- beaker.ext.database
- beaker.ext.sqla
- beaker.middleware
- beaker.session
- beaker.synchronization
- beaker.util
- binascii
- bisect
- bsddb
- bsddb.db
- bsddb.dbutils
- cPickle
- cStringIO
- calendar
- cgi
- cmd
- codecs
- collections
- commands
- compiler
- compiler.ast
- compiler.consts
- compiler.future
- compiler.misc
- compiler.pyassem
- compiler.pycodegen
- compiler.symbols
- compiler.syntax
- compiler.transformer
- compiler.visitor
- copy
- copy_reg
- datetime
- dbhash
- dbm
- decimal
- decorator
- dis
- distutils
- distutils.dep_util
- distutils.errors
- distutils.log
- distutils.spawn
- distutils.util
- dumbdbm
- email
- email._parseaddr
- email.base64mime
- email.base64mime
- email.charset
- email.charset
- email.encoders
- email.encoders
- email.errors
- email.errors
- email.feedparser
- email.generator
- email.header
- email.iterators
- email.iterators
- email.message
- email.message
- email.mime
- email.mime.audio
- email.mime.base
- email.mime.base
- email.mime.image
- email.mime.message
- email.mime.multipart
- email.mime.multipart
- email.mime.nonmultipart
- email.mime.nonmultipart
- email.mime.text
- email.mime.text
- email.parser
- email.quoprimime
- email.quoprimime
- email.utils
- email.utils
- encodings
- encodings.aliases
- encodings.hex_codec
- encodings.latin_1
- encodings.utf_8
- errno
- exceptions
- fcntl
- fnmatch
- formencode
- formencode.api
- formencode.compound
- formencode.declarative
- formencode.fieldstorage
- formencode.foreach
- formencode.htmlfill
- formencode.interfaces
- formencode.rewritingparser
- formencode.schema
- formencode.validators
- formencode.variabledecode
- functools
- gc
- gdbm
- genericpath
- genshi
- genshi._speedups
- genshi.builder
- genshi.core
- genshi.filters
- genshi.filters.html
- genshi.filters.i18n
- genshi.filters.transform
- genshi.input
- genshi.output
- genshi.path
- genshi.template
- genshi.template.base
- genshi.template.directives
- genshi.template.eval
- genshi.template.interpolation
- genshi.template.loader
- genshi.template.markup
- genshi.template.plugin
- genshi.template.text
- genshi.util
- getpass
- gettext
- grp
- hashlib
- heapq
- hmac
- htmlentitydefs
- httplib
- imp
- inspect
- itertools
- json
- json.decoder
- json.encoder
- json.scanner
- keyword
- linecache
- locale
- logging
- logging.config
- logging.handlers
- mako
- mako._ast_util
- mako.ast
- mako.codegen
- mako.exceptions
- mako.ext
- mako.ext.turbogears
- mako.filters
- mako.lexer
- mako.lookup
- mako.parsetree
- mako.pygen
- mako.pyparser
- mako.runtime
- mako.template
- mako.util
- markupbase
- marshal
- math
- mimetools
- mimetypes
- modulefinder
- new
- opcode
- operator
- optparse
- os
- parser
- paste
- paste.cascade
- paste.config
- paste.deploy
- paste.deploy.config
- paste.deploy.converters
- paste.deploy.loadwsgi
- paste.deploy.util
- paste.deploy.util.fixtypeerror
- paste.deploy.util.threadinglocal
- paste.errordocument
- paste.fileapp
- paste.httpexceptions
- paste.httpheaders
- paste.recursive
- paste.registry
- paste.request
- paste.response
- paste.script
- paste.script.appinstall
- paste.script.bool_optparse
- paste.script.command
- paste.script.copydir
- paste.script.pluginlib
- paste.script.templates
- paste.script.util
- paste.script.util.secret
- paste.script.util.uuid
- paste.urlparser
- paste.util
- paste.util.converters
- paste.util.import_string
- paste.util.looper
- paste.util.mimeparse
- paste.util.multidict
- paste.util.quoting
- paste.util.template
- paste.util.threadinglocal
- paste.wsgilib
- pdb
- peak
- peak.rules
- peak.rules.ast_builder
- peak.rules.codegen
- peak.rules.core
- peak.rules.criteria
- peak.rules.indexing
- peak.rules.predicates
- peak.util
- peak.util.addons
- peak.util.assembler
- peak.util.decorators
- peak.util.extremes
- peak.util.symbols
- pickle
- pkg_resources
- pkgutil
- posix
- posixpath
- pprint
- prioritized_methods
- pwd
- pyexpat.errors
- pyexpat.model
- pygments
- pygments.console
- pygments.filter
- pygments.filters
- pygments.formatter
- pygments.formatters
- pygments.formatters._mapping
- pygments.formatters.bbcode
- pygments.formatters.html
- pygments.formatters.img
- pygments.formatters.latex
- pygments.formatters.other
- pygments.formatters.rtf
- pygments.formatters.svg
- pygments.formatters.terminal
- pygments.formatters.terminal256
- pygments.lexer
- pygments.lexers
- pygments.lexers._mapping
- pygments.lexers.agile
- pygments.lexers.functional
- pygments.lexers.special
- pygments.plugin
- pygments.style
- pygments.styles
- pygments.styles.default
- pygments.token
- pygments.unistring
- pygments.util
- pylons
- pylons.config
- pylons.configuration
- pylons.controllers
- pylons.controllers.core
- pylons.controllers.util
- pylons.controllers.xmlrpc
- pylons.decorators
- pylons.decorators.util
- pylons.error
- pylons.i18n
- pylons.i18n.translation
- pylons.legacy
- pylons.middleware
- pylons.templating
- pylons.util
- pylons.wsgiapp
- quopri
- random
- re
- readline
- repoze
- repoze.what
- repoze.what.plugins
- repoze.what.plugins.pylonshq
- repoze.what.plugins.pylonshq.protectors
- repoze.what.plugins.pylonshq.utils
- repoze.what.predicates
- repoze.who
- repoze.who.plugins
- repr
- rfc822
- routes
- routes.base
- routes.mapper
- routes.middleware
- routes.route
- routes.threadinglocal
- routes.util
- select
- sets
- sgmlop
- shutil
- signal
- simplejson
- simplejson._speedups
- simplejson.decoder
- simplejson.encoder
- simplejson.scanner
- site
- smtplib
- socket
- sqlalchemy
- sqlalchemy.databases
- sqlalchemy.engine
- sqlalchemy.engine.base
- sqlalchemy.engine.strategies
- sqlalchemy.engine.threadlocal
- sqlalchemy.engine.url
- sqlalchemy.exc
- sqlalchemy.ext
- sqlalchemy.log
- sqlalchemy.pool
- sqlalchemy.queue
- sqlalchemy.schema
- sqlalchemy.sql
- sqlalchemy.sql.expression
- sqlalchemy.sql.operators
- sqlalchemy.sql.visitors
- sqlalchemy.types
- sqlalchemy.util
- sre_compile
- sre_constants
- sre_parse
- ssl
- stat
- string
- strop
- struct
- subprocess
- symbol
- sys
- tarfile
- tempfile
- tempita
- tempita._looper
- termios
- textwrap
- tg
- tg.configuration
- tg.controllers
- tg.decorators
- tg.error
- tg.exceptions
- tg.flash
- tg.i18n
- tg.release
- tg.render
- tg.util
- tg.wsgiapp
- thread
- threading
- time
- token
- tokenize
- traceback
- turbojson
- turbojson.jsonify
- turbojson.jsonsupport
- tw
- tw.api
- tw.core
- tw.core.base
- tw.core.engine_plugin
- tw.core.exceptions
- tw.core.js
- tw.core.meta
- tw.core.middleware
- tw.core.registry
- tw.core.resource_injector
- tw.core.resources
- tw.core.util
- tw.core.view
- tw.mods
- tw.mods.base
- types
- urllib
- urllib2
- urlparse
- uu
- warnings
- weakref
- weberror
- weberror.collector
- weberror.errormiddleware
- weberror.evalcontext
- weberror.evalexception
- weberror.formatter
- weberror.reporter
- weberror.util
- weberror.util.escaping
- weberror.util.serial_number_generator
- weberror.util.source_encoding
- webflash
- webhelpers
- webhelpers.html
- webhelpers.html.builder
- webhelpers.mimehelper
- webhelpers.paginate
- webhelpers.util
- webob
- webob.acceptparse
- webob.byterange
- webob.cachecontrol
- webob.datastruct
- webob.etag
- webob.exc
- webob.headerdict
- webob.multidict
- webob.statusreasons
- webob.updatedict
- webob.util
- webob.util.dictmixin
- xml.FtCore
- xml.dom
- xml.dom.DOMImplementation
- xml.dom.MessageSource
- xml.dom.NodeFilter
- xml.dom.Range
- xml.dom.domreg
- xml.dom.html
- xml.dom.html.HTMLDOMImplementation
- xml.dom.minicompat
- xml.dom.minidom
- xml.dom.xmlbuilder
- xml.parsers
- xml.parsers.expat
- xml.parsers.pyexpat
- xml.sax
- xml.sax._exceptions
- xml.sax.handler
- xml.sax.sax2exts
- xml.sax.saxexts
- xml.sax.saxlib
- xml.sax.saxutils
- xml.sax.xmlreader
- xmlrpclib
- zipfile
- zipimport
- zlib
- zope

I'm not sure why all of PIL, genshi, mako, tempita, pygments (!), the
whole paste and tw.core subhierarchies, among others, have to be
loaded like that.

Regards

Antoine.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to