Metadata-Version: 2.1
Name: Contradict
Version: 1.0.0
Summary: A thread safe implementation of the SortedDict.
Home-page: https://github.com/soumasish/contradict
Author: Soumasish Goswami
Author-email: hello@soumasish.io
License: MIT
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
Requires-Dist: hipster

Contradict
======================


## Description
Contradict provides a thread-safe implementation of the SortedDict. The SortedDict exposes exposes APIs for the following operations```get```, ```set```, ```contains```, ```items```, ```keys``` and ```value```.

#### Object Usage
For adding an object to the SortedDict, the object needs to implement it's comparator logic and hash function.
```
class GitRepo:
    def __init__(self, url, stars, forks):
        self.url = url
        self.stars = stars
        self.forks = forks

    # The object needs to implement the following methods
    def __eq__(self, other):
        return self.name == other.name and self.stars == other.stars and self.forks == other.forks

    def __ne__(self, other):
        return self.name != other.name or self.stars != other.stars or self.forks != other.forks

    def __lt__(self, other):
        # The two repos are first compared based on stars then forks and then sorted lexically based on url
        if self.stars == other.stars and self.forks == other.forks return self.url < other.url

    def __le__(self, other):
        if self.stars == other.stars and self.forks == other.forks return self.url <= other.url

    def __gt__(self, other):
        if self.stars == other.stars and self.forks == other.forks return self.url > other.url

    def __ge__(self, other):
        if self.stars == other.stars and self.forks == other.forks return self.url >= other.url
    # Use any unique attribute to hash
    def __hash__(self):
        return hash(self.url)


```

## Dependencies
Python 3

## Installation
```
pip install --upgrade contradict
```

## Usage

```
from contradict.sorted_dict import SortedDict

sorted_dict = SortedDict()      # Creates an empty MaxHeap
sorted_dict.set(key, value)     # Sets a key, value pair
sorted_dict.get(key)            # Returns the value, if key is present or None
sorted_dict.items()             # Returns an interator to the key, value pairs in asc order
sorted_dict.keys()               # Returns an interator to the keys in asc order
sorted_dict.values()             # Returns an interator to the values in asc order of keys
sorted_dict.items(reverse=True)  # Returns an interator to the key, value pairs in desc order
sorted_dict.keys(reverse=True)   # Returns an interator to the keys in desc order
sorted_dict.values(reverse=True) # Returns an interator to the values in desc order of keys

```

## License
MIT

## Changelog




