Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
cbc76db2
Commit
cbc76db2
authored
Mar 15, 2000
by
Michel Pelletier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Restructuring...
parent
def6ee93
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
112 additions
and
1471 deletions
+112
-1471
lib/python/Zope/Interfaces/Interface.py
lib/python/Zope/Interfaces/Interface.py
+112
-0
lib/python/Zope/Interfaces/Interface/Attr.py
lib/python/Zope/Interfaces/Interface/Attr.py
+0
-97
lib/python/Zope/Interfaces/Interface/Basic.py
lib/python/Zope/Interfaces/Interface/Basic.py
+0
-107
lib/python/Zope/Interfaces/Interface/Exceptions.py
lib/python/Zope/Interfaces/Interface/Exceptions.py
+0
-100
lib/python/Zope/Interfaces/Interface/Interface.py
lib/python/Zope/Interfaces/Interface/Interface.py
+0
-92
lib/python/Zope/Interfaces/Interface/Mapping.py
lib/python/Zope/Interfaces/Interface/Mapping.py
+0
-106
lib/python/Zope/Interfaces/Interface/Method.py
lib/python/Zope/Interfaces/Interface/Method.py
+0
-139
lib/python/Zope/Interfaces/Interface/Number.py
lib/python/Zope/Interfaces/Interface/Number.py
+0
-179
lib/python/Zope/Interfaces/Interface/Standard.py
lib/python/Zope/Interfaces/Interface/Standard.py
+0
-104
lib/python/Zope/Interfaces/Interface/Util.py
lib/python/Zope/Interfaces/Interface/Util.py
+0
-167
lib/python/Zope/Interfaces/Interface/__init__.py
lib/python/Zope/Interfaces/Interface/__init__.py
+0
-113
lib/python/Zope/Interfaces/Interface/iclass.py
lib/python/Zope/Interfaces/Interface/iclass.py
+0
-267
No files found.
lib/python/Zope/Interfaces/Interface.py
0 → 100644
View file @
cbc76db2
import
types
class
Interface
:
"""
Describes an interface.
"""
__extends__
=
()
def
__init__
(
self
,
klass
):
# Creates an interface instance given a python class.
# the class describes the inteface; it contains
# methods, arguments and doc strings.
#
# The name of the interface is deduced from the __name__
# attribute.
#
# The base interfaces are deduced from the __extends__
# attribute.
self
.
name
=
klass
.
__dict__
[
'__name__'
]
self
.
doc
=
klass
.
__doc__
if
hasattr
(
klass
,
'__extends__'
):
self
.
extends
=
klass
.
__extends__
# Get info on attributes, ignore
# attributes that start with underscore.
self
.
attributes
=
[]
for
k
,
v
in
klass
.
__dict__
.
items
():
if
k
[
0
]
!=
'_'
:
if
type
(
v
)
==
types
.
FunctionType
:
self
.
attributes
.
append
(
Method
(
v
))
else
:
self
.
attributes
.
append
(
Attribute
(
k
))
def
getAttributes
(
self
):
"""
Returns the interfaces attributes.
"""
return
self
.
attributes
class
Attribute
:
"""
Describes an attribute of an interface.
"""
permission
=
""
# how to indicate permissions, in docstrings?
def
__init__
(
self
,
name
):
self
.
name
=
name
self
.
doc
=
""
# how to get doc strings from attributes?
class
Method
(
Attribute
):
"""
Describes a Method attribute of an interface.
required - a sequence of required arguments
optional - a sequence of tuples (name, default value)
varargs - the name of the variable argument or None
kwargs - the name of the kw argument or None
"""
varargs
=
None
kwargs
=
None
def
__init__
(
self
,
func
):
self
.
name
=
func
.
__name__
self
.
doc
=
func
.
__doc__
# figure out the method arguments
# mostly stolen from pythondoc
CO_VARARGS
=
4
CO_VARKEYWORDS
=
8
names
=
func
.
func_code
.
co_varnames
nrargs
=
func
.
func_code
.
co_argcount
if
func
.
func_defaults
:
nrdefaults
=
len
(
func
.
func_defaults
)
else
:
nrdefaults
=
0
self
.
required
=
names
[:
nrargs
-
nrdefaults
]
if
func
.
func_defaults
:
self
.
optional
=
tuple
(
map
(
None
,
names
[
nrargs
-
nrdefaults
:
nrargs
],
func
.
func_defaults
))
else
:
self
.
optional
=
()
varargs
=
[]
ix
=
nrargs
if
func
.
func_code
.
co_flags
&
CO_VARARGS
:
self
.
varargs
=
names
[
ix
]
ix
=
ix
+
1
if
func
.
func_code
.
co_flags
&
CO_VARKEYWORDS
:
self
.
kwargs
=
names
[
ix
]
if
__name__
==
'__main__'
:
class
T
:
"test interface description"
__name__
=
"org.zope.test"
a
=
None
def
foo
(
self
,
a
,
b
=
None
,
*
c
,
**
d
):
"foo description"
i
=
Interface
(
T
)
print
i
.
name
print
i
.
doc
for
a
in
i
.
getAttributes
():
print
a
.
__dict__
lib/python/Zope/Interfaces/Interface/Attr.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
class
Attribute
:
"""Attribute descriptions
"""
def
__init__
(
self
,
__name__
=
None
,
__doc__
=
None
):
"""Create an 'attribute' description
"""
self
.
__name__
=
__name__
self
.
__doc__
=
__doc__
or
__name__
def
documentation
(
self
):
return
self
.
__doc__
lib/python/Zope/Interfaces/Interface/Basic.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
from
iclass
import
Base
class
Mutable
(
Base
):
"""Mutable objects
"""
class
Comparable
(
Base
):
"""Objects that can be tested for equality
"""
class
Orderable
(
Comparable
):
"""Objects that can be compared with < > == <= >= !="""
class
Hashable
(
Base
):
"""Objects that support hash"""
class
HashKey
(
Comparable
,
Hashable
):
"""Objects that are immutable with respect to state that
influences comparisons or hash values"""
lib/python/Zope/Interfaces/Interface/Exceptions.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
class
BrokenImplementation
(
Exception
):
"""An attribute is not completely implemented.
"""
def
__init__
(
self
,
interface
,
name
):
self
.
interface
=
interface
self
.
name
=
name
def
__str__
(
self
):
return
"""An object has failed to implement interface %(interface)s
The %(name)s attribute was not provided.
"""
%
self
.
__dict__
class
InvalidInterface
(
Exception
):
pass
lib/python/Zope/Interfaces/Interface/Interface.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
from
iclass
import
iclass
class
Interface
(
iclass
):
""" This is a high level interface object. You can just pass a
class to this interface and it will deduce an interface object
from that class """
lib/python/Zope/Interfaces/Interface/Mapping.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
import
Basic
,
Util
class
Mapping
(
Basic
.
Base
):
"anything supporting __getitem__"
class
Sized
(
Basic
.
Base
):
"anything supporting __len"
class
MutableMapping
(
Basic
.
Mutable
):
"Has __setitem__ and __delitem__"
class
Sequence
(
Mapping
):
"Keys must be integers in a sequence starting at 0."
class
Sequential
(
Sequence
):
"Keys must be used in order"
Util
.
assertTypeImplements
(
type
(()),
(
Sequence
,
Sized
,
Basic
.
HashKey
))
Util
.
assertTypeImplements
(
type
([]),
(
Sequence
,
Sized
,
MutableMapping
))
Util
.
assertTypeImplements
(
type
({}),
(
Mapping
,
Sized
,
MutableMapping
))
lib/python/Zope/Interfaces/Interface/Method.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
"""Method interfaces
"""
import
Exceptions
from
Attr
import
Attribute
class
MethodClass
:
def
fromFunction
(
self
,
func
,
interface
=
''
):
m
=
Method
(
func
.
__name__
,
func
.
__doc__
)
defaults
=
func
.
func_defaults
or
()
c
=
func
.
func_code
na
=
c
.
co_argcount
names
=
c
.
co_varnames
d
=
{}
nr
=
na
-
len
(
defaults
)
if
nr
==
0
:
defaults
=
defaults
[
1
:]
nr
=
1
for
i
in
range
(
len
(
defaults
)):
d
[
names
[
i
+
nr
]]
=
defaults
[
i
]
m
.
positional
=
names
[
1
:
na
]
m
.
required
=
names
[
1
:
nr
]
m
.
optional
=
d
try
:
m
.
varargs
=
not
not
(
c
.
co_flags
&
4
)
m
.
kwargs
=
not
not
(
c
.
co_flags
&
8
)
except
:
pass
m
.
interface
=
interface
return
m
class
Method
(
Attribute
):
"""Method interfaces
The idea here is that you have objects that describe methods.
This provides an opportunity for rich meta-data.
"""
fromFunction
=
MethodClass
().
fromFunction
interface
=
''
def
__init__
(
self
,
__name__
=
None
,
__doc__
=
None
):
"""Create a 'method' description
"""
self
.
__name__
=
__name__
self
.
__doc__
=
__doc__
or
__name__
## def __call__(self, *args, **kw):
## raise Exception.BrokenImplementation(self.interface, self.name)
lib/python/Zope/Interfaces/Interface/Number.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
import
Basic
,
Util
class
BitNumber
(
Basic
.
Base
):
"""Numbers that can be interpreted as strings of bits
they support & | ~ ^ << >>
"""
class
Number
(
Basic
.
Base
):
"""Numeric interface
it is assumed that numeric types are embedded in each other in some
way (this is the Scheme numerical tower I think); they support
operators + - *, usually / and %, perhaps **
"""
class
Offsetable
(
Basic
.
Base
):
"""Things that you can subtract and add numbers too
e.g. Date-Time values.
"""
class
Real
(
Number
):
"""any subset of the real numbers (this includes ints and rationals)
"""
class
Complex
(
Number
):
"""has re and im fields (which are themselves real)
"""
class
Exact
(
Number
):
"""e.g. integers and rationals; also fixed point
"""
class
AbritraryPrecision
(
Exact
):
"""e.g. long, rationals
"""
class
FixedPrecisionInt
(
Exact
):
"""Fixed precision integers
"""
class
FP64
(
FixedPrecisionInt
):
"""int() applied to these returns an integer that fits in 32 bits
"""
class
FP32
(
FP64
):
"""int() applied to these returns an integer that fits in 32 bits
"""
class
FP16
(
FP32
):
"""int() applied to these returns an integer that fits in 16 bits
"""
class
FP8
(
FP16
):
"""int() applied to these returns an integer that fits in 16 bits
"""
class
FP1
(
FP8
):
"""int() applied to these returns an integer that fits in 16 bits
"""
class
Signed
(
FixedPrecisionInt
):
"""These can be < 0
"""
class
Unsigned
(
FixedPrecisionInt
):
"""These can not be < 0
"""
class
CheckedOverflow
(
FixedPrecisionInt
):
"""raises OverflowError when results don't fit
"""
class
UncheckedOverflow
(
FixedPrecisionInt
):
"""take results module 2**N (for example)
"""
class
FD
(
Exact
):
"""fixed_decimal<n+m>
a signed fixed decimal number with n digits
before and m digits after the decimal point
"""
class
Inexact
(
Number
):
"""floating point arithmetic
"""
Util
.
assertTypeImplements
(
type
(
1
),
(
FP32
,
BitNumber
,
Signed
))
Util
.
assertTypeImplements
(
type
(
1L
),
(
AbritraryPrecision
,
BitNumber
,
Signed
))
Util
.
assertTypeImplements
(
type
(
1.0
),
(
Inexact
,
BitNumber
,
Signed
))
lib/python/Zope/Interfaces/Interface/Standard.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
import
iclass
,
Util
Interface
=
Util
.
impliedInterface
(
iclass
.
Interface
,
"Interface"
,
"""Interface of Interface objects
"""
)
iclass
.
Interface
.
__implements__
=
Interface
from
iclass
import
Named
,
Class
from
Basic
import
*
Util
.
assertTypeImplements
(
iclass
.
ClassType
,
Class
)
from
Number
import
*
from
Mapping
import
*
del
iclass
# cruft
del
Util
# cruft
lib/python/Zope/Interfaces/Interface/Util.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
from
iclass
import
Interface
,
Class
,
ClassType
,
Base
,
assertTypeImplements
from
types
import
FunctionType
def
impliedInterface
(
klass
,
__name__
=
None
,
__doc__
=
None
):
"""Create an interface object from a class
The interface will contain only objects with doc strings and with names
that begin and end with '__' or names that don't begin with '_'.
"""
if
__name__
is
None
:
__name__
=
"%sInterface"
%
klass
.
__name__
if
hasattr
(
klass
,
'__extends__'
):
bases
=
klass
.
__extends__
else
:
## Note that if your class subclasses Interfaces, then your
## inteface attributes will not get picked up...
bases
=
klass
.
__bases__
doc
=
__doc__
or
klass
.
__doc__
return
Interface
(
__name__
,
bases
,
_ii
(
klass
,
{}),
doc
)
def
_ii
(
klass
,
items
):
for
k
,
v
in
klass
.
__dict__
.
items
():
if
type
(
v
)
is
not
FunctionType
or
not
v
.
__doc__
:
continue
if
k
[:
1
]
==
'_'
and
not
(
len
(
k
)
>
4
and
k
[:
2
]
==
'__'
and
k
[
-
2
:]
==
'__'
):
continue
items
[
k
]
=
v
for
b
in
klass
.
__bases__
:
_ii
(
b
,
items
)
return
items
def
implementedBy
(
object
):
"""Return the interfaces implemented by the object
"""
r
=
[]
t
=
type
(
object
)
if
t
is
ClassType
:
if
hasattr
(
object
,
'__class_implements__'
):
implements
=
object
.
__class_implements__
else
:
implements
=
Class
elif
hasattr
(
object
,
'__implements__'
):
implements
=
object
.
__implements__
else
:
implements
=
tiget
(
t
,
None
)
if
implements
is
None
:
return
r
if
isinstance
(
implements
,
Interface
):
r
.
append
(
implements
)
else
:
_wi
(
implements
,
r
.
append
)
return
r
def
implementedByInstancesOf
(
klass
):
"""Return the interfaces that instanced implement (by default)
"""
r
=
[]
if
type
(
klass
)
is
ClassType
:
if
hasattr
(
klass
,
'__implements__'
):
implements
=
klass
.
__implements__
else
:
return
r
elif
hasattr
(
klass
,
'instancesImplements'
):
# Hook for ExtensionClass. :)
implements
=
klass
.
instancesImplements
()
else
:
implements
=
tiget
(
klass
,
None
)
if
implements
is
not
None
:
if
isinstance
(
implements
,
Interface
):
r
.
append
(
implements
)
else
:
_wi
(
implements
,
r
.
append
)
return
r
def
_wi
(
interfaces
,
append
):
for
i
in
interfaces
:
if
isinstance
(
i
,
Interface
):
append
(
i
)
else
:
_wi
(
i
,
append
)
lib/python/Zope/Interfaces/Interface/__init__.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
from
Standard
import
Base
import
iclass
new
=
iclass
.
Interface
del
iclass
from
Util
import
impliedInterface
Registered_Interfaces
=
{}
def
Interface
(
klass
,
__name__
=
None
,
__doc__
=
None
):
"""
why are we doing this maddness? to hook the interface
registration. This must die!
"""
I
=
impliedInterface
(
klass
,
__name__
,
__doc__
)
Registered_Interfaces
[
I
.
__name__
]
=
I
return
I
from
Util
import
assertTypeImplements
,
implementedBy
,
implementedByInstancesOf
from
Attr
import
Attribute
from
Method
import
Method
from
Exceptions
import
BrokenImplementation
lib/python/Zope/Interfaces/Interface/iclass.py
deleted
100644 → 0
View file @
def6ee93
##############################################################################
#
# Zope Public License (ZPL) Version 1.0
# -------------------------------------
#
# Copyright (c) Digital Creations. All rights reserved.
#
# This license has been certified as Open Source(tm).
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions in source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions, and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
# 3. Digital Creations requests that attribution be given to Zope
# in any manner possible. Zope includes a "Powered by Zope"
# button that is installed by default. While it is not a license
# violation to remove this button, it is requested that the
# attribution remain. A significant investment has been put
# into Zope, and this effort will continue if the Zope community
# continues to grow. This is one way to assure that growth.
#
# 4. All advertising materials and documentation mentioning
# features derived from or use of this software must display
# the following acknowledgement:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# In the event that the product being advertised includes an
# intact Zope distribution (with copyright and license included)
# then this clause is waived.
#
# 5. Names associated with Zope or Digital Creations must not be used to
# endorse or promote products derived from this software without
# prior written permission from Digital Creations.
#
# 6. Modified redistributions of any form whatsoever must retain
# the following acknowledgment:
#
# "This product includes software developed by Digital Creations
# for use in the Z Object Publishing Environment
# (http://www.zope.org/)."
#
# Intact (re-)distributions of any official Zope release do not
# require an external acknowledgement.
#
# 7. Modifications are encouraged but must be packaged separately as
# patches to official Zope releases. Distributions that do not
# clearly separate the patches from the original work must be clearly
# labeled as unofficial distributions. Modifications which do not
# carry the name Zope may be packaged in any form, as long as they
# conform to all of the clauses above.
#
#
# Disclaimer
#
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# This software consists of contributions made by Digital Creations and
# many individuals on behalf of Digital Creations. Specific
# attributions are listed in the accompanying credits file.
#
##############################################################################
"""Python Interfaces
Classes or objects can implement an __implements__ attribute that
names an interface object or a collection of interface objects.
An interface is defined using the class statement and one or more base
interfaces.
"""
from
Method
import
Method
from
Attr
import
Attribute
from
types
import
FunctionType
,
ClassType
import
Exceptions
_typeImplements
=
{}
class
Interface
:
"""Prototype (scarecrow) Interfaces Implementation
"""
def
__init__
(
self
,
name
,
bases
=
(),
attrs
=
None
,
__doc__
=
None
):
"""Create a new interface
"""
for
b
in
bases
:
if
not
isinstance
(
b
,
Interface
):
raise
TypeError
,
'Expected base interfaces'
self
.
__bases__
=
bases
self
.
__name__
=
name
if
attrs
is
None
:
attrs
=
{}
if
attrs
.
has_key
(
'__doc__'
):
if
__doc__
is
None
:
__doc__
=
attrs
[
'__doc__'
]
del
attrs
[
'__doc__'
]
self
.
__attrs
=
attrs
if
__doc__
is
not
None
:
self
.
__doc__
=
__doc__
for
k
,
v
in
attrs
.
items
():
if
isinstance
(
v
,
Method
):
v
.
interface
=
name
v
.
__name__
=
k
elif
isinstance
(
v
,
FunctionType
):
attrs
[
k
]
=
Method
.
fromFunction
(
v
,
name
)
elif
not
isinstance
(
v
,
Attribute
):
raise
Exceptions
.
InvalidInterface
(
"Concrete attribute, %s"
%
k
)
def
defered
(
self
):
"""Return a defered class corresponding to the interface
"""
if
hasattr
(
self
,
"_defered"
):
return
self
.
_defered
klass
=
{}
exec
"class %s: pass"
%
self
.
__name__
in
klass
klass
=
klass
[
self
.
__name__
]
self
.
__d
(
klass
.
__dict__
)
self
.
_defered
=
klass
return
klass
def
__d
(
self
,
dict
):
for
k
,
v
in
self
.
__dict__
.
items
():
if
isinstance
(
v
,
Method
)
and
not
dict
.
has_key
(
k
):
dict
[
k
]
=
v
for
b
in
self
.
__bases__
:
b
.
__d
(
dict
)
def
extends
(
self
,
other
):
"""Does an interface extend another?
"""
for
b
in
self
.
__bases__
:
if
b
is
other
:
return
1
if
b
.
extends
(
other
):
return
1
return
0
def
implementedBy
(
self
,
object
,
tiget
=
_typeImplements
.
get
):
"""Does the given object implement the interface?
"""
t
=
type
(
object
)
if
t
is
ClassType
:
if
hasattr
(
object
,
'__class_implements__'
):
implements
=
object
.
__class_implements__
else
:
implements
=
Class
elif
hasattr
(
object
,
'__implements__'
):
implements
=
object
.
__implements__
else
:
implements
=
tiget
(
t
,
None
)
if
implements
is
None
:
return
0
if
isinstance
(
implements
,
Interface
):
return
implements
is
self
or
implements
.
extends
(
self
)
else
:
return
self
.
__any
(
implements
)
def
implementedByInstancesOf
(
self
,
klass
,
tiget
=
_typeImplements
.
get
):
"""Do instances of the given class implement the interface?
"""
if
type
(
klass
)
is
ClassType
:
if
hasattr
(
klass
,
'__implements__'
):
implements
=
klass
.
__implements__
else
:
return
0
elif
hasattr
(
klass
,
'instancesImplement'
):
# Hook for ExtensionClass. :)
implements
=
klass
.
instancesImplement
()
else
:
implements
=
tiget
(
klass
,
None
)
if
implements
is
None
:
return
0
if
isinstance
(
implements
,
Interface
):
return
implements
is
self
or
implements
.
extends
(
self
)
else
:
return
self
.
__any
(
implements
)
def
interfaceName
(
self
):
""" name? """
return
self
.
__name__
def
implements
(
self
):
""" Returns a list of sequence of base Interfaces """
return
self
.
__bases__
def
names
(
self
):
"""Return the attribute names defined by the interface
"""
return
self
.
__attrs
.
keys
()
def
namesAndDescriptions
(
self
):
"""Return the attribute names and descriptions defined by the interface
"""
return
self
.
__attrs
.
items
()
def
getDescriptionFor
(
self
,
name
,
default
=
None
):
"""Return the attribute description for the given name
"""
return
self
.
__attrs
.
get
(
name
,
default
)
def
__any
(
self
,
interfaces
):
for
i
in
interfaces
:
if
isinstance
(
i
,
Interface
):
if
i
is
self
or
i
.
extends
(
self
):
return
1
else
:
if
self
.
__any
(
i
):
return
1
return
0
def
documentation
(
self
):
""" returns the doc string for the inteface """
return
self
.
__doc__
def
__repr__
(
self
):
return
"<Interface %s at %x>"
%
(
self
.
__name__
,
id
(
self
))
Base
=
Interface
(
"Interface"
)
class
Named
(
Base
):
"Objects that have a name."
__name__
=
Attribute
(
"The name of the object"
)
class
Class
(
Named
):
"""Implement shared instance behavior and create instances
Classes can be called to create an instance. This interface does
not specify what if any arguments are required.
"""
# Note that we don't use a function definition here, because
# we don't want to specify a signature!
__call__
=
Method
(
"Instantiate instances of the class"
)
__bases__
=
Attribute
(
"A sequence of base classes"
)
def
assertTypeImplements
(
type
,
interfaces
):
"""Return the interfaces implemented by objects of the given type
"""
_typeImplements
[
type
]
=
interfaces
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment