python-accessor


Namepython-accessor JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryAccess nested dicts
upload_time2025-09-07 11:09:59
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords accessor api itemgetter rest
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Accessor: read nested dictionaries

Build accessor functions using the natural python dot notation.

# Installation

``python-accessor`` is available as a zero-dependency Python package. Install with:

    $ pip install python-accessor


## Usage

```python

    from accessor import accessor as _

    name = _.users.name 
    name(obj)  # equivalent of obj['users']['name']
```

## Examples

```python

from accessor import accessor as _

obj = {
    'users': [{
        'uid': 1234,
        'name': {
            'first': 'John',
            'last': 'Smith',
        }
    }, {
        'uid': 2345,
        'name': {
            'last': 'Bono'
        }
    }, {
        'uid': 3456
    }]
}

_.users[1].name(obj)
# -> {'last': 'Bono'}

_.users.name.last(obj)
# -> ['Smith', 'Bono', None]

_.users.name.first(obj)
# -> ['John', None, None]

_.users.name.first[:1](obj)
# -> ['John']

_.users.uid[:2](obj)
# -> [1234, 2345]

list(map(_.name.last, obj['users']))
# -> ['Smith', 'Bono', None]

list(filter(_.uid > 300, obj['users']))
# -> [{'uid': 3456}]
```

## More Examples! :)

```python

from accessor import accessor as _, select, values

# extract values
list(map(values(_.name.first, _.name.last), obj['users']))
# -> [('John', 'Smith'), (None, 'Bono'), (None, None)]

# extract as dicts
list(map(select(_.name.first, _.name.last),obj['users']))
# -> [{'first': 'John', 'last': 'Smith'}, {'first': None, 'last': 'Bono'}, {'first': None, 'last': None}]

# extract and optionally rename
list(map(select(_.name.uid, x=_.name.last),obj['users']))
# -> [{'uid': '1234', 'x': 'Smith'}, {'uid': 2345, 'x': 'Bono'}, {'uid': 3456, 'x': None}]

```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "python-accessor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "accessor, api, itemgetter, rest",
    "author": null,
    "author_email": "Jakub Jagielka <jjagielka@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/82/3a/f07b178d10a84e34387b46bda42359085f50384254151256291c8c0b5412/python_accessor-1.0.0.tar.gz",
    "platform": null,
    "description": "# Accessor: read nested dictionaries\n\nBuild accessor functions using the natural python dot notation.\n\n# Installation\n\n``python-accessor`` is available as a zero-dependency Python package. Install with:\n\n    $ pip install python-accessor\n\n\n## Usage\n\n```python\n\n    from accessor import accessor as _\n\n    name = _.users.name \n    name(obj)  # equivalent of obj['users']['name']\n```\n\n## Examples\n\n```python\n\nfrom accessor import accessor as _\n\nobj = {\n    'users': [{\n        'uid': 1234,\n        'name': {\n            'first': 'John',\n            'last': 'Smith',\n        }\n    }, {\n        'uid': 2345,\n        'name': {\n            'last': 'Bono'\n        }\n    }, {\n        'uid': 3456\n    }]\n}\n\n_.users[1].name(obj)\n# -> {'last': 'Bono'}\n\n_.users.name.last(obj)\n# -> ['Smith', 'Bono', None]\n\n_.users.name.first(obj)\n# -> ['John', None, None]\n\n_.users.name.first[:1](obj)\n# -> ['John']\n\n_.users.uid[:2](obj)\n# -> [1234, 2345]\n\nlist(map(_.name.last, obj['users']))\n# -> ['Smith', 'Bono', None]\n\nlist(filter(_.uid > 300, obj['users']))\n# -> [{'uid': 3456}]\n```\n\n## More Examples! :)\n\n```python\n\nfrom accessor import accessor as _, select, values\n\n# extract values\nlist(map(values(_.name.first, _.name.last), obj['users']))\n# -> [('John', 'Smith'), (None, 'Bono'), (None, None)]\n\n# extract as dicts\nlist(map(select(_.name.first, _.name.last),obj['users']))\n# -> [{'first': 'John', 'last': 'Smith'}, {'first': None, 'last': 'Bono'}, {'first': None, 'last': None}]\n\n# extract and optionally rename\nlist(map(select(_.name.uid, x=_.name.last),obj['users']))\n# -> [{'uid': '1234', 'x': 'Smith'}, {'uid': 2345, 'x': 'Bono'}, {'uid': 3456, 'x': None}]\n\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Access nested dicts",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/jjagielka/python-accessor",
        "Issues": "https://github.com/jjagielka/python-accessor/issues",
        "Repository": "https://github.com/jjagielka/python-accessor"
    },
    "split_keywords": [
        "accessor",
        " api",
        " itemgetter",
        " rest"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2978f354d4e171abf56b14fbd8a46580a2304eca139c2406d55dc10c042e256f",
                "md5": "c895d90fa53d81c4237349b07b95fd17",
                "sha256": "36ffa61db7b2262cb336387917bf8ffd21b316d4520c8debf5cb318c236e3c13"
            },
            "downloads": -1,
            "filename": "python_accessor-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c895d90fa53d81c4237349b07b95fd17",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 4918,
            "upload_time": "2025-09-07T11:09:58",
            "upload_time_iso_8601": "2025-09-07T11:09:58.106798Z",
            "url": "https://files.pythonhosted.org/packages/29/78/f354d4e171abf56b14fbd8a46580a2304eca139c2406d55dc10c042e256f/python_accessor-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "823af07b178d10a84e34387b46bda42359085f50384254151256291c8c0b5412",
                "md5": "ff7b365155cd69d2c36a2a8714962151",
                "sha256": "1c180697ccbab12b764727072ce8613e7ed1b897b374be72aaae345827404df2"
            },
            "downloads": -1,
            "filename": "python_accessor-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "ff7b365155cd69d2c36a2a8714962151",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 8069,
            "upload_time": "2025-09-07T11:09:59",
            "upload_time_iso_8601": "2025-09-07T11:09:59.393855Z",
            "url": "https://files.pythonhosted.org/packages/82/3a/f07b178d10a84e34387b46bda42359085f50384254151256291c8c0b5412/python_accessor-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-07 11:09:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jjagielka",
    "github_project": "python-accessor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "python-accessor"
}
        
Elapsed time: 1.11239s