Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ exclude_lines =
# No need to test __repr__
def __repr__

# Python 2/3 compatibility
# Import fallbacks
except ImportError
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ "3.7", "3.8", "3.9", "3.10", "3.11", "3.12" ]
python-version: [ "3.9", "3.10", "3.11", "3.12" ]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ python-json-pointer
===================

*python-json-pointer* is a Python library for resolving JSON pointers (`RFC
6901 <http://tools.ietf.org/html/rfc6901>`_). Python 2.7, 3.4+
6901 <http://tools.ietf.org/html/rfc6901>`_). Python 3.9+
and PyPy are supported.

**Contents**
Expand Down
4 changes: 1 addition & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
Expand All @@ -62,5 +60,5 @@
py_modules=MODULES,
scripts=['bin/jsonpointer'],
classifiers=CLASSIFIERS,
python_requires='>=3.7',
python_requires='>=3.9',
)
49 changes: 17 additions & 32 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

import copy
import doctest
import sys
import unittest

import jsonpointer
Expand Down Expand Up @@ -78,45 +75,33 @@ def test_round_trip(self):

def test_str_and_repr(self):
paths = [
("", "", "JsonPointer({u}'')"),
("/foo", "/foo", "JsonPointer({u}'/foo')"),
("/foo/0", "/foo/0", "JsonPointer({u}'/foo/0')"),
("/", "/", "JsonPointer({u}'/')"),
("/a~1b", "/a~1b", "JsonPointer({u}'/a~1b')"),
("/c%d", "/c%d", "JsonPointer({u}'/c%d')"),
("/e^f", "/e^f", "JsonPointer({u}'/e^f')"),
("/g|h", "/g|h", "JsonPointer({u}'/g|h')"),
("/i\\j", "/i\\j", "JsonPointer({u}'/i\\\\j')"),
("/k\"l", "/k\"l", "JsonPointer({u}'/k\"l')"),
("/ ", "/ ", "JsonPointer({u}'/ ')"),
("/m~0n", "/m~0n", "JsonPointer({u}'/m~0n')"),
("", "", "JsonPointer('')"),
("/foo", "/foo", "JsonPointer('/foo')"),
("/foo/0", "/foo/0", "JsonPointer('/foo/0')"),
("/", "/", "JsonPointer('/')"),
("/a~1b", "/a~1b", "JsonPointer('/a~1b')"),
("/c%d", "/c%d", "JsonPointer('/c%d')"),
("/e^f", "/e^f", "JsonPointer('/e^f')"),
("/g|h", "/g|h", "JsonPointer('/g|h')"),
("/i\\j", "/i\\j", "JsonPointer('/i\\\\j')"),
("/k\"l", "/k\"l", "JsonPointer('/k\"l')"),
("/ ", "/ ", "JsonPointer('/ ')"),
("/m~0n", "/m~0n", "JsonPointer('/m~0n')"),
]
for path, ptr_str, ptr_repr in paths:
ptr = JsonPointer(path)
self.assertEqual(path, ptr.path)

if sys.version_info[0] == 2:
u_str = "u"
else:
u_str = ""
self.assertEqual(ptr_str, str(ptr))
self.assertEqual(ptr_repr.format(u=u_str), repr(ptr))

if sys.version_info[0] == 2:
path = "/\xee"
ptr_str = b"/\xee"
ptr_repr = "JsonPointer(u'/\\xee')"
else:
path = "/\xee"
ptr_str = "/\xee"
ptr_repr = "JsonPointer('/\xee')"
self.assertEqual(ptr_repr, repr(ptr))

path = "/\xee"
ptr_str = "/\xee"
ptr_repr = "JsonPointer('/\xee')"
ptr = JsonPointer(path)
self.assertEqual(path, ptr.path)

self.assertEqual(ptr_str, str(ptr))
self.assertEqual(ptr_repr, repr(ptr))

# should not be unicode in Python 2
self.assertIsInstance(str(ptr), str)
self.assertIsInstance(repr(ptr), str)

Expand Down