Краткое описание пакета
=======================

Пакет разработан для того, что бы содержать всякие мелкие модули,
которые поодиночке поставлять неактуально.
            
Описание модулей
----------------

pd.lib.heapsort
...............

Модуль является простой надстройкой над heapq, позволяющей
"ленивую сортировку": т.е. элементы сортируются только по
мере получения, что сильно экономит вычислительный ресурс.

Модуль предоставляет два класса:

    HeapSort
        При инициализации получает массив и функцию сравнения.
        
    HeapSortByIndex
        При инициализации получает массив и индекс, элементы
        которого соответстуют элементам массива и будут использованы для
        сравнения. В этом случае используется также третий параметр -
        revert, может быть True или False. Если параметр равен True, то
        сортировка производится в обратном порядке.

    HeapSortByIndexSafe
        Аналогичен предыдущему классу, но действует с индексом "безопасным"
        способом: при отсутствии элемента в индексе размещает его в конце
        списка.

Каждый класс предоставляет методы:

    chunk(n)
        Вернуть первые n элементов начала отсортированного
        списка.


pd.lib.utility
..............

Модуль содержит разные полезные функции, в том числе:

    name2klass
        Вернуть класс по имени (возможен импорт)
        
    klass2name
        Вернуть имя по классу.
        
                


Планируемые модули
------------------

 - Преобразование через регексп и формат;
 
 - Компиляция формата в регексп;


pd.lib.topsort
..............

Модуль содержит классы реализующие разные варианты топологической 
сортировки. Все классы используются так:

    TopSort([<Параметры>])(<Элементы>), где :
    
    Параметры
        Параметры выполнения сортировки;
        
    Элементы
        Каждый элемент - это пара, состоящая из ссылки на объект и
        списка ссылок, от которых он зависит;
        
Модуль предоставляет следующие классы:

    TopSort
        Топологическая сортировка (на вход должны подаватся объекты, которые
        могут быть ключами словаря);
        
    TopSortIndex
        Топологиеская сортировка (на вход могут подаватся любые объекты);

    TopSortFuzzy
        Нечеткая топологическая сортировка (на вход должны подаватся
        объекты, которые могут быть ключами словаря);
        
    TopSortFuzzyIndex
        Нечеткая топологическая сортировка  (на вход могут подаватся любые
        объекты);
        
Нечеткая топологическая сортировка способна привести к линейному
упорядочиванию даже граф с цикломатическим числом больше 0. Конечно,
адекватные результаты получаются при небольших цикломатических числах, иными
словами - это топологическая сортировка для слегка нарушенного циклами
дерева.
