Edit File: _collections.cpython-37.pyc
B ��4]�q � @ s* d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlm Z ddlm Z dd lmZ dd lmZ e � ZG dd� de�ZG d d� de�ZG dd� de�ZG dd� de�ZG dd� dee�ZG dd� de�ZG dd� de�ZG dd� dee�ZG dd� de�ZG dd� de�ZG dd � d e�ZG d!d"� d"e�ZG d#d$� d$e�ZG d%d&� d&e�Z eZ!eZ"eZ#e Z$e ej%�Z&e d'd(� �Z'dHd)d*�Z(G d+d,� d,e�Z)d-d.� Z*dId/d0�Z+d1d2� Z,d3d4� Z-d5d6� Z.dJd7d8�Z/d9d:� Z0G d;d<� d<e�Z1e1d=�Z2d>d?� Z3G d@dA� dAe�Z4G dBdC� dCe4�Z5dDdE� Z6dFdG� Z7dS )KzCollection classes and helpers.� )�absolute_importN� )�binary_types)�collections_abc)�itertools_filterfalse)�py2k)�string_types)� threadingc @ s e Zd ZdZdd� ZdS )�AbstractKeyedTuple� c C s t | j�S )z�Return a list of string key names for this :class:`.KeyedTuple`. .. seealso:: :attr:`.KeyedTuple._fields` )�list�_fields)�selfr r �O/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/util/_collections.py�keys s zAbstractKeyedTuple.keysN)�__name__� __module__�__qualname__� __slots__r r r r r r s r c @ s6 e Zd ZdZddd�Zedd� �Zdd� Zd d � ZdS )� KeyedTuplea ``tuple`` subclass that adds labeled names. E.g.:: >>> k = KeyedTuple([1, 2, 3], labels=["one", "two", "three"]) >>> k.one 1 >>> k.two 2 Result rows returned by :class:`.Query` that contain multiple ORM entities and/or column expressions make use of this class to return rows. The :class:`.KeyedTuple` exhibits similar behavior to the ``collections.namedtuple()`` construct provided in the Python standard library, however is architected very differently. Unlike ``collections.namedtuple()``, :class:`.KeyedTuple` is does not rely on creation of custom subtypes in order to represent a new series of keys, instead each :class:`.KeyedTuple` instance receives its list of keys in place. The subtype approach of ``collections.namedtuple()`` introduces significant complexity and performance overhead, which is not necessary for the :class:`.Query` object's use case. .. seealso:: :ref:`ormtutorial_querying` Nc C s6 t �| |�}|r$|j�t||�� ng }||jd<