summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-01-06 09:33:02 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-01-17 11:49:15 +0100
commitef46f3778a0e8fee7f68c4cfb7ad60a3c8765934 (patch)
tree3172f6919b46b4ef6e0687cbedaeac55e0fb1ca7
parent6c0539ed7c7a1ddeaac3ff91622ebf7a8c8442b9 (diff)
Refs #32712 -- Removed django.utils.baseconv module per deprecation timeline.
-rw-r--r--django/utils/baseconv.py115
-rw-r--r--docs/releases/5.0.txt2
-rw-r--r--tests/utils_tests/test_baseconv.py60
3 files changed, 2 insertions, 175 deletions
diff --git a/django/utils/baseconv.py b/django/utils/baseconv.py
deleted file mode 100644
index fcaab23f53..0000000000
--- a/django/utils/baseconv.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# RemovedInDjango50Warning
-# Copyright (c) 2010 Guilherme Gondim. All rights reserved.
-# Copyright (c) 2009 Simon Willison. All rights reserved.
-# Copyright (c) 2002 Drew Perttula. All rights reserved.
-#
-# License:
-# Python Software Foundation License version 2
-#
-# See the file "LICENSE" for terms & conditions for usage, and a DISCLAIMER OF
-# ALL WARRANTIES.
-#
-# This Baseconv distribution contains no GNU General Public Licensed (GPLed)
-# code so it may be used in proprietary projects just like prior ``baseconv``
-# distributions.
-#
-# All trademarks referenced herein are property of their respective holders.
-#
-
-"""
-Convert numbers from base 10 integers to base X strings and back again.
-
-Sample usage::
-
- >>> base20 = BaseConverter('0123456789abcdefghij')
- >>> base20.encode(1234)
- '31e'
- >>> base20.decode('31e')
- 1234
- >>> base20.encode(-1234)
- '-31e'
- >>> base20.decode('-31e')
- -1234
- >>> base11 = BaseConverter('0123456789-', sign='$')
- >>> base11.encode(-1234)
- '$-22'
- >>> base11.decode('$-22')
- -1234
-
-"""
-import warnings
-
-from django.utils.deprecation import RemovedInDjango50Warning
-
-warnings.warn(
- "The django.utils.baseconv module is deprecated.",
- category=RemovedInDjango50Warning,
- stacklevel=2,
-)
-
-BASE2_ALPHABET = "01"
-BASE16_ALPHABET = "0123456789ABCDEF"
-BASE56_ALPHABET = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz"
-BASE36_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz"
-BASE62_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
-BASE64_ALPHABET = BASE62_ALPHABET + "-_"
-
-
-class BaseConverter:
- decimal_digits = "0123456789"
-
- def __init__(self, digits, sign="-"):
- self.sign = sign
- self.digits = digits
- if sign in self.digits:
- raise ValueError("Sign character found in converter base digits.")
-
- def __repr__(self):
- return "<%s: base%s (%s)>" % (
- self.__class__.__name__,
- len(self.digits),
- self.digits,
- )
-
- def encode(self, i):
- neg, value = self.convert(i, self.decimal_digits, self.digits, "-")
- if neg:
- return self.sign + value
- return value
-
- def decode(self, s):
- neg, value = self.convert(s, self.digits, self.decimal_digits, self.sign)
- if neg:
- value = "-" + value
- return int(value)
-
- def convert(self, number, from_digits, to_digits, sign):
- if str(number)[0] == sign:
- number = str(number)[1:]
- neg = 1
- else:
- neg = 0
-
- # make an integer out of the number
- x = 0
- for digit in str(number):
- x = x * len(from_digits) + from_digits.index(digit)
-
- # create the result in base 'len(to_digits)'
- if x == 0:
- res = to_digits[0]
- else:
- res = ""
- while x > 0:
- digit = x % len(to_digits)
- res = to_digits[digit] + res
- x = int(x // len(to_digits))
- return neg, res
-
-
-base2 = BaseConverter(BASE2_ALPHABET)
-base16 = BaseConverter(BASE16_ALPHABET)
-base36 = BaseConverter(BASE36_ALPHABET)
-base56 = BaseConverter(BASE56_ALPHABET)
-base62 = BaseConverter(BASE62_ALPHABET)
-base64 = BaseConverter(BASE64_ALPHABET, sign="$")
diff --git a/docs/releases/5.0.txt b/docs/releases/5.0.txt
index f936fc1d77..82c06e3be1 100644
--- a/docs/releases/5.0.txt
+++ b/docs/releases/5.0.txt
@@ -257,6 +257,8 @@ to remove usage of these features.
* The ``SERIALIZE`` test setting is removed.
+* The undocumented ``django.utils.baseconv`` module is removed.
+
See :ref:`deprecated-features-4.1` for details on these changes, including how
to remove usage of these features.
diff --git a/tests/utils_tests/test_baseconv.py b/tests/utils_tests/test_baseconv.py
deleted file mode 100644
index 5f69b65b9f..0000000000
--- a/tests/utils_tests/test_baseconv.py
+++ /dev/null
@@ -1,60 +0,0 @@
-from unittest import TestCase
-
-from django.test import ignore_warnings
-from django.utils.deprecation import RemovedInDjango50Warning
-
-with ignore_warnings(category=RemovedInDjango50Warning):
- from django.utils.baseconv import (
- BaseConverter,
- base2,
- base16,
- base36,
- base56,
- base62,
- base64,
- )
-
-
-# RemovedInDjango50Warning
-class TestBaseConv(TestCase):
- def test_baseconv(self):
- nums = [-(10**10), 10**10, *range(-100, 100)]
- for converter in [base2, base16, base36, base56, base62, base64]:
- for i in nums:
- self.assertEqual(i, converter.decode(converter.encode(i)))
-
- def test_base11(self):
- base11 = BaseConverter("0123456789-", sign="$")
- self.assertEqual(base11.encode(1234), "-22")
- self.assertEqual(base11.decode("-22"), 1234)
- self.assertEqual(base11.encode(-1234), "$-22")
- self.assertEqual(base11.decode("$-22"), -1234)
-
- def test_base20(self):
- base20 = BaseConverter("0123456789abcdefghij")
- self.assertEqual(base20.encode(1234), "31e")
- self.assertEqual(base20.decode("31e"), 1234)
- self.assertEqual(base20.encode(-1234), "-31e")
- self.assertEqual(base20.decode("-31e"), -1234)
-
- def test_base64(self):
- self.assertEqual(base64.encode(1234), "JI")
- self.assertEqual(base64.decode("JI"), 1234)
- self.assertEqual(base64.encode(-1234), "$JI")
- self.assertEqual(base64.decode("$JI"), -1234)
-
- def test_base7(self):
- base7 = BaseConverter("cjdhel3", sign="g")
- self.assertEqual(base7.encode(1234), "hejd")
- self.assertEqual(base7.decode("hejd"), 1234)
- self.assertEqual(base7.encode(-1234), "ghejd")
- self.assertEqual(base7.decode("ghejd"), -1234)
-
- def test_exception(self):
- with self.assertRaises(ValueError):
- BaseConverter("abc", sign="a")
- self.assertIsInstance(BaseConverter("abc", sign="d"), BaseConverter)
-
- def test_repr(self):
- base7 = BaseConverter("cjdhel3", sign="g")
- self.assertEqual(repr(base7), "<BaseConverter: base7 (cjdhel3)>")