{"id":13849498,"url":"https://github.com/ua-parser/uap-python","last_synced_at":"2025-05-13T17:07:53.598Z","repository":{"id":23031919,"uuid":"26384672","full_name":"ua-parser/uap-python","owner":"ua-parser","description":"Python implementation of ua-parser","archived":false,"fork":false,"pushed_at":"2025-03-03T18:03:34.000Z","size":911,"stargazers_count":612,"open_issues_count":8,"forks_count":158,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-05-11T21:04:12.875Z","etag":null,"topics":["python3","user-agent","user-agent-parser","user-agent-parsing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ua-parser.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-11-09T04:09:44.000Z","updated_at":"2025-05-06T05:44:04.000Z","dependencies_parsed_at":"2023-11-09T12:29:35.359Z","dependency_job_id":"8ee445fc-dd0e-41e4-a7a0-99439c9f8e00","html_url":"https://github.com/ua-parser/uap-python","commit_stats":{"total_commits":208,"total_committers":39,"mean_commits":5.333333333333333,"dds":0.6394230769230769,"last_synced_commit":"60e1c0f9f4e9bd29f9ac6e756f33c8c87da3a82d"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ua-parser","download_url":"https://codeload.github.com/ua-parser/uap-python/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253866538,"owners_count":21976077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python3","user-agent","user-agent-parser","user-agent-parsing"],"created_at":"2024-08-04T19:01:20.111Z","updated_at":"2025-05-13T17:07:53.575Z","avatar_url":"https://github.com/ua-parser.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"uap-python\n==========\n\nOfficial python implementation of the `User Agent String\nParser \u003chttps://github.com/ua-parser\u003e`_ project.\n\nBuild Status\n------------\n\n.. image:: https://github.com/ua-parser/uap-python/actions/workflows/ci.yml/badge.svg\n   :target: https://github.com/ua-parser/uap-python/actions/workflows/ci.yml?query=branch%3Amaster\n   :alt: CI on the master branch\n\n.. image:: https://readthedocs.org/projects/uap-python/badge/?version=latest\n   :target: https://uap-python.readthedocs.io/\n   :alt: Documentation Status\n\nInstalling\n----------\n\nAdd ``ua-parser[regex]`` to your project's dependencies, or run\n\n.. code-block:: sh\n\n    $ pip install 'ua-parser[regex]'\n\nto install in the current environment.\n\nua-parser supports CPython 3.9 and newer, recent pypy (supporting\n3.10), and GraalPy 24.\n\n.. note::\n\n   The ``[regex]`` feature is *strongly* recommended:\n\n   - ``[re2]`` is slightly slower and only works with cpython, though\n     it is still a great option then (and is more memory-efficient).\n   - Pure python (no feature) is *significantly* slower, especially on\n     non-cpython runtimes, but it is the most memory efficient even\n     with caches.\n\n   See `builtin resolvers`_ for more explanation of the tradeoffs\n   between the different options.\n\n.. _builtin resolvers: https://uap-python.readthedocs.io/stable/guides.html#builtin-resolvers\n\nQuick Start\n-----------\n\nRetrieve all data on a user-agent string\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from ua_parser import parse\n    \u003e\u003e\u003e ua_string = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'\n    \u003e\u003e\u003e parse(ua_string) # doctest: +NORMALIZE_WHITESPACE, +ELLIPSIS\n    Result(user_agent=UserAgent(family='Chrome',\n                                major='41',\n                                minor='0',\n                                patch='2272',\n                                patch_minor='104'),\n           os=OS(family='Mac OS X',\n                 major='10',\n                 minor='9',\n                 patch='4',\n                 patch_minor=None),\n           device=Device(family='Mac',\n                         brand='Apple',\n                         model='Mac'),\n           string='Mozilla/5.0 (Macintosh; Intel Mac OS...\n\nAny datum not found in the user agent string is set to ``None``::\n\n    \u003e\u003e\u003e parse(\"\")\n    Result(user_agent=None, os=None, device=None, string='')\n\nExtract only browser data from user-agent string\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from ua_parser import parse_user_agent\n    \u003e\u003e\u003e ua_string = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'\n    \u003e\u003e\u003e parse_user_agent(ua_string)\n    UserAgent(family='Chrome', major='41', minor='0', patch='2272', patch_minor='104')\n\nFor specific domains, a match failure just returns ``None``::\n\n    \u003e\u003e\u003e parse_user_agent(\"\")\n\nExtract OS information from user-agent string\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from ua_parser import parse_os\n    \u003e\u003e\u003e ua_string = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'\n    \u003e\u003e\u003e parse_os(ua_string)\n    OS(family='Mac OS X', major='10', minor='9', patch='4', patch_minor=None)\n\nExtract device information from user-agent string\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n    \u003e\u003e\u003e from ua_parser import parse_device\n    \u003e\u003e\u003e ua_string = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'\n    \u003e\u003e\u003e parse_device(ua_string)\n    Device(family='Mac', brand='Apple', model='Mac')\n\nUpgrading\n---------\n\nUpgrading from 0.x? See `the upgrade guide`_.\n\n.. _the upgrade guide: https://uap-python.readthedocs.io/stable/advanced/migration.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fua-parser%2Fuap-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fua-parser%2Fuap-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fua-parser%2Fuap-python/lists"}