You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2018/07/04 15:57:35 UTC
[03/41] qpid-proton git commit: PROTON-1850: Split up proton
__init__.py into multiple files - Reformatted python source to (mostly) PEP-8
standards - Control what gets exported from __init__ by restricting what it
imports - Move most of the reactor impl
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d28fecf5/python/proton/wrapper.py
----------------------------------------------------------------------
diff --git a/python/proton/wrapper.py b/python/proton/wrapper.py
deleted file mode 100644
index f009de5..0000000
--- a/python/proton/wrapper.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-from cproton import *
-
-class EmptyAttrs:
-
- def __contains__(self, name):
- return False
-
- def __getitem__(self, name):
- raise KeyError(name)
-
- def __setitem__(self, name, value):
- raise TypeError("does not support item assignment")
-
-EMPTY_ATTRS = EmptyAttrs()
-
-class Wrapper(object):
-
- def __init__(self, impl_or_constructor, get_context=None):
- init = False
- if callable(impl_or_constructor):
- # we are constructing a new object
- impl = impl_or_constructor()
- if impl is None:
- self.__dict__["_impl"] = impl
- self.__dict__["_attrs"] = EMPTY_ATTRS
- self.__dict__["_record"] = None
- from proton import ProtonException
- raise ProtonException("Wrapper failed to create wrapped object. Check for file descriptor or memory exhaustion.")
- init = True
- else:
- # we are wrapping an existing object
- impl = impl_or_constructor
- pn_incref(impl)
-
- if get_context:
- record = get_context(impl)
- attrs = pn_void2py(pn_record_get(record, PYCTX))
- if attrs is None:
- attrs = {}
- pn_record_def(record, PYCTX, PN_PYREF)
- pn_record_set(record, PYCTX, pn_py2void(attrs))
- init = True
- else:
- attrs = EMPTY_ATTRS
- init = False
- record = None
- self.__dict__["_impl"] = impl
- self.__dict__["_attrs"] = attrs
- self.__dict__["_record"] = record
- if init: self._init()
-
- def __getattr__(self, name):
- attrs = self.__dict__["_attrs"]
- if name in attrs:
- return attrs[name]
- else:
- raise AttributeError(name + " not in _attrs")
-
- def __setattr__(self, name, value):
- if hasattr(self.__class__, name):
- object.__setattr__(self, name, value)
- else:
- attrs = self.__dict__["_attrs"]
- attrs[name] = value
-
- def __delattr__(self, name):
- attrs = self.__dict__["_attrs"]
- if attrs:
- del attrs[name]
-
- def __hash__(self):
- return hash(addressof(self._impl))
-
- def __eq__(self, other):
- if isinstance(other, Wrapper):
- return addressof(self._impl) == addressof(other._impl)
- return False
-
- def __ne__(self, other):
- if isinstance(other, Wrapper):
- return addressof(self._impl) != addressof(other._impl)
- return True
-
- def __del__(self):
- pn_decref(self._impl)
-
- def __repr__(self):
- return '<%s.%s 0x%x ~ 0x%x>' % (self.__class__.__module__,
- self.__class__.__name__,
- id(self), addressof(self._impl))
-
-
-PYCTX = int(pn_py2void(Wrapper))
-addressof = int
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org