File: //usr/lib/python3/dist-packages/twisted/positioning/__pycache__/_sentence.cpython-38.pyc
U
�`�[� � @ s8 d Z ddlmZmZ G dd� de�ZG dd� de�ZdS )z6
Generic sentence handling tools: hopefully reusable.
� )�absolute_import�divisionc @ s: e Zd ZdZe� Zdd� Zedd� �Zdd� Z dd � Z
d
S )�
_BaseSentencea-
A base sentence class for a particular protocol.
Using this base class, specific sentence classes can almost automatically
be created for a particular protocol.
To do this, fill the ALLOWED_ATTRIBUTES class attribute using
the C{getSentenceAttributes} class method of the producer::
class FooSentence(BaseSentence):
"""
A sentence for integalactic transmodulator sentences.
@ivar transmogrificationConstant: The value used in the
transmogrifier while producing this sentence, corrected for
gravitational fields.
@type transmogrificationConstant: C{Tummy}
"""
ALLOWED_ATTRIBUTES = FooProtocol.getSentenceAttributes()
@ivar presentAttributes: An iterable containing the names of the
attributes that are present in this sentence.
@type presentAttributes: iterable of C{str}
@cvar ALLOWED_ATTRIBUTES: A set of attributes that are allowed in this
sentence.
@type ALLOWED_ATTRIBUTES: C{set} of C{str}
c C s
|| _ dS )z�
Initializes a sentence with parsed sentence data.
@param sentenceData: The parsed sentence data.
@type sentenceData: C{dict} (C{str} -> C{str} or L{None})
N)�
_sentenceData)�selfZsentenceData� r �?/usr/lib/python3/dist-packages/twisted/positioning/_sentence.py�__init__) s z_BaseSentence.__init__c C s
t | j�S )z�
An iterable containing the names of the attributes that are present in
this sentence.
@return: The iterable of names of present attributes.
@rtype: iterable of C{str}
)�iterr )r r r r �presentAttributes3 s z_BaseSentence.presentAttributesc C s8 || j kr| j�|d�S | jj}d||f }t|��dS )z5
Gets an attribute of this sentence.
Nz"%s sentences have no %s attributes)�ALLOWED_ATTRIBUTESr �get� __class__�__name__�AttributeError)r �name� className�msgr r r �__getattr__? s
z_BaseSentence.__getattr__c C sL | j �� }dd� t|�D �}d�|�}| j �d�p4d}| jj}d|||f S )z�
Returns a textual representation of this sentence.
@return: A textual representation of this sentence.
@rtype: C{str}
c S s$ g | ]\}}|d krd||f �qS )�typez%s: %sr )�.0�k�vr r r �
<listcomp>S s z*_BaseSentence.__repr__.<locals>.<listcomp>z, r zunknown typez<%s (%s) {%s}>)r �items�sorted�joinr
r r )r r �dataZdataReprZtypeReprr r r r �__repr__K s
z_BaseSentence.__repr__N)r �
__module__�__qualname__�__doc__�setr r �propertyr r r r r r r r
s
r c @ s e Zd ZdZedd� �ZdS )�!_PositioningSentenceProducerMixina�
A mixin for certain protocols that produce positioning sentences.
This mixin helps protocols that store the layout of sentences that they
consume in a C{_SENTENCE_CONTENTS} class variable provide all sentence
attributes that can ever occur. It does this by providing a class method,
C{getSentenceAttributes}, which iterates over all sentence types and
collects the possible sentence attributes.
c C s<