New Upstream Snapshot - python-user-agents

Ready changes

Summary

Merged new upstream version: 2.2.0+git20211214.1.862c54b (was: 2.2.0).

Resulting package

Built on 2022-11-04T21:42 (took 11m39s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-snapshots python3-user-agents

Lintian Result

Diff

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index df0a0a6..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-.DS*
-TAGS
-dist
-cabal-dev
-*.pyc
-build/
-*.egg-info
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index ce6c95a..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-sudo: false
-language: python
-dist: xenial
-python:
-  - "2.7"
-  - "3.4"
-  - "3.5"
-  - "3.6"
-  - "3.7"
-  - "3.8"
-install:
-  - "python setup.py install"
-  - "pip install -U pip"
-  - "pip install -r requirements.txt"
-script:
-  - python -m unittest discover
diff --git a/MANIFEST b/MANIFEST
deleted file mode 100644
index 82e30a7..0000000
--- a/MANIFEST
+++ /dev/null
@@ -1,8 +0,0 @@
-# file GENERATED by distutils, do NOT edit
-LICENSE.txt
-README.rst
-setup.py
-user_agents/__init__.py
-user_agents/compat.py
-user_agents/parsers.py
-user_agents/tests.py
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..47695b7
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,207 @@
+Metadata-Version: 2.1
+Name: user-agents
+Version: 2.2.0
+Summary: A library to identify devices (phones, tablets) and their capabilities by parsing browser user agent strings.
+Home-page: https://github.com/selwin/python-user-agents
+Author: Selwin Ong
+Author-email: selwin.ong@gmail.com
+License: MIT
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Description-Content-Type: text/markdown
+License-File: LICENSE.txt
+License-File: AUTHORS.txt
+
+Python User Agents
+==================
+
+`user_agents` is a Python library that provides an easy way to identify/detect devices like mobile phones, tablets and their capabilities by parsing (browser/HTTP) user agent strings. The goal is to reliably detect whether:
+
+* User agent is a mobile, tablet or PC based device
+* User agent has touch capabilities (has touch screen)
+
+`user_agents` relies on the excellent [ua-parser](https://github.com/ua-parser/uap-python) to do the actual parsing of the raw user agent string.
+
+Installation
+------------
+
+![Build status](https://secure.travis-ci.org/selwin/python-user-agents.png)
+
+`user-agents` is hosted on [PyPI](http://pypi.python.org/pypi/user-agents/) and can be installed as such:
+
+    pip install pyyaml ua-parser user-agents
+
+Alternatively, you can also get the latest source code from [Github](https://github.com/selwin/python-user-agents) and install it manually.
+
+Usage
+-----
+
+Various basic information that can help you identify visitors can be accessed `browser`, `device` and `os` attributes. For example:
+
+```python
+from user_agents import parse
+
+# iPhone's user agent string
+ua_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3'
+user_agent = parse(ua_string)
+
+# Accessing user agent's browser attributes
+user_agent.browser  # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')
+user_agent.browser.family  # returns 'Mobile Safari'
+user_agent.browser.version  # returns (5, 1)
+user_agent.browser.version_string   # returns '5.1'
+
+# Accessing user agent's operating system properties
+user_agent.os  # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')
+user_agent.os.family  # returns 'iOS'
+user_agent.os.version  # returns (5, 1)
+user_agent.os.version_string  # returns '5.1'
+
+# Accessing user agent's device properties
+user_agent.device  # returns Device(family=u'iPhone', brand=u'Apple', model=u'iPhone')
+user_agent.device.family  # returns 'iPhone'
+user_agent.device.brand # returns 'Apple'
+user_agent.device.model # returns 'iPhone'
+
+# Viewing a pretty string version
+str(user_agent) # returns "iPhone / iOS 5.1 / Mobile Safari 5.1"
+```
+
+`user_agents` also expose a few other more "sophisticated" attributes that are derived from one or more basic attributes defined above. As for now, these attributes should correctly identify popular platforms/devices, pull requests to support smaller ones are always welcome.
+
+Currently these attributes are supported:
+
+* `is_mobile`: whether user agent is identified as a mobile phone (iPhone, Android phones, Blackberry, Windows Phone devices etc)
+* `is_tablet`: whether user agent is identified as a tablet device (iPad, Kindle Fire, Nexus 7 etc)
+* `is_pc`: whether user agent is identified to be running a traditional "desktop" OS (Windows, OS X, Linux)
+* `is_touch_capable`: whether user agent has touch capabilities
+* `is_bot`: whether user agent is a search engine crawler/spider
+
+For example:
+
+```python
+from user_agents import parse
+
+# Let's start from an old, non touch Blackberry device
+ua_string = 'BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns True
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns False
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700"
+
+# Now a Samsung Galaxy S3
+ua_string = 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns True
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4"
+
+# iPad's user agent string
+ua_string = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns True
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "iPad / iOS 3.2 / Mobile Safari 4.0.4"
+
+# Kindle Fire's user agent string
+ua_string = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns True
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "Kindle / Android / Amazon Silk 1.1.0-80"
+
+# Touch capable Windows 8 device
+ua_string = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns True
+user_agent.is_bot # returns False
+str(user_agent) # returns "PC / Windows 8 / IE 10"
+```
+
+Running Tests
+-------------
+
+    python -m unittest discover
+
+Changelog
+---------
+### Version 2.2.0 (2020-08-23)
+* `ua-parser` >= 0.10.0 is required. Thanks @jnozsc!
+* Added `get_device()`, `get_os()` and `get_browser()` instance methods
+to `UserAgent`. Thanks @rodrigondec!
+
+### Version 2.1 (2020-02-08)
+
+* `python-user-agents` now require `ua-parser>=0.9.0`. Thanks @jnozsc!
+* Properly detect Chrome Mobile browser families. Thanks @jnozsc!
+
+### Version 2.0 (2019-04-07)
+
+* `python-user-agents` now require `ua-parser>=0.8.0`. Thanks @IMDagger!
+
+### Version 1.1
+
+* Fixes packaging issue
+
+### Version 1.0
+
+* Adds compatibility with `ua-parser` 0.4.0
+* Access to more device information in `user_agent.device.brand` and `user_agent.device.model`
+
+### Version 0.3.2
+
+* Better mobile detection
+* Better PC detection
+
+### Version 0.3.1
+
+* user\_agent.is\_mobile returns True when mobile spider is detected
+
+### Version 0.3.0
+
+* Added **str**/**unicode** methods for convenience of pretty string
+
+### Version 0.2.0
+
+* Fixed errors when running against newer versions if ua-parser
+* Support for Python 3
+
+### Version 0.1.1
+
+* Added `is_bot` property
+* Symbian OS devices are now detected as a mobile device
+
+### Version 0.1
+
+* Initial release
+
+Developed by the cool guys at [Stamps](http://stamps.co.id).
diff --git a/debian/changelog b/debian/changelog
index 426a115..124fc22 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+python-user-agents (2.2.0+git20211214.1.862c54b-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 04 Nov 2022 21:33:58 -0000
+
 python-user-agents (2.2.0-3) unstable; urgency=medium
 
   [ Debian Janitor ]
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index f1d66ef..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-ua-parser==0.10.0
-PyYAML==5.3; python_version != '3.4'
-PyYAML==5.2; python_version == '3.4'  # the last version support py34
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..8bfd5a1
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,4 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff --git a/user_agents.egg-info/PKG-INFO b/user_agents.egg-info/PKG-INFO
new file mode 100644
index 0000000..47695b7
--- /dev/null
+++ b/user_agents.egg-info/PKG-INFO
@@ -0,0 +1,207 @@
+Metadata-Version: 2.1
+Name: user-agents
+Version: 2.2.0
+Summary: A library to identify devices (phones, tablets) and their capabilities by parsing browser user agent strings.
+Home-page: https://github.com/selwin/python-user-agents
+Author: Selwin Ong
+Author-email: selwin.ong@gmail.com
+License: MIT
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Description-Content-Type: text/markdown
+License-File: LICENSE.txt
+License-File: AUTHORS.txt
+
+Python User Agents
+==================
+
+`user_agents` is a Python library that provides an easy way to identify/detect devices like mobile phones, tablets and their capabilities by parsing (browser/HTTP) user agent strings. The goal is to reliably detect whether:
+
+* User agent is a mobile, tablet or PC based device
+* User agent has touch capabilities (has touch screen)
+
+`user_agents` relies on the excellent [ua-parser](https://github.com/ua-parser/uap-python) to do the actual parsing of the raw user agent string.
+
+Installation
+------------
+
+![Build status](https://secure.travis-ci.org/selwin/python-user-agents.png)
+
+`user-agents` is hosted on [PyPI](http://pypi.python.org/pypi/user-agents/) and can be installed as such:
+
+    pip install pyyaml ua-parser user-agents
+
+Alternatively, you can also get the latest source code from [Github](https://github.com/selwin/python-user-agents) and install it manually.
+
+Usage
+-----
+
+Various basic information that can help you identify visitors can be accessed `browser`, `device` and `os` attributes. For example:
+
+```python
+from user_agents import parse
+
+# iPhone's user agent string
+ua_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3'
+user_agent = parse(ua_string)
+
+# Accessing user agent's browser attributes
+user_agent.browser  # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')
+user_agent.browser.family  # returns 'Mobile Safari'
+user_agent.browser.version  # returns (5, 1)
+user_agent.browser.version_string   # returns '5.1'
+
+# Accessing user agent's operating system properties
+user_agent.os  # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')
+user_agent.os.family  # returns 'iOS'
+user_agent.os.version  # returns (5, 1)
+user_agent.os.version_string  # returns '5.1'
+
+# Accessing user agent's device properties
+user_agent.device  # returns Device(family=u'iPhone', brand=u'Apple', model=u'iPhone')
+user_agent.device.family  # returns 'iPhone'
+user_agent.device.brand # returns 'Apple'
+user_agent.device.model # returns 'iPhone'
+
+# Viewing a pretty string version
+str(user_agent) # returns "iPhone / iOS 5.1 / Mobile Safari 5.1"
+```
+
+`user_agents` also expose a few other more "sophisticated" attributes that are derived from one or more basic attributes defined above. As for now, these attributes should correctly identify popular platforms/devices, pull requests to support smaller ones are always welcome.
+
+Currently these attributes are supported:
+
+* `is_mobile`: whether user agent is identified as a mobile phone (iPhone, Android phones, Blackberry, Windows Phone devices etc)
+* `is_tablet`: whether user agent is identified as a tablet device (iPad, Kindle Fire, Nexus 7 etc)
+* `is_pc`: whether user agent is identified to be running a traditional "desktop" OS (Windows, OS X, Linux)
+* `is_touch_capable`: whether user agent has touch capabilities
+* `is_bot`: whether user agent is a search engine crawler/spider
+
+For example:
+
+```python
+from user_agents import parse
+
+# Let's start from an old, non touch Blackberry device
+ua_string = 'BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns True
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns False
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700"
+
+# Now a Samsung Galaxy S3
+ua_string = 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns True
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4"
+
+# iPad's user agent string
+ua_string = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns True
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "iPad / iOS 3.2 / Mobile Safari 4.0.4"
+
+# Kindle Fire's user agent string
+ua_string = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns True
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns False
+user_agent.is_bot # returns False
+str(user_agent) # returns "Kindle / Android / Amazon Silk 1.1.0-80"
+
+# Touch capable Windows 8 device
+ua_string = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'
+user_agent = parse(ua_string)
+user_agent.is_mobile # returns False
+user_agent.is_tablet # returns False
+user_agent.is_touch_capable # returns True
+user_agent.is_pc # returns True
+user_agent.is_bot # returns False
+str(user_agent) # returns "PC / Windows 8 / IE 10"
+```
+
+Running Tests
+-------------
+
+    python -m unittest discover
+
+Changelog
+---------
+### Version 2.2.0 (2020-08-23)
+* `ua-parser` >= 0.10.0 is required. Thanks @jnozsc!
+* Added `get_device()`, `get_os()` and `get_browser()` instance methods
+to `UserAgent`. Thanks @rodrigondec!
+
+### Version 2.1 (2020-02-08)
+
+* `python-user-agents` now require `ua-parser>=0.9.0`. Thanks @jnozsc!
+* Properly detect Chrome Mobile browser families. Thanks @jnozsc!
+
+### Version 2.0 (2019-04-07)
+
+* `python-user-agents` now require `ua-parser>=0.8.0`. Thanks @IMDagger!
+
+### Version 1.1
+
+* Fixes packaging issue
+
+### Version 1.0
+
+* Adds compatibility with `ua-parser` 0.4.0
+* Access to more device information in `user_agent.device.brand` and `user_agent.device.model`
+
+### Version 0.3.2
+
+* Better mobile detection
+* Better PC detection
+
+### Version 0.3.1
+
+* user\_agent.is\_mobile returns True when mobile spider is detected
+
+### Version 0.3.0
+
+* Added **str**/**unicode** methods for convenience of pretty string
+
+### Version 0.2.0
+
+* Fixed errors when running against newer versions if ua-parser
+* Support for Python 3
+
+### Version 0.1.1
+
+* Added `is_bot` property
+* Symbian OS devices are now detected as a mobile device
+
+### Version 0.1
+
+* Initial release
+
+Developed by the cool guys at [Stamps](http://stamps.co.id).
diff --git a/user_agents.egg-info/SOURCES.txt b/user_agents.egg-info/SOURCES.txt
new file mode 100644
index 0000000..58ce0ff
--- /dev/null
+++ b/user_agents.egg-info/SOURCES.txt
@@ -0,0 +1,15 @@
+AUTHORS.txt
+LICENSE.txt
+MANIFEST.in
+README.md
+setup.py
+user_agents/__init__.py
+user_agents/compat.py
+user_agents/parsers.py
+user_agents/tests.py
+user_agents.egg-info/PKG-INFO
+user_agents.egg-info/SOURCES.txt
+user_agents.egg-info/dependency_links.txt
+user_agents.egg-info/not-zip-safe
+user_agents.egg-info/requires.txt
+user_agents.egg-info/top_level.txt
\ No newline at end of file
diff --git a/user_agents.egg-info/dependency_links.txt b/user_agents.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/user_agents.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/user_agents.egg-info/not-zip-safe b/user_agents.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/user_agents.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/user_agents.egg-info/requires.txt b/user_agents.egg-info/requires.txt
new file mode 100644
index 0000000..bfbe425
--- /dev/null
+++ b/user_agents.egg-info/requires.txt
@@ -0,0 +1 @@
+ua-parser>=0.10.0
diff --git a/user_agents.egg-info/top_level.txt b/user_agents.egg-info/top_level.txt
new file mode 100644
index 0000000..ff6424c
--- /dev/null
+++ b/user_agents.egg-info/top_level.txt
@@ -0,0 +1 @@
+user_agents
diff --git a/user_agents/devices.json b/user_agents/devices.json
deleted file mode 100644
index c8b7efe..0000000
--- a/user_agents/devices.json
+++ /dev/null
@@ -1,361 +0,0 @@
-{
-    "android_firefox_aurora": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Android; Mobile; rv:27.0) Gecko/27.0 Firefox/27.0",
-        "str": "Other / Android / Firefox Mobile 27"
-    },
-    "blackberry_bold": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba",
-        "str": "BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700"
-    },
-    "blackberry_bold_touch": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (BlackBerry; U; BlackBerry 9930; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.241 Mobile Safari/534.11+",
-        "str": "BlackBerry 9930 / BlackBerry OS 7 / BlackBerry WebKit 7"
-    },
-    "blackberry_torch": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; zh-TW) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.448 Mobile Safari/534.8+",
-        "str": "BlackBerry 9800 / BlackBerry OS 6 / BlackBerry WebKit 6"
-    },
-    "galaxy_s3": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
-        "str": "GT-I9300 / Android 4.0.4 / Android 4.0.4"
-    },
-    "galaxy_tab": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
-        "str": "SCH-I800 / Android 2.2 / Android 2.2"
-    },
-    "google_bot": {
-        "is_bot": true,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
-        "str": "Spider / Other / Googlebot 2.1"
-    },
-    "ie": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)",
-        "str": "PC / Windows 8 / IE 10"
-    },
-    "ie_touch": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)",
-        "str": "PC / Windows 8 / IE 10"
-    },
-    "ipad": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10",
-        "str": "iPad / iOS 3.2 / Mobile Safari 4.0.4"
-    },
-    "iphone": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3",
-        "str": "iPhone / iOS 5.1 / Mobile Safari 5.1"
-    },
-    "j2me_opera": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Opera/9.80 (J2ME/MIDP; Opera Mini/9.80 (J2ME/22.478; U; en) Presto/2.5.25 Version/10.54",
-        "str": "Other / Other / Opera Mini 9.80"
-    },
-    "kindle_fire": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true",
-        "str": "Kindle Fire / Android / Amazon Silk 1.1.0-80"
-    },
-    "mac_safari": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
-        "str": "PC / Mac OS X 10.6.8 / WebKit Nightly 537.13"
-    },
-    "nexus_5": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; Android 4.4.4; Nexus 5 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36",
-        "str": "Nexus 5 / Android 4.4.4 / Chrome Mobile 37.0.2062"
-    },
-    "nexus_7": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19",
-        "str": "Nexus 7 / Android 4.1.1 / Chrome 18.0.1025"
-    },
-    "nokia_n9": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
-        "str": "Nokia N9 / MeeGo / Nokia Browser 8.5.0"
-    },
-    "nokia_n97": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/12.0.024; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344",
-        "str": "Nokia N97 / Symbian OS 9.4 / Nokia Browser 7.1.12344"
-    },
-    "nokia_n900": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (X11; U; Linux armv7l; no-NO; rv:1.9.2.3pre) Gecko/20100723 Firefox/3.5 Maemo Browser 1.7.4.8 RX-51 N900",
-        "str": "Nokia N900 / Maemo / Maemo Browser 1.7.4"
-    },
-    "playbook": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.0.1; en-US) AppleWebKit/535.8+ (KHTML, like Gecko) Version/7.2.0.1 Safari/535.8+",
-        "str": "BlackBerry Playbook / BlackBerry Tablet OS 2.0.1 / BlackBerry WebKit 2.0.1"
-    },
-    "playstation": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (PLAYSTATION 3 4.60) AppleWebKit/531.22.8 (KHTML, like Gecko)",
-        "str": "PlayStation 3 / Other / NetFront NX"
-    },
-    "playstation_vita": {"is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (PlayStation Vita 3.12) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2",
-        "str": "PlayStation Vita / Other / NetFront NX"
-    },
-    "samsung_galaxy_s": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SCH-I545 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36",
-        "str": "SAMSUNG SCH-I545 / Android 4.4.2 / Chrome Mobile 28.0.1500"
-    },
-    "samsung_galaxy_s_iii_mini": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; Android 4.1.2; GT-I8190 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36",
-        "str": "GT-I8190 / Android 4.1.2 / Chrome Mobile 37.0.2062"
-    },
-    "samsung_sm_galaxy_s5": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (Linux; Android 4.4.2; en-gb; SAMSUNG SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36",
-        "str": "SAMSUNG SM-G900F / Android 4.4.2 / Chrome Mobile 28.0.1500"
-    },
-    "samsung_wave_ii": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8530/S8530DDLC2; U; Bada/2.0; en-us) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile WVGA SMM-MMS/1.2.0 OPN-B",
-        "str": "Samsung GT-S8530 / Bada 2 / Dolfin 3"
-    },
-    "ubuntu_firefox": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1",
-        "str": "PC / Ubuntu / Firefox 15.0.1"
-    },
-    "windows_ie": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
-        "str": "PC / Windows 7 / IE 9"
-    },
-    "windows_phone": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)",
-        "str": "Samsung SGH-i917 / Windows Phone 7.5 / IE Mobile 9"
-    },
-    "windows_rt": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)",
-        "str": "PC / Windows RT / IE 10"
-    },
-    "googlebot_mobile": {
-        "is_bot": true,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (iPhone; U; CPU iPhone OS) (compatible; Googlebot-Mobile/2.1; http://www.google.com/bot.html)",
-        "str": "Spider / Other / Mobile Safari"
-    },
-    "googlebot_mobile_2": {
-        "is_bot": true,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
-        "str": "Spider / Other / Mobile Safari"
-    },
-    "googlebot_mobile_3": {
-        "is_bot": true,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)",
-        "str": "Spider / Other / Other"
-    },
-    "windows_ce": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "SAMSUNG-SGH-I617/UCHJ1 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)",
-        "str": "Samsung SGH-I617 / Windows CE / IE Mobile 7.11"
-    },
-    "windows_mobile": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": true,
-        "ua_string": "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 8.12; MSIEMobile 6.0) 320x240; VZW; UTStar-XV6175.1; Windows Mobile 6.5 Standard;",
-        "str": "Other / Windows Mobile / IE Mobile 8.12"
-    },
-    "opera_mobile": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": true,
-        "is_touch_capable": true,
-        "ua_string": "Opera/9.80 (Android 2.3.3; Linux; Opera Mobi/ADR-1202011015; U; en) Presto/2.9.201 Version/11.50",
-        "str": "Opera / Android 2.3.3 / Opera Mobile 11.50"
-    },
-    "opera_mini": {
-        "is_bot": false,
-        "is_mobile": true,
-        "is_pc": false,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Opera/9.80 (BREW; Opera Mini/5.0/27.2370; U; en) Presto/2.8.119 240X320 Samsung SCH-U380",
-        "str": "Opera / Android 2.3.3 / Opera Mobile 11.50"
-    },
-    "windows_95": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (Windows; U; Win 9x 4.90; en-GB; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1",
-        "str": "Other / Windows ME / Firefox 2"
-    },
-    "solaris": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.6) Gecko/20040503",
-        "str": "Other / Solaris / Other"
-    },
-    "chrome_os": {
-        "is_bot": false,
-        "is_mobile": false,
-        "is_pc": true,
-        "is_tablet": false,
-        "is_touch_capable": false,
-        "ua_string": "Mozilla/5.0 (X11; CrOS i686 0.12.433) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.77 Safari/534.30",
-        "str": "CrOS"
-    }
-}
diff --git a/user_agents/parsers.py b/user_agents/parsers.py
index 8fcae30..01d2a83 100644
--- a/user_agents/parsers.py
+++ b/user_agents/parsers.py
@@ -50,6 +50,10 @@ TABLET_DEVICE_FAMILIES = (
     'Dell Streak',
 )
 
+TABLET_DEVICE_BRANDS = (
+    'Generic_Android_Tablet',
+)
+
 TOUCH_CAPABLE_OS_FAMILIES = (
     'iOS',
     'Android',
@@ -63,7 +67,10 @@ TOUCH_CAPABLE_OS_FAMILIES = (
 TOUCH_CAPABLE_DEVICE_FAMILIES = (
     'BlackBerry Playbook',
     'Blackberry Playbook',
+    'Generic Smartphone',
+    'iPad',
     'Kindle Fire',
+    'Kindle'
 )
 
 EMAIL_PROGRAM_FAMILIES = set((
@@ -152,10 +159,8 @@ class UserAgent(object):
     def _is_android_tablet(self):
         # Newer Android tablets don't have "Mobile" in their user agent string,
         # older ones like Galaxy Tab still have "Mobile" though they're not
-        if ('Mobile Safari' not in self.ua_string and
-                self.browser.family != "Firefox Mobile"):
-            return True
-        return False
+        return ('Mobile Safari' not in self.ua_string and
+                self.browser.family != "Firefox Mobile")
 
     def _is_blackberry_touch_capable_device(self):
         # A helper to determine whether a BB phone has touch capabilities
@@ -179,6 +184,10 @@ class UserAgent(object):
     def is_tablet(self):
         if self.device.family in TABLET_DEVICE_FAMILIES:
             return True
+        if self.device.brand in TABLET_DEVICE_BRANDS:
+            return True
+        if self.device.family in MOBILE_DEVICE_FAMILIES:
+            return False
         if (self.os.family == 'Android' and self._is_android_tablet()):
             return True
         if self.os.family == 'Windows' and self.os.version_string.startswith('RT'):
@@ -192,14 +201,13 @@ class UserAgent(object):
         # First check for mobile device and mobile browser families
         if self.device.family in MOBILE_DEVICE_FAMILIES:
             return True
+        if self.is_tablet or self.is_pc:
+            return False
         if self.browser.family in MOBILE_BROWSER_FAMILIES:
             return True
         # Device is considered Mobile OS is Android and not tablet
         # This is not fool proof but would have to suffice for now
-        if ((self.os.family == 'Android' or self.os.family == 'Firefox OS')
-            and not self.is_tablet):
-            return True
-        if self.os.family == 'BlackBerry OS' and self.device.family != 'Blackberry Playbook':
+        if self.os.family in ['Android', 'Firefox OS', 'BlackBerry OS']:
             return True
         if self.os.family in MOBILE_OS_FAMILIES:
             return True
@@ -237,6 +245,10 @@ class UserAgent(object):
 
     @property
     def is_pc(self):
+        if self.device.family in MOBILE_DEVICE_FAMILIES or \
+           self.device.family in TABLET_DEVICE_FAMILIES or \
+           self.device.brand in TABLET_DEVICE_BRANDS:
+            return False
         # Returns True for "PC" devices (Windows, Mac and Linux)
         if 'Windows NT' in self.ua_string or self.os.family in PC_OS_FAMILIES or \
            self.os.family == 'Windows' and self.os.version_string == 'ME':
@@ -255,13 +267,11 @@ class UserAgent(object):
 
     @property
     def is_bot(self):
-        return True if self.device.family == 'Spider' else False
+        return self.device.family == 'Spider'
 
     @property
     def is_email_client(self):
-        if self.browser.family in EMAIL_PROGRAM_FAMILIES:
-            return True
-        return False
+        return self.browser.family in EMAIL_PROGRAM_FAMILIES
 
 
 def parse(user_agent_string):
diff --git a/user_agents/tests.py b/user_agents/tests.py
index 345cf82..d2633c0 100644
--- a/user_agents/tests.py
+++ b/user_agents/tests.py
@@ -9,6 +9,7 @@ from .parsers import parse
 
 iphone_ua_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3'
 ipad_ua_string = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
+ipad_mobile_chrome_ua_string = 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/86.0.4240.93 Mobile/15E148 Safari/604.1'
 galaxy_tab_ua_string = 'Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
 galaxy_s3_ua_string = 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
 kindle_fire_ua_string = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
@@ -34,6 +35,7 @@ chromebook_ua_string = 'Mozilla/5.0 (X11; CrOS i686 0.12.433) AppleWebKit/534.30
 
 iphone_ua = parse(iphone_ua_string)
 ipad_ua = parse(ipad_ua_string)
+ipad_mobile_chrome_ua = parse(ipad_mobile_chrome_ua_string)
 galaxy_tab = parse(galaxy_tab_ua_string)
 galaxy_s3_ua = parse(galaxy_s3_ua_string)
 kindle_fire_ua = parse(kindle_fire_ua_string)
@@ -100,6 +102,7 @@ class UserAgentsTest(unittest.TestCase):
         self.assertFalse(nokia_n97_ua.is_tablet)
         self.assertTrue(windows_rt_ua.is_tablet)
         self.assertTrue(ipad_ua.is_tablet)
+        self.assertTrue(ipad_mobile_chrome_ua.is_tablet)
         self.assertTrue(playbook_ua.is_tablet)
         self.assertTrue(kindle_fire_ua.is_tablet)
         self.assertTrue(nexus_7_ua.is_tablet)
@@ -115,6 +118,7 @@ class UserAgentsTest(unittest.TestCase):
         self.assertTrue(nokia_n97_ua.is_mobile)
         self.assertFalse(windows_rt_ua.is_mobile)
         self.assertFalse(ipad_ua.is_mobile)
+        self.assertFalse(ipad_mobile_chrome_ua.is_mobile)
         self.assertFalse(playbook_ua.is_mobile)
         self.assertFalse(kindle_fire_ua.is_mobile)
         self.assertFalse(nexus_7_ua.is_mobile)
@@ -130,6 +134,7 @@ class UserAgentsTest(unittest.TestCase):
         self.assertTrue(iphone_ua.is_touch_capable)
         self.assertTrue(galaxy_s3_ua.is_touch_capable)
         self.assertTrue(ipad_ua.is_touch_capable)
+        self.assertTrue(ipad_mobile_chrome_ua.is_touch_capable)
         self.assertTrue(playbook_ua.is_touch_capable)
         self.assertTrue(kindle_fire_ua.is_touch_capable)
         self.assertTrue(nexus_7_ua.is_touch_capable)
@@ -151,6 +156,7 @@ class UserAgentsTest(unittest.TestCase):
         self.assertFalse(iphone_ua.is_pc)
         self.assertFalse(galaxy_s3_ua.is_pc)
         self.assertFalse(ipad_ua.is_pc)
+        self.assertFalse(ipad_mobile_chrome_ua.is_pc)
         self.assertFalse(playbook_ua.is_pc)
         self.assertFalse(kindle_fire_ua.is_pc)
         self.assertFalse(nexus_7_ua.is_pc)
@@ -174,6 +180,7 @@ class UserAgentsTest(unittest.TestCase):
         self.assertFalse(iphone_ua.is_bot)
         self.assertFalse(galaxy_s3_ua.is_bot)
         self.assertFalse(ipad_ua.is_bot)
+        self.assertFalse(ipad_mobile_chrome_ua.is_bot)
         self.assertFalse(playbook_ua.is_bot)
         self.assertFalse(kindle_fire_ua.is_bot)
         self.assertFalse(nexus_7_ua.is_bot)
@@ -213,6 +220,7 @@ class UserAgentsTest(unittest.TestCase):
     def test_strings(self):
         self.assertEqual(str(iphone_ua), "iPhone / iOS 5.1 / Mobile Safari 5.1")
         self.assertEqual(str(ipad_ua), "iPad / iOS 3.2 / Mobile Safari 4.0.4")
+        self.assertEqual(str(ipad_mobile_chrome_ua), "iPad / iOS 13.3 / Chrome Mobile iOS 86.0.4240")
         self.assertEqual(str(galaxy_tab), "Samsung SCH-I800 / Android 2.2 / Android 2.2")
         self.assertEqual(str(galaxy_s3_ua), "Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4")
         self.assertEqual(str(kindle_fire_ua), "Kindle / Android / Amazon Silk 1.1.0-80")

Debdiff

File lists identical (after any substitutions)

No differences were encountered in the control files

More details

Full run details