Metadata-Version: 2.1
Name: dictcopy
Version: 0.0.4
Summary: Dict copy
Home-page: UNKNOWN
Author: Jeff Aguilar
Author-email: jeff.aguilar.06@gmail.com
License: MIT
Keywords: dict,copy,clone
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.6
Description-Content-Type: text/markdown

# dict-copy

Extension methods for copying dictionaries

## Installation

Use pip to install the package:

```bash
pip install dict-copy
```

## Usage

This package provides some functions to copy a dict


### Simple clone

```python
from dictcopy import dictcopy


obj = {
    "name": "Jeff",
    "lastname": "Aguilar",
    "age": 28,
    "email": "jeff.aguilar.06@gmail.com"
}

obj1 = dictcopy.clone(obj)
```

### Copy some values

If you want to clone the dictionary, but only with some values, you can specify them.

```python
obj1 = dictcopy.clone(obj, {
    "name",
    "lastname",
    "email"
})
```

### Strict mode

By default, when you specify fields that do not exist in the source dictionary, they will simply be skipped.

But, you could change this behavior by changing the `strict_mode` property to True. You will get a `KeyError`


```python
obj1 = dictcopy.clone(obj, {
    "name",
    "lastname",
    "email",
    "ocupation"
}, strict_mode=True)
```


### Extract values

If you want to remove some values, extract might help. will return a new dictionary with the fields removed from the source dictionary

```python
obj1 = dictcopy.extract(obj, {
    "age",
    "email"
})
```

You can also apply strict mode to validate that each field exists in the source dictionary. You will get a `KeyError`

```python
obj1 = dictcopy.extract(obj, {
    "age",
    "email"
}, strict_mode=True)
```

