Skip to content

Commit

Permalink
Deal with a couple more func_code/func_defaults vs. double under code…
Browse files Browse the repository at this point in the history
…/defaults
  • Loading branch information
hannosch committed Nov 2, 2014
1 parent f1a9a52 commit 7a9f9e1
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 23 deletions.
18 changes: 10 additions & 8 deletions src/App/special_dtml.py
Expand Up @@ -36,12 +36,14 @@ class HTML(DocumentTemplate.HTML,Persistence.Persistent,):
class ClassicHTMLFile(DocumentTemplate.HTMLFile,MethodObject.Method,):
"Persistent HTML Document Templates read from files"

class func_code: pass
func_code=func_code()
func_code.co_varnames='trueself', 'self', 'REQUEST'
func_code.co_argcount=3
_need__name__=1
_v_last_read=0
class func_code:
pass

func_code = __code__ = func_code()
func_code.co_varnames = 'trueself', 'self', 'REQUEST'
func_code.co_argcount = 3
_need__name__ = 1
_v_last_read = 0

def __init__(self, name, _prefix=None, **kw):
if _prefix is None:
Expand Down Expand Up @@ -92,8 +94,8 @@ def __call__(self, *args, **kw):
class DTMLFile(Bindings, Explicit, ClassicHTMLFile):
"HTMLFile with bindings and support for __render_with_namespace__"

func_code = None
func_defaults = None
func_code = __code__ = None
func_defaults = __defaults__ = None
_need__name__=1

_Bindings_ns_class = TemplateDict
Expand Down
4 changes: 2 additions & 2 deletions src/Products/PageTemplates/PageTemplateFile.py
Expand Up @@ -51,8 +51,8 @@ class PageTemplateFile(SimpleItem, Script, PageTemplate, Traversable):

meta_type = 'Page Template (File)'

func_defaults = None
func_code = FuncCode((), 0)
func_defaults = __defaults__ = None
func_code = __code__ = FuncCode((), 0)
_v_last_read = 0

# needed by AccessControl.class_init.InitializeClass
Expand Down
4 changes: 2 additions & 2 deletions src/Products/PageTemplates/ZopePageTemplate.py
Expand Up @@ -75,8 +75,8 @@ class ZopePageTemplate(Script, PageTemplate, Historical, Cacheable,
meta_type = 'Page Template'
output_encoding = 'utf-8' # provide default for old instances

func_defaults = None
func_code = FuncCode((), 0)
func_defaults = __defaults__ = None
func_code = __code__ = FuncCode((), 0)

_default_bindings = {'name_subpath': 'traverse_subpath'}
_default_content_fn = os.path.join(package_home(globals()),
Expand Down
4 changes: 2 additions & 2 deletions src/Shared/DC/Scripts/Script.py
Expand Up @@ -38,8 +38,8 @@ class Script(SimpleItem, BindingsUI):
security = ClassSecurityInfo()

index_html = None
func_defaults=()
func_code=None
func_defaults = __defaults__ = ()
func_code = __code__ = None

_Bindings_ns_class = TemplateDict

Expand Down
21 changes: 13 additions & 8 deletions src/Shared/DC/Scripts/Signature.py
Expand Up @@ -15,27 +15,32 @@
This provides support for simulating function signatures
"""


class FuncCode:

def __init__(self, varnames, argcount):
self.co_varnames=varnames
self.co_argcount=argcount
self.co_varnames = varnames
self.co_argcount = argcount

def __cmp__(self, other):
if other is None: return 1
try: return cmp((self.co_argcount, self.co_varnames),
(other.co_argcount, other.co_varnames))
except: return 1
if other is None:
return 1
try:
return cmp((self.co_argcount, self.co_varnames),
(other.co_argcount, other.co_varnames))
except Exception:
return 1

# This is meant to be imported directly into a class.


def _setFuncSignature(self, defaults=None, varnames=(), argcount=-1):
# Simplify calls.
if argcount < 0 and varnames:
argcount = len(varnames)
# Generate a change only if we have to.
if self.func_defaults != defaults:
self.func_defaults = defaults
self.func_defaults = self.__defaults__ = defaults
code = FuncCode(varnames, argcount)
if self.func_code != code:
self.func_code = code
self.func_code = self.__code__ = code
2 changes: 1 addition & 1 deletion src/ZPublisher/Client.py
Expand Up @@ -63,7 +63,7 @@ def __init__(self,url,
headers['Host']=urlparse(url)[1]
self.func_name=url[url.rfind('/')+1:]
self.__dict__['__name__']=self.func_name
self.func_defaults=()
self.func_defaults = self.__defaults__ = ()

self.args=arguments

Expand Down

0 comments on commit 7a9f9e1

Please sign in to comment.