Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-django-ipware for openSUSE:Factory checked in at 2023-10-05 20:04:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-django-ipware (Old) and /work/SRC/openSUSE:Factory/.python-django-ipware.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-ipware" Thu Oct 5 20:04:56 2023 rev:5 rq:1115779 version:5.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-django-ipware/python-django-ipware.changes 2023-05-08 17:24:11.596663064 +0200 +++ /work/SRC/openSUSE:Factory/.python-django-ipware.new.28202/python-django-ipware.changes 2023-10-05 20:06:06.453117065 +0200 @@ -1,0 +2,9 @@ +Thu Oct 5 09:20:34 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 5.0.1: + * Add HTTP_X_CLIENT_IP to defaults.py + * feat: support for python/django versions + * Add Missing Comma and Extend Private IPv6 Prefix List + * add deprecation notice + +------------------------------------------------------------------- Old: ---- django-ipware-5.0.0.tar.gz New: ---- django-ipware-5.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-django-ipware.spec ++++++ --- /var/tmp/diff_new_pack.5IwGzH/_old 2023-10-05 20:06:07.653160419 +0200 +++ /var/tmp/diff_new_pack.5IwGzH/_new 2023-10-05 20:06:07.657160564 +0200 @@ -16,11 +16,9 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} -%define skip_python2 1 -%define skip_python36 1 +%{?sle15_python_module_pythons} Name: python-django-ipware -Version: 5.0.0 +Version: 5.0.1 Release: 0 Summary: Django utility application that returns client's real IP address License: MIT ++++++ django-ipware-5.0.0.tar.gz -> django-ipware-5.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/.github/workflows/ci.yml new/django-ipware-5.0.1/.github/workflows/ci.yml --- old/django-ipware-5.0.0/.github/workflows/ci.yml 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/.github/workflows/ci.yml 2023-10-03 02:46:28.000000000 +0200 @@ -1,34 +1,31 @@ # https://devguide.python.org/versions # https://www.djangoproject.com/download/#supported-versions -name: (CI) +name: ci on: push: branches: - ci + - dev + - master pull_request: branches: - ci + - dev - master jobs: - build: + ci: name: Python ${{ matrix.python-version }}, django ${{ matrix.django-version }} runs-on: ubuntu-latest strategy: matrix: - python-version: [3.7, 3.8, 3.9, "3.10", 3.11, pypy3.9] - django-version: [3.2, 4.0, 4.1] + python-version: [3.8, 3.9, "3.10", "3.11"] + django-version: [3.2, 4.1, 4.2] exclude: # excludes list - - python-version: 3.7 - django-version: 4.0 - - python-version: 3.7 - django-version: 4.1 - python-version: 3.11 django-version: 3.2 - - python-version: 3.11 - django-version: 4.0 steps: - uses: actions/checkout@v3 @@ -40,19 +37,12 @@ run: | python -m pip install --upgrade pip pip install -e . - pip install --upgrade coveralls - pip install "django~=${{ matrix.django-version }}.0" - - name: Run flake8 - run: | - pip install --upgrade flake8 - flake8 --exclude=migrations,tests --ignore=E501,E241,E225,E128 . - - name: Run pycodestyle - run: | - pip install --upgrade pycodestyle - pycodestyle --exclude=migrations,tests --ignore=E501,E241,E225,E128 . + pip install --upgrade coveralls ruff + pip install "django~=${{ matrix.django-version }}" + - name: Run ruff + run: ruff --format=github . - name: Run test - run: | - coverage run --source=ipware manage.py test + run: coverage run --source=ipware manage.py test - name: Coveralls run: coveralls --service=github env: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/.github/workflows/dev.yml new/django-ipware-5.0.1/.github/workflows/dev.yml --- old/django-ipware-5.0.0/.github/workflows/dev.yml 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/.github/workflows/dev.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,56 +0,0 @@ -name: DEV - -# Run on push only for dev/sandbox -# Otherwise it may trigger concurrently `push & pull_request` on PRs. -on: - push: - branches: - - sandbox - - dev - -jobs: - build: - name: Python ${{ matrix.python-version }}, django ${{ matrix.django-version }} - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.7, 3.8, 3.9, "3.10", 3.11, pypy3.9] - django-version: [3.2, 4.0, 4.1] - exclude: - # excludes list - - python-version: 3.7 - django-version: 4.0 - - python-version: 3.7 - django-version: 4.1 - - python-version: 3.11 - django-version: 3.2 - - python-version: 3.11 - django-version: 4.0 - - steps: - - uses: actions/checkout@v3 - - name: setup python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -e . - pip install --upgrade coveralls - pip install "django~=${{ matrix.django-version }}.0" - - name: Run flake8 - run: | - pip install --upgrade flake8 - flake8 --exclude=migrations,tests --ignore=E501,E241,E225,E128 . - - name: Run pycodestyle - run: | - pip install --upgrade pycodestyle - pycodestyle --exclude=migrations,tests --ignore=E501,E241,E225,E128 . - - name: Run test - run: | - coverage run --source=ipware manage.py test - - name: Coveralls - run: coveralls --service=github - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/.github/workflows/main.yml new/django-ipware-5.0.1/.github/workflows/main.yml --- old/django-ipware-5.0.0/.github/workflows/main.yml 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/.github/workflows/main.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,55 +0,0 @@ -name: MAIN - -# Run on push only for main -# Otherwise it may trigger concurrently `push & pull_request` on PRs. -on: - push: - branches: - - master - -jobs: - build: - name: Python ${{ matrix.python-version }}, django ${{ matrix.django-version }} - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.7, 3.8, 3.9, "3.10", 3.11, pypy3.9] - django-version: [3.2, 4.0, 4.1] - exclude: - # excludes list - - python-version: 3.7 - django-version: 4.0 - - python-version: 3.7 - django-version: 4.1 - - python-version: 3.11 - django-version: 3.2 - - python-version: 3.11 - django-version: 4.0 - - steps: - - uses: actions/checkout@v3 - - name: setup python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -e . - pip install --upgrade coveralls - pip install "django~=${{ matrix.django-version }}.0" - - name: Run flake8 - run: | - pip install --upgrade flake8 - flake8 --exclude=migrations,tests --ignore=E501,E241,E225,E128 . - - name: Run pycodestyle - run: | - pip install --upgrade pycodestyle - pycodestyle --exclude=migrations,tests --ignore=E501,E241,E225,E128 . - - name: Run test - run: | - coverage run --source=ipware manage.py test - - name: Coveralls - run: coveralls --service=github - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/CHANGELOG.md new/django-ipware-5.0.1/CHANGELOG.md --- old/django-ipware-5.0.0/CHANGELOG.md 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/CHANGELOG.md 2023-10-03 02:46:28.000000000 +0200 @@ -1,3 +1,12 @@ +# Unreleased + +Enhancement: + +- Drop Python 3.7 support +- Add support for Django 4.2 +- Drop support for Django 4.0 +- Drop support for PyPy + # 5.0.0 Enhancement: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/README.md new/django-ipware-5.0.1/README.md --- old/django-ipware-5.0.0/README.md 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/README.md 2023-10-03 02:46:28.000000000 +0200 @@ -1,4 +1,13 @@ -# Django IPware (Read [Notice](README.md#Notice)) +# Django IPware +## Deprecated + +This package is no longer maintained. Please use [python-ipware](https://github.com/un33k/python-ipware) instead. + +`python-ipware` is a newer package, with more advanced features. While this a Django specific package, `python-ipware` can be used with Django, Flask, etc. + +While this package is no longer maintained, it will continue to work as is. If you are using this package, you are encouraged to migrate to `python-ipware` as soon as possible. + +===================================================================================== **A Django application to retrieve client's IP address** @@ -10,6 +19,10 @@ **Best attempt** to get client's IP address while keeping it **DRY**. +# Alternative package + +If you prefer a python version, you can use the [python-ipware](https://github.com/un33k/python-ipware) package instead. `python-ipware` is a newer package, with more advanced features. While this a Django specific package, `python-ipware` can be used with Django, Flask, etc. + # Notice There is no perfect `out-of-the-box` solution against fake IP addresses, aka `IP Address Spoofing`. @@ -119,13 +132,13 @@ '233.', '234.', '235.', '236.', '237.', '238.', '239.', # multicast '240.', '241.', '242.', '243.', '244.', '245.', '246.', '247.', '248.', '249.', '250.', '251.', '252.', '253.', '254.', '255.', # reserved - ) + ( '::', # Unspecified address - '::ffff:', '2001:10:', '2001:20:' # messages to software + '::ffff:', '2001:10:', '2001:20:', # messages to software '2001::', # TEREDO '2001:2::', # benchmarking '2001:db8:', # reserved for documentation and example code - 'fc00:', # IPv6 private block + 'fc', # IPv6 ULA (RFC4193) - NOTE: Reserved for future use, not currently in widespread use. + 'fd', # IPv6 ULA (RFC4193) - Mainly used for private network addressing 'fe80:', # link-local unicast 'ff00:', # IPv6 multicast ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/__version__.py new/django-ipware-5.0.1/ipware/__version__.py --- old/django-ipware-5.0.0/ipware/__version__.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/__version__.py 2023-10-03 02:46:28.000000000 +0200 @@ -5,4 +5,4 @@ __url__ = 'https://github.com/un33k/django-ipware' __license__ = 'MIT' __copyright__ = 'Copyright 2020 Val Neekman @ Neekware Inc.' -__version__ = '5.0.0' +__version__ = '5.0.1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/defaults.py new/django-ipware-5.0.1/ipware/defaults.py --- old/django-ipware-5.0.0/ipware/defaults.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/defaults.py 2023-10-03 02:46:28.000000000 +0200 @@ -1,6 +1,5 @@ from django.conf import settings - # Search for the real IP address in the following order # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For # X-Forwarded-For: <client>, <proxy1>, <proxy2> @@ -15,6 +14,7 @@ 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'HTTP_VIA', + 'HTTP_X_CLIENT_IP', 'REMOTE_ADDR', ) ) @@ -58,13 +58,13 @@ '233.', '234.', '235.', '236.', '237.', '238.', '239.', # multicast '240.', '241.', '242.', '243.', '244.', '245.', '246.', '247.', '248.', '249.', '250.', '251.', '252.', '253.', '254.', '255.', # reserved - ) + ( '::', # Unspecified address - '::ffff:', '2001:10:', '2001:20:' # messages to software + '::ffff:', '2001:10:', '2001:20:', # messages to software '2001::', # TEREDO '2001:2::', # benchmarking '2001:db8:', # reserved for documentation and example code - 'fc00:', # IPv6 private block + 'fc', # IPv6 ULA (RFC4193) - NOTE: Reserved for future use, not currently in widespread use. + 'fd', # IPv6 ULA (RFC4193) - Mainly used for private network addressing 'fe80:', # link-local unicast 'ff00:', # IPv6 multicast ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/ip.py new/django-ipware-5.0.1/ipware/ip.py --- old/django-ipware-5.0.0/ipware/ip.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/ip.py 2023-10-03 02:46:28.000000000 +0200 @@ -1,5 +1,5 @@ -from . import utils as util from . import defaults as defs +from . import utils as util def get_client_ip( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/tests/tests_common.py new/django-ipware-5.0.1/ipware/tests/tests_common.py --- old/django-ipware-5.0.0/ipware/tests/tests_common.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/tests/tests_common.py 2023-10-03 02:46:28.000000000 +0200 @@ -2,6 +2,7 @@ from django.http import HttpRequest from django.test import TestCase + from .. import utils as util @@ -80,3 +81,16 @@ ip = '74dc::02ba' result = util.get_ip_info(ip) self.assertTrue(result, (ip, True)) + + def test_is_ipv6_private_block(self): + ip = 'fc00::1' + self.assertTrue(util.is_private_ip(ip)) + + ip = 'fd00::1' + self.assertTrue(util.is_private_ip(ip)) + + # Test an address that is outside the fc00::/7 private block range + ip = 'fb00::1' + self.assertFalse(util.is_private_ip(ip)) + ip = 'fe00::1' + self.assertFalse(util.is_private_ip(ip)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/tests/tests_ipv4.py new/django-ipware-5.0.1/ipware/tests/tests_ipv4.py --- old/django-ipware-5.0.0/ipware/tests/tests_ipv4.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/tests/tests_ipv4.py 2023-10-03 02:46:28.000000000 +0200 @@ -2,6 +2,7 @@ from django.http import HttpRequest from django.test import TestCase + from ipware import get_client_ip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/tests/tests_ipv6.py new/django-ipware-5.0.1/ipware/tests/tests_ipv6.py --- old/django-ipware-5.0.0/ipware/tests/tests_ipv6.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/tests/tests_ipv6.py 2023-10-03 02:46:28.000000000 +0200 @@ -2,6 +2,7 @@ from django.http import HttpRequest from django.test import TestCase + from ipware import get_client_ip @@ -189,4 +190,4 @@ 'HTTP_X_FORWARDED_FOR': '::ffff:177.139.233.139', } result = get_client_ip(request) - self.assertEqual(result, ('177.139.233.139', True)) \ No newline at end of file + self.assertEqual(result, ('177.139.233.139', True)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/ipware/utils.py new/django-ipware-5.0.1/ipware/utils.py --- old/django-ipware-5.0.0/ipware/utils.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/ipware/utils.py 2023-10-03 02:46:28.000000000 +0200 @@ -91,9 +91,8 @@ ip_list.append(clean_ip) ip_count = len(ip_list) - if ip_count > 0: - if is_valid_ip(ip_list[0]) and is_valid_ip(ip_list[-1]): - return ip_list, ip_count + if ip_count > 0 and is_valid_ip(ip_list[0]) and is_valid_ip(ip_list[-1]): + return ip_list, ip_count return [], 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/pyproject.toml new/django-ipware-5.0.1/pyproject.toml --- old/django-ipware-5.0.0/pyproject.toml 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/pyproject.toml 2023-10-03 02:46:28.000000000 +0200 @@ -4,3 +4,34 @@ "wheel" ] build-backend = "setuptools.build_meta" + +[tool.ruff] +select = [ + "B", + "C4", + "C9", + "DJ", + "E", + "EM", + "F", + "I", + "N", + "PGH", + "PLC", + "PLE", + "PLW", + "RSE", + "RET", + "RUF", + "SLF", + "SIM", + "TCH", + "TID", + "W", +] +ignore = ["PGH004", "TID252"] +line-length = 107 +target-version = "py311" + +[tool.ruff.mccabe] +max-complexity = 16 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/requirement-dev.txt new/django-ipware-5.0.1/requirement-dev.txt --- old/django-ipware-5.0.0/requirement-dev.txt 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/requirement-dev.txt 2023-10-03 02:46:28.000000000 +0200 @@ -1,4 +1,4 @@ -Django==4.0 -pycodestyle==2.7.0 -flake8==3.9.2 -twine==3.4.2 +Django==4.2.4 +pycodestyle==2.11.0 +flake8==6.1.0 +twine==4.0.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-ipware-5.0.0/setup.py new/django-ipware-5.0.1/setup.py --- old/django-ipware-5.0.0/setup.py 2023-03-05 15:20:24.000000000 +0100 +++ new/django-ipware-5.0.1/setup.py 2023-10-03 02:46:28.000000000 +0200 @@ -2,14 +2,13 @@ # Learn more: https://github.com/un33k/setup.py import os import sys - from codecs import open from shutil import rmtree -from setuptools import setup +from setuptools import setup package = 'ipware' -python_requires = ">=3.7" +python_requires = ">=3.8" here = os.path.abspath(os.path.dirname(__file__)) requires = [] @@ -70,7 +69,6 @@ 'License :: OSI Approved :: MIT License', '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',