mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-30 05:40:06 +00:00
- Update to 0.17.1
PR: 177247 Submitted by: ports fury
This commit is contained in:
parent
b267dad5d6
commit
c5ea08d822
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=315437
@ -1,26 +1,77 @@
|
||||
# New ports collection makefile for: gaphor
|
||||
# Date created: 06 August 2003
|
||||
# Whom: rehsack@liwing.de
|
||||
#
|
||||
# Created by: rehsack@liwing.de
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= gaphor
|
||||
PORTVERSION= 0.9.2
|
||||
PORTREVISION= 10
|
||||
PORTVERSION= 0.17.1
|
||||
CATEGORIES= devel gnome
|
||||
MASTER_SITES= SF
|
||||
DIST_SUBDIR= gnome2
|
||||
MASTER_SITES= CHEESESHOP/source/e/etk.docking:docking \
|
||||
CHEESESHOP/source/g/gaphas:gaphas \
|
||||
CHEESESHOP/source/s/simplegeneric:sgeneric \
|
||||
CHEESESHOP
|
||||
DISTFILES= ${DOCKING_DISTNAME}${EXTRACT_SUFX}:docking \
|
||||
${GAPHAS_DISTNAME}${EXTRACT_SUFX}:gaphas \
|
||||
${SGENERIC_DISTNAME}.zip:sgeneric \
|
||||
${DISTNAME}${EXTRACT_SUFX}
|
||||
EXTRACT_ONLY= ${DOCKING_DISTNAME}${EXTRACT_SUFX} \
|
||||
${GAPHAS_DISTNAME}${EXTRACT_SUFX} \
|
||||
${DISTNAME}${EXTRACT_SUFX}
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
COMMENT= UML modeling environment written in Python
|
||||
|
||||
CONFLICTS= zope-3*
|
||||
LICENSE= GPLv2
|
||||
|
||||
USE_GNOME= pygnome2
|
||||
USE_PYTHON= 2.5+
|
||||
USE_PYDISTUTILS= yes
|
||||
USE_GETTEXT= yes
|
||||
USE_DISPLAY= yes
|
||||
EXTRACT_DEPENDS=unzip:${PORTSDIR}/archivers/unzip
|
||||
BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}nose>=0.10.4:${PORTSDIR}/devel/py-nose
|
||||
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}decorator>0:${PORTSDIR}/devel/py-decorator \
|
||||
${PYTHON_PKGNAMEPREFIX}zope.component>3.4.0:${PORTSDIR}/devel/py-zope.component
|
||||
|
||||
USE_GNOME= pygtk2
|
||||
USE_PYTHON= yes
|
||||
USE_PYDISTUTILS= easy_install
|
||||
INSTALLS_ICONS= yes
|
||||
|
||||
PLIST_SUB= DOCKING_EGG="${DOCKING_EGG}" GAPHAS_EGG="${GAPHAS_EGG}"
|
||||
|
||||
DOCKING_DISTNAME= etk.docking-0.2
|
||||
DOCKING_EGG= ${DOCKING_DISTNAME}-py${PYTHON_VER}.egg
|
||||
GAPHAS_DISTNAME= gaphas-0.7.2
|
||||
GAPHAS_EGG= ${GAPHAS_DISTNAME}-py${PYTHON_VER}.egg
|
||||
SGENERIC_DISTNAME= simplegeneric-0.8.1
|
||||
|
||||
post-extract:
|
||||
@${UNZIP_CMD} -qo ${DISTDIR}/${SGENERIC_DISTNAME}.zip -d ${WRKDIR}
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -e \
|
||||
's|\(Icon=gaphor\).*|\1|' ${WRKSRC}/gaphor.desktop
|
||||
@${REINPLACE_CMD} -e \
|
||||
's|iteable|iterable|' ${WRKSRC}/gaphor/misc/listmixins.py
|
||||
|
||||
post-build:
|
||||
@${PYTHON_CMD} -m compileall ${WRKDIR}/${DOCKING_DISTNAME}/lib/etk
|
||||
@${PYTHON_CMD} -O -m compileall ${WRKDIR}/${DOCKING_DISTNAME}/lib/etk
|
||||
@${PYTHON_CMD} -m compileall ${WRKDIR}/${GAPHAS_DISTNAME}/gaphas
|
||||
@${PYTHON_CMD} -O -m compileall ${WRKDIR}/${GAPHAS_DISTNAME}/gaphas
|
||||
@${PYTHON_CMD} -m compileall ${WRKDIR}/${SGENERIC_DISTNAME}
|
||||
@${PYTHON_CMD} -O -m compileall ${WRKDIR}/${SGENERIC_DISTNAME}
|
||||
|
||||
post-install:
|
||||
@${MKDIR} ${PYTHONPREFIX_SITELIBDIR}/${DOCKING_EGG}
|
||||
@(cd ${WRKDIR}/${DOCKING_DISTNAME}/lib && ${COPYTREE_SHARE} etk \
|
||||
${PYTHONPREFIX_SITELIBDIR}/${DOCKING_EGG})
|
||||
@${MKDIR} ${PYTHONPREFIX_SITELIBDIR}/${GAPHAS_EGG}
|
||||
@(cd ${WRKDIR}/${GAPHAS_DISTNAME} && ${COPYTREE_SHARE} gaphas \
|
||||
${PYTHONPREFIX_SITELIBDIR}/${GAPHAS_EGG})
|
||||
@(cd ${WRKDIR}/${SGENERIC_DISTNAME} && ${INSTALL_DATA} \
|
||||
simplegeneric.py* ${PYTHONPREFIX_SITELIBDIR})
|
||||
@${MKDIR} ${DESKTOPDIR}
|
||||
(cd ${WRKSRC} && ${INSTALL_DATA} gaphor.desktop ${DESKTOPDIR})
|
||||
.for i in 24 48 96 256
|
||||
@${MKDIR} ${PREFIX}/share/icons/hicolor/${i}x${i}/apps
|
||||
(cd ${WRKSRC}/gaphor/ui/pixmaps && ${INSTALL_DATA} \
|
||||
gaphor-${i}x${i}.png \
|
||||
${PREFIX}/share/icons/hicolor/${i}x${i}/apps/gaphor.png)
|
||||
.endfor
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
@ -1,2 +1,8 @@
|
||||
SHA256 (gnome2/gaphor-0.9.2.tar.gz) = e88c434c98153d56fa63f4e9c88a749711658f3fbf8a5dc916862f4fc379fc95
|
||||
SIZE (gnome2/gaphor-0.9.2.tar.gz) = 509882
|
||||
SHA256 (etk.docking-0.2.tar.gz) = 76d471b1bb47b0621fb3d685687e8d9ffd3eb1ef721f73d975f511c26a4f6f79
|
||||
SIZE (etk.docking-0.2.tar.gz) = 75217
|
||||
SHA256 (gaphas-0.7.2.tar.gz) = 01b5cf5d6d58b353818dfb514a3d775a4a3e7d333ec107b126b1fadd0a941534
|
||||
SIZE (gaphas-0.7.2.tar.gz) = 335643
|
||||
SHA256 (simplegeneric-0.8.1.zip) = dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173
|
||||
SIZE (simplegeneric-0.8.1.zip) = 12663
|
||||
SHA256 (gaphor-0.17.1.tar.gz) = 48e9ccf3bef6523778a1b9264196187ee1d349f0cae571a5711e8841cd46ecfe
|
||||
SIZE (gaphor-0.17.1.tar.gz) = 692773
|
||||
|
@ -0,0 +1,19 @@
|
||||
--- gaphor/services/componentregistry.py.orig
|
||||
+++ gaphor/services/componentregistry.py
|
||||
@@ -7,6 +7,7 @@
|
||||
"""
|
||||
|
||||
from zope import interface, component
|
||||
+from zope.component import registry
|
||||
from gaphor.core import inject
|
||||
from gaphor.interfaces import IService, IEventFilter
|
||||
|
||||
@@ -27,7 +28,7 @@
|
||||
pass
|
||||
|
||||
def init(self, app):
|
||||
- self._components = component.registry.Components(
|
||||
+ self._components = registry.Components(
|
||||
name='component_registry',
|
||||
bases=(component.getGlobalSiteManager(),))
|
||||
|
12
devel/gaphor/files/patch-setup.py
Normal file
12
devel/gaphor/files/patch-setup.py
Normal file
@ -0,0 +1,12 @@
|
||||
--- setup.py.orig
|
||||
+++ setup.py
|
||||
@@ -144,8 +144,7 @@
|
||||
|
||||
setup_requires = [
|
||||
#'Sphinx >= 1.0.6',
|
||||
- 'nose >= 0.10.4',
|
||||
- 'setuptools-git >= 0.3.4'
|
||||
+ 'nose >= 0.10.4'
|
||||
],
|
||||
|
||||
test_suite = 'nose.collector',
|
@ -1,392 +0,0 @@
|
||||
--- zope/interface/adapter.py.orig 2007-03-01 14:45:32.000000000 +0800
|
||||
+++ zope/interface/adapter.py 2009-10-17 13:00:44.000000000 +0800
|
||||
@@ -38,14 +38,14 @@
|
||||
|
||||
# The registrations are of the form:
|
||||
|
||||
-# {(subscription, with, name, specification) -> factories}
|
||||
+# {(subscription, _with, name, specification) -> factories}
|
||||
|
||||
# where:
|
||||
|
||||
# 'subscription' is a flag indicating if this registration is for
|
||||
# subscription adapters.
|
||||
|
||||
-# 'with' is a tuple of specs that is non-empty only in the case
|
||||
+# '_with' is a tuple of specs that is non-empty only in the case
|
||||
# of multi-adapters.
|
||||
|
||||
# 'name' is a unicode adapter name. Unnamed adapters have an empty
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
# For multiple adapters:
|
||||
#
|
||||
-# {(specification, order) -> {name -> {with -> object}}}
|
||||
+# {(specification, order) -> {name -> {_with -> object}}}
|
||||
|
||||
# For single subscription adapters:
|
||||
#
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
# For multiple-subscription adapters:
|
||||
#
|
||||
-# {('s', specification, order) -> {with -> tuple([object])}}
|
||||
+# {('s', specification, order) -> {_with -> tuple([object])}}
|
||||
|
||||
|
||||
from __future__ import generators
|
||||
@@ -193,29 +193,30 @@
|
||||
# or ('s', specification, order)
|
||||
subscription = key[0] == 's'
|
||||
if subscription:
|
||||
- oldwithobs = implied.get(key)
|
||||
- if not oldwithobs:
|
||||
- oldwithobs = implied[key] = {}
|
||||
+ old_withobs = implied.get(key)
|
||||
+ if not old_withobs:
|
||||
+ old_withobs = implied[key] = {}
|
||||
|
||||
- # v is {with -> tuple([object])}
|
||||
- for with, objects in v.iteritems():
|
||||
- oldwithobs[with] = oldwithobs.get(with, ()) + objects
|
||||
+ # v is {_with -> tuple([object])}
|
||||
+ for _with, objects in v.iteritems():
|
||||
+ old_withobs[_with] = old_withobs.get(_with, ()) + \
|
||||
+ objects
|
||||
|
||||
else:
|
||||
oldbyname = implied.get(key)
|
||||
if not oldbyname:
|
||||
implied[key] = oldbyname = {}
|
||||
|
||||
- # v is {name -> {with -> ?}}
|
||||
- for name, withobs in v.iteritems():
|
||||
- oldwithobs = oldbyname.get(name)
|
||||
- if not oldwithobs:
|
||||
- oldwithobs = oldbyname[name] = {}
|
||||
+ # v is {name -> {_with -> ?}}
|
||||
+ for name, _withobs in v.iteritems():
|
||||
+ old_withobs = oldbyname.get(name)
|
||||
+ if not old_withobs:
|
||||
+ old_withobs = oldbyname[name] = {}
|
||||
|
||||
- # withobs is {with -> object}
|
||||
- oldwithobs.update(withobs)
|
||||
+ # _withobs is {_with -> object}
|
||||
+ old_withobs.update(_withobs)
|
||||
|
||||
- # Now flatten with mappings to tuples
|
||||
+ # Now flatten _with mappings to tuples
|
||||
for key, v in implied.iteritems():
|
||||
if isinstance(key, tuple):
|
||||
if key[0] == 's':
|
||||
@@ -226,9 +227,9 @@
|
||||
byname = v
|
||||
for name, value in byname.iteritems():
|
||||
if isinstance(value, dict):
|
||||
- # We have {with -> value}
|
||||
- # convert it to sorted [(with, value]
|
||||
- byname[name] = orderwith(value)
|
||||
+ # We have {_with -> value}
|
||||
+ # convert it to sorted [(_with, value]
|
||||
+ byname[name] = order_with(value)
|
||||
|
||||
self.get = implied.get
|
||||
|
||||
@@ -260,24 +261,24 @@
|
||||
def unsubscribe(self, dependent):
|
||||
del self.dependents[dependent]
|
||||
|
||||
- def _adaptTo(self, specification, object, name='', with=()):
|
||||
+ def _adaptTo(self, specification, object, name='', _with=()):
|
||||
if object is None:
|
||||
try:
|
||||
- del self.adapters[False, tuple(with), name, specification]
|
||||
+ del self.adapters[False, tuple(_with), name, specification]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
- self.adapters[False, tuple(with), name, specification
|
||||
+ self.adapters[False, tuple(_with), name, specification
|
||||
] = object
|
||||
|
||||
self.dirty()
|
||||
|
||||
- def _subscriptionAdaptTo(self, specification, object, with=()):
|
||||
+ def _subscriptionAdaptTo(self, specification, object, _with=()):
|
||||
if object is None:
|
||||
raise TypeError, ("Unregistering subscription adapters"
|
||||
" isn't implemented")
|
||||
|
||||
- key = (True, tuple(with), '', specification)
|
||||
+ key = (True, tuple(_with), '', specification)
|
||||
self.adapters[key] = self.adapters.get(key, ()) + (object, )
|
||||
self.dirty()
|
||||
|
||||
@@ -287,26 +288,26 @@
|
||||
def __repr__(self):
|
||||
return '<%s(%s)>' % (self.__class__.__name__, self.spec())
|
||||
|
||||
-def orderwith(bywith):
|
||||
+def order_with(by_with):
|
||||
|
||||
- # Convert {with -> adapter} to withs, [(with, value)]
|
||||
+ # Convert {_with -> adapter} to _withs, [(_with, value)]
|
||||
# such that there are no i, j, i < j, such that
|
||||
- # withs[j][0] extends withs[i][0].
|
||||
+ # _withs[j][0] extends _withs[i][0].
|
||||
|
||||
- withs = []
|
||||
- for with, value in bywith.iteritems():
|
||||
- for i, (w, v) in enumerate(withs):
|
||||
- if withextends(with, w):
|
||||
- withs.insert(i, (with, value))
|
||||
+ _withs = []
|
||||
+ for _with, value in by_with.iteritems():
|
||||
+ for i, (w, v) in enumerate(_withs):
|
||||
+ if _withextends(_with, w):
|
||||
+ _withs.insert(i, (_with, value))
|
||||
break
|
||||
else:
|
||||
- withs.append((with, value))
|
||||
+ _withs.append((_with, value))
|
||||
|
||||
- return withs
|
||||
+ return _withs
|
||||
|
||||
|
||||
-def withextends(with1, with2):
|
||||
- for spec1, spec2 in zip(with1, with2):
|
||||
+def _withextends(_with1, _with2):
|
||||
+ for spec1, spec2 in zip(_with1, _with2):
|
||||
if spec1.extends(spec2):
|
||||
return True
|
||||
if spec1 != spec2:
|
||||
@@ -362,7 +363,7 @@
|
||||
|
||||
# Multi adapter
|
||||
|
||||
- with = required[1:]
|
||||
+ _with = required[1:]
|
||||
key = provided, order
|
||||
|
||||
for surrogate in self.get(required[0]), self._default:
|
||||
@@ -370,8 +371,8 @@
|
||||
if not byname:
|
||||
continue
|
||||
|
||||
- bywith = byname.get(name)
|
||||
- if not bywith:
|
||||
+ by_with = byname.get(name)
|
||||
+ if not by_with:
|
||||
continue
|
||||
|
||||
# Selecting multi-adapters is not just a matter of matching the
|
||||
@@ -381,10 +382,10 @@
|
||||
|
||||
# `best` carries the rank and value of the best found adapter.
|
||||
best = None
|
||||
- for rwith, value in bywith:
|
||||
+ for r_with, value in by_with:
|
||||
# the `rank` describes how well the found adapter matches.
|
||||
rank = []
|
||||
- for rspec, spec in zip(rwith, with):
|
||||
+ for rspec, spec in zip(r_with, _with):
|
||||
if not spec.isOrExtends(rspec):
|
||||
break # This one is no good
|
||||
# Determine the rank of this particular specification.
|
||||
@@ -455,16 +456,16 @@
|
||||
|
||||
# Multi
|
||||
key = 's', provided, order
|
||||
- with = required[1:]
|
||||
+ _with = required[1:]
|
||||
result = []
|
||||
|
||||
for surrogate in self.get(required[0]), self._default:
|
||||
- bywith = surrogate.get(key)
|
||||
- if not bywith:
|
||||
+ by_with = surrogate.get(key)
|
||||
+ if not by_with:
|
||||
continue
|
||||
|
||||
- for rwith, values in bywith:
|
||||
- for rspec, spec in zip(rwith, with):
|
||||
+ for r_with, values in by_with:
|
||||
+ for rspec, spec in zip(r_with, _with):
|
||||
if not spec.isOrExtends(rspec):
|
||||
break # This one is no good
|
||||
else:
|
||||
@@ -536,22 +537,22 @@
|
||||
|
||||
def register(self, required, provided, name, value):
|
||||
if required:
|
||||
- with = []
|
||||
+ _with = []
|
||||
for iface in required[1:]:
|
||||
if iface is None:
|
||||
iface = Interface
|
||||
- with.append(iface)
|
||||
- with = tuple(with)
|
||||
+ _with.append(iface)
|
||||
+ _with = tuple(_with)
|
||||
required = self.get(required[0])
|
||||
else:
|
||||
- with = ()
|
||||
+ _with = ()
|
||||
required = self._null
|
||||
|
||||
if not isinstance(name, basestring):
|
||||
raise TypeError("The name provided to provideAdapter "
|
||||
"must be a string or unicode")
|
||||
|
||||
- required._adaptTo(provided, value, unicode(name), with)
|
||||
+ required._adaptTo(provided, value, unicode(name), _with)
|
||||
|
||||
def lookupAll(self, required, provided):
|
||||
order = len(required)
|
||||
@@ -584,7 +585,7 @@
|
||||
|
||||
# Multi adapter
|
||||
|
||||
- with = required[1:]
|
||||
+ _with = required[1:]
|
||||
key = provided, order
|
||||
first = ()
|
||||
|
||||
@@ -593,16 +594,16 @@
|
||||
if not byname:
|
||||
continue
|
||||
|
||||
- for name, bywith in byname.iteritems():
|
||||
- if not bywith or name in first:
|
||||
+ for name, by_with in byname.iteritems():
|
||||
+ if not by_with or name in first:
|
||||
continue
|
||||
|
||||
# See comments on lookup() above
|
||||
best = None
|
||||
- for rwith, value in bywith:
|
||||
+ for r_with, value in by_with:
|
||||
# the `rank` describes how well the found adapter matches.
|
||||
rank = []
|
||||
- for rspec, spec in zip(rwith, with):
|
||||
+ for rspec, spec in zip(r_with, _with):
|
||||
if not spec.isOrExtends(rspec):
|
||||
break # This one is no good
|
||||
# Determine the rank of this particular specification.
|
||||
@@ -622,19 +623,19 @@
|
||||
|
||||
def subscribe(self, required, provided, value):
|
||||
if required:
|
||||
- required, with = self.get(required[0]), tuple(required[1:])
|
||||
+ required, _with = self.get(required[0]), tuple(required[1:])
|
||||
else:
|
||||
required = self._null
|
||||
- with = ()
|
||||
+ _with = ()
|
||||
|
||||
if provided is None:
|
||||
provided = Null
|
||||
|
||||
- required._subscriptionAdaptTo(provided, value, with)
|
||||
+ required._subscriptionAdaptTo(provided, value, _with)
|
||||
|
||||
-def mextends(with, rwith):
|
||||
- if len(with) == len(rwith):
|
||||
- for w, r in zip(with, rwith):
|
||||
+def mextends(_with, r_with):
|
||||
+ if len(_with) == len(r_with):
|
||||
+ for w, r in zip(_with, r_with):
|
||||
if not w.isOrExtends(r):
|
||||
break
|
||||
else:
|
||||
@@ -657,19 +658,19 @@
|
||||
# TODO: Backward compatibility
|
||||
# BBB ? Don't need to handle 3-tuples some day
|
||||
try:
|
||||
- (subscription, with, name, target) = key
|
||||
+ (subscription, _with, name, target) = key
|
||||
except ValueError:
|
||||
- (with, name, target) = key
|
||||
+ (_with, name, target) = key
|
||||
subscription = False
|
||||
|
||||
if subscription:
|
||||
- if with:
|
||||
- _add_multi_sub_adapter(with, target, multi, value)
|
||||
+ if _with:
|
||||
+ _add_multi_sub_adapter(_with, target, multi, value)
|
||||
else:
|
||||
_add_named_sub_adapter(target, implied, value)
|
||||
else:
|
||||
- if with:
|
||||
- _add_multi_adapter(with, name, target, target, multi,
|
||||
+ if _with:
|
||||
+ _add_multi_adapter(_with, name, target, target, multi,
|
||||
registered, value)
|
||||
else:
|
||||
_add_named_adapter(target, target, name, implied,
|
||||
@@ -699,21 +700,21 @@
|
||||
_add_named_adapter(b, provided, name, implied,
|
||||
registered, value)
|
||||
|
||||
-def _add_multi_adapter(with, name, target, provided, implied,
|
||||
+def _add_multi_adapter(_with, name, target, provided, implied,
|
||||
registered, object):
|
||||
|
||||
- ikey = target, (len(with) + 1)
|
||||
+ ikey = target, (len(_with) + 1)
|
||||
byname = implied.get(ikey)
|
||||
if not byname:
|
||||
byname = implied[ikey] = {}
|
||||
|
||||
- bywith = byname.get(name)
|
||||
- if not bywith:
|
||||
- bywith = byname[name] = {}
|
||||
+ by_with = byname.get(name)
|
||||
+ if not by_with:
|
||||
+ by_with = byname[name] = {}
|
||||
|
||||
|
||||
- rkey = ikey, name, with # The full key has all 4
|
||||
- if (with not in bywith
|
||||
+ rkey = ikey, name, _with # The full key has all 4
|
||||
+ if (_with not in by_with
|
||||
or
|
||||
(rkey not in registered or registered[rkey].extends(provided))
|
||||
):
|
||||
@@ -721,10 +722,10 @@
|
||||
# general interface that is closer provided than what we had
|
||||
# before
|
||||
registered[rkey] = provided
|
||||
- bywith[with] = object
|
||||
+ by_with[_with] = object
|
||||
|
||||
for b in target.__bases__:
|
||||
- _add_multi_adapter(with, name, b, provided, implied,
|
||||
+ _add_multi_adapter(_with, name, b, provided, implied,
|
||||
registered, object)
|
||||
|
||||
def _add_named_sub_adapter(target, implied, objects):
|
||||
@@ -734,13 +735,13 @@
|
||||
for b in target.__bases__:
|
||||
_add_named_sub_adapter(b, implied, objects)
|
||||
|
||||
-def _add_multi_sub_adapter(with, target, implied, objects):
|
||||
- key = 's', target, (len(with) + 1)
|
||||
- bywith = implied.get(key)
|
||||
- if not bywith:
|
||||
- bywith = implied[key] = {}
|
||||
+def _add_multi_sub_adapter(_with, target, implied, objects):
|
||||
+ key = 's', target, (len(_with) + 1)
|
||||
+ by_with = implied.get(key)
|
||||
+ if not by_with:
|
||||
+ by_with = implied[key] = {}
|
||||
|
||||
- bywith[with] = bywith.get(with, ()) + objects
|
||||
+ by_with[_with] = by_with.get(_with, ()) + objects
|
||||
|
||||
for b in target.__bases__:
|
||||
- _add_multi_sub_adapter(with, b, implied, objects)
|
||||
+ _add_multi_sub_adapter(_with, b, implied, objects)
|
@ -1,5 +1,5 @@
|
||||
Gaphor is an easy to use modeling environment. This means that you are able
|
||||
to create nice UML diagrams for documentation and to assist you with design
|
||||
decisions. Gaphor will help you create your applications.
|
||||
Gaphor is an easy to use modeling environment. This means that you are
|
||||
able to create nice UML diagrams for documentation and to assist you
|
||||
with design decisions. Gaphor will help you create your applications.
|
||||
|
||||
WWW: http://gaphor.sourceforge.net/
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user