Sync from SUSE:SLFO:Main python-proxy.py revision 36eb53e4129abe213cd8a746f068eb48

This commit is contained in:
Adrian Schröter 2024-05-03 21:58:06 +02:00
commit e211a21e57
5 changed files with 548 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

BIN
proxy.py-2.4.3-gh.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

255
proxy.py-command.patch Normal file
View File

@ -0,0 +1,255 @@
Index: proxy.py-2.4.3/README.md
===================================================================
--- proxy.py-2.4.3.orig/README.md
+++ proxy.py-2.4.3/README.md
@@ -370,14 +370,14 @@ Updated formulae for `HomeBrew` are main
## From command line when installed using PIP
When `proxy.py` is installed using `pip`,
-an executable named `proxy` is placed under your `$PATH`.
+an executable named `proxy-py` is placed under your `$PATH`.
### Run it
-Simply type `proxy` on command line to start with default configuration.
+Simply type `proxy-py` on command line to start with default configuration.
```console
- proxy
+ proxy-py
...[redacted]... - Loaded plugin proxy.http.proxy.HttpProxyPlugin
...[redacted]... - Started 8 threadless workers
...[redacted]... - Started 8 acceptors
@@ -417,7 +417,7 @@ All the logs above are `INFO` level logs
Lets start `proxy.py` with `DEBUG` level logging:
```console
- proxy --log-level d
+ proxy-py --log-level d
...[redacted]... - Open file descriptor soft limit set to 1024
...[redacted]... - Loaded plugin proxy.http_proxy.HttpProxyPlugin
...[redacted]... - Started 8 workers
@@ -442,7 +442,7 @@ See [flags](#flags) for full list of ava
## From command line using repo source
If you are trying to run `proxy.py` from source code,
-there is no binary file named `proxy` in the source code.
+there is no binary file named `proxy-py` in the source code.
To start `proxy.py` from source code follow these instructions:
@@ -526,7 +526,7 @@ Add support for short links in your favo
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ShortLinkPlugin
```
@@ -555,7 +555,7 @@ Modifies POST request body before sendin
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ModifyPostDataPlugin
```
@@ -609,7 +609,7 @@ without need of an actual upstream REST
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ProposedRestApiPlugin
```
@@ -640,7 +640,7 @@ also running on `8899` port.
Start `proxy.py` and enable inbuilt web server:
```console
- proxy \
+ proxy-py \
--enable-web-server \
--plugins proxy.plugin.RedirectToCustomServerPlugin
```
@@ -674,7 +674,7 @@ By default, plugin drops traffic for `fa
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.FilterByUpstreamHostPlugin
```
@@ -707,7 +707,7 @@ Caches Upstream Server Responses.
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.CacheResponsesPlugin
```
@@ -785,7 +785,7 @@ Modifies upstream server responses.
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ManInTheMiddlePlugin
```
@@ -810,18 +810,18 @@ Let's start 2 upstream proxies first. T
start `proxy.py` on port `9000` and `9001`
```console
- proxy --port 9000
+ proxy-py --port 9000
```
```console
- proxy --port 9001
+ proxy-py --port 9001
```
Now, start `proxy.py` with `ProxyPoolPlugin` (on default `8899` port),
pointing to our upstream proxies at `9000` and `9001` port.
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ProxyPoolPlugin \
--proxy-pool localhost:9000 \
--proxy-pool localhost:9001
@@ -846,7 +846,7 @@ plugin blocks traffic from `127.0.0.1` a
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.FilterByClientIpPlugin
```
@@ -871,7 +871,7 @@ This plugin demonstrate how to modify ch
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ModifyChunkResponsePlugin
```
@@ -903,7 +903,7 @@ does not provide that yet, so we use a d
Now start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.CloudflareDnsResolverPlugin
```
@@ -919,7 +919,7 @@ to your taste. Example, query your cust
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.CustomDnsResolverPlugin
```
@@ -941,7 +941,7 @@ If identified, client IP in the access l
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.ProgramNamePlugin
```
@@ -970,7 +970,7 @@ Demonstrates inbuilt web server routing
Start `proxy.py` as:
```console
- proxy --enable-web-server \
+ proxy-py --enable-web-server \
--plugins proxy.plugin.WebServerPlugin
```
@@ -989,7 +989,7 @@ Extends in-built Web Server to add Rever
Start `proxy.py` as:
```console
- proxy --enable-reverse-proxy \
+ proxy-py --enable-reverse-proxy \
--plugins proxy.plugin.ReverseProxyPlugin
```
@@ -1046,7 +1046,7 @@ make https-certificates
Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--cert-file https-cert.pem \
--key-file https-key.pem
```
@@ -1095,7 +1095,7 @@ Lets also enable `CacheResponsePlugin` s
response from the server. Start `proxy.py` as:
```console
- proxy \
+ proxy-py \
--plugins proxy.plugin.CacheResponsesPlugin \
--ca-key-file ca-key.pem \
--ca-cert-file ca-cert.pem \
@@ -1297,7 +1297,7 @@ Start `proxy.py` as:
```console
# On localhost
- proxy --enable-tunnel \
+ proxy-py --enable-tunnel \
--tunnel-username username \
--tunnel-hostname ip.address.or.domain.name \
--tunnel-port 22 \
@@ -1757,7 +1757,7 @@ Also build the embedded `Chrome DevTools
Now start `proxy.py` with dashboard plugin and by overriding root directory for static server:
```console
- proxy --enable-dashboard --static-server-dir dashboard/public
+ proxy-py --enable-dashboard --static-server-dir dashboard/public
...[redacted]... - Loaded plugin proxy.http.server.HttpWebServerPlugin
...[redacted]... - Loaded plugin proxy.dashboard.dashboard.ProxyDashboard
...[redacted]... - Loaded plugin proxy.dashboard.inspect_traffic.InspectTrafficPlugin
@@ -1794,7 +1794,7 @@ For scenarios where you want direct acce
start `proxy.py` as:
```console
- proxy --enable-devtools --enable-events
+ proxy-py --enable-devtools --enable-events
```
Now point your CDT instance to `ws://localhost:8899/devtools`.
@@ -2278,7 +2278,7 @@ To run standalone benchmark for `proxy.p
# Flags
```console
- proxy -h
+ proxy-py -h
usage: -m [-h] [--tunnel-hostname TUNNEL_HOSTNAME] [--tunnel-port TUNNEL_PORT]
[--tunnel-username TUNNEL_USERNAME]
[--tunnel-ssh-key TUNNEL_SSH_KEY]
Index: proxy.py-2.4.3/setup.cfg
===================================================================
--- proxy.py-2.4.3.orig/setup.cfg
+++ proxy.py-2.4.3/setup.cfg
@@ -109,7 +109,7 @@ install_requires =
[options.entry_points]
console_scripts =
- proxy = proxy:entry_point
+ proxy-py = proxy:entry_point
[options.package_data]
proxy =

185
python-proxy.py.changes Normal file
View File

@ -0,0 +1,185 @@
-------------------------------------------------------------------
Fri May 5 08:59:59 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
- Update to 2.4.3:
* v2.4.2 by @abhinavsingh in #1158
* pip prod(deps): bump blacksheep from 1.2.2 to 1.2.7 by @dependabot in #1161
* Bump fregante/setup-git-user from 1.0.1 to 1.1.0 by @dependabot in #1160
* npm: bump ts-node from 10.7.0 to 10.8.0 in /dashboard by @dependabot in #1159
* npm: bump ws from 8.5.0 to 8.6.0 in /dashboard by @dependabot in #1165
* pip prod(deps): bump pytest from 6.2.5 to 7.0.1 by @dependabot in #1164
* pip prod(deps): bump rope from 0.22.0 to 1.1.1 by @dependabot in #1167
* pip prod(deps): bump starlette from 0.17.1 to 0.19.1 by @dependabot in #1168
* pip prod(deps): bump mypy from 0.940 to 0.960 by @dependabot in #1170
* Bump actions/cache from 3.0.2 to 3.0.4 by @dependabot in #1185
* Bump actions/setup-python from 3 to 4 by @dependabot in #1186
* pip prod(deps): bump py-spy from 0.3.11 to 0.3.12 by @dependabot in #1174
* pip prod(deps): bump mypy from 0.960 to 0.961 by @dependabot in #1187
* Add support for dynamic reverse proxy routing by @abhinavsingh in #1180
* [v2.4.3] Support for dynamic reverse proxy routes by @abhinavsingh in #1188
- 2.4.2:
* Bump actions/setup-python from 2 to 3 by @dependabot in #1110
* npm: bump chrome-devtools-frontend from 1.0.956881 to 1.0.980332 in /dashboard by @dependabot in #1109
* pip prod(deps): bump mypy from 0.931 to 0.940 by @dependabot in #1111
* pip prod(deps): bump furo from 2022.1.2 to 2022.3.4 by @dependabot in #1113
* Fix Towncrier link by @abhinavsingh in #1119
* Bump actions/cache from 2.1.7 to 3.0.1 by @dependabot in #1118
* pip prod(deps): bump paramiko from 2.9.2 to 2.10.3 by @dependabot in #1116
* npm: bump @types/jquery from 3.5.13 to 3.5.14 in /dashboard by @dependabot in #1115
* Bump ncipollo/release-action from 1.9.0 to 1.10.0 by @dependabot in #1120
* Bump actions/upload-artifact from 2 to 3 by @dependabot in #1124
* npm: bump async from 2.6.3 to 2.6.4 in /dashboard by @dependabot in #1125
* Fix myst_parser config by @abhinavsingh in #1128
* [FilterByClientIpPlugin] Implement the whitelist logic by @LetMeR00t in #1127
* Bump actions/cache from 3.0.1 to 3.0.2 by @dependabot in #1126
* npm: bump jasmine from 4.0.0 to 4.0.2 in /dashboard by @dependabot in #1122
* Bump actions/download-artifact from 2 to 3 by @dependabot in #1133
* pip prod(deps): bump pylint from 2.12.2 to 2.13.7 by @dependabot in #1129
* npm: bump ws from 8.4.2 to 8.5.0 in /dashboard by @dependabot in #1134
* Bump codecov/codecov-action from 2 to 3 by @dependabot in #1137
* npm: bump ts-node from 7.0.1 to 10.7.0 in /dashboard by @dependabot in #1136
* npm: bump @types/js-cookie from 3.0.1 to 3.0.2 in /dashboard by @dependabot in #1138
* Bump github/codeql-action from 1 to 2 by @dependabot in #1140
* npm: bump eslint-plugin-import from 2.25.4 to 2.26.0 in /dashboard by @dependabot in #1139
* Upgrade paramiko to avoid blowfish ciphers by @abhinavsingh in #1149
* Bump docker/login-action from 1 to 2 by @dependabot in #1144
* Bump docker/setup-buildx-action from 1 to 2 by @dependabot in #1151
* npm: bump jasmine and @types/jasmine in /dashboard by @dependabot in #1150
* pip prod(deps): bump furo from 2022.3.4 to 2022.4.7 by @dependabot in #1143
* npm: bump http-server from 14.0.0 to 14.1.0 in /dashboard by @dependabot in #1153
* pip prod(deps): bump tox from 3.24.5 to 3.25.0 by @dependabot in #1152
* pip prod(deps): bump httpx from 0.21.3 to 0.22.0 by @dependabot in #1157
* v2.4.2 (#1158) by @abhinavsingh in #1162
- 2.4.1:
* Register for signals only when running in main thread by @abhinavsingh in #1087
* npm: bump follow-redirects from 1.11.0 to 1.14.8 in /dashboard by @dependabot in #1090
* v2.4.1 by @abhinavsingh in #1092
* Pin myst-parser to avoid CI break by @abhinavsingh in #1104
* Bump actions/setup-node from 2 to 3 by @dependabot in #1097
* Bump actions/checkout from 2 to 3 by @dependabot in #1106
* pip prod(deps): bump types-setuptools from 57.4.7 to 57.4.10 by @dependabot in #1105
* Upgrade wemake-python-styleguide by @abhinavsingh in #1107
- 2.4.0:
* Add proxy auth test coverage by @abhinavsingh in #496
* Update tox to 3.21.4 by @pyup-bot in #497
* Update autopep8 to 1.5.5 by @pyup-bot in #499
* Update pylint to 2.6.2 by @pyup-bot in #501
* Fix mypy errors by @abhinavsingh in #504
* Update tox to 3.22.0 by @pyup-bot in #502
* Update mypy to 0.812 by @pyup-bot in #503
* Update pylint to 2.7.1 by @pyup-bot in #506
* Update coverage to 5.5 by @pyup-bot in #508
* Update pylint to 2.7.2 by @pyup-bot in #509
* Update tox to 3.23.0 by @pyup-bot in #510
* Update twine to 3.4.1 by @pyup-bot in #517
* Update flake8 to 3.9.0 by @pyup-bot in #514
* Update autopep8 to 1.5.6 by @pyup-bot in #516
* Update py-spy to 0.3.5 by @pyup-bot in #522
* chore: Refactor code quality issues by @akshgpt7 in #523
* Update pylint to 2.7.3 by @pyup-bot in #524
* Bump y18n from 3.2.1 to 3.2.2 in /dashboard by @dependabot in #526
* Update pylint to 2.7.4 by @pyup-bot in #527
* Move wheel package to testing by @abhinavsingh in #531
* Update pytest to 6.2.3 by @pyup-bot in #532
* Update flake8 to 3.9.1 by @pyup-bot in #538
* Update rope to 0.19.0 by @pyup-bot in #539
* Update pylint to 2.8.0 by @pyup-bot in #540
* Update pylint to 2.8.1 by @pyup-bot in #541
* Update pylint to 2.8.2 by @pyup-bot in #542
* Update autopep8 to 1.5.7 by @pyup-bot in #543
* Update typing-extensions to 3.10.0.0 by @pyup-bot in #544
* Update pytest to 6.2.4 by @pyup-bot in #545
* Update tox to 3.23.1 by @pyup-bot in #546
* Update py-spy to 0.3.6 by @pyup-bot in #547
* Update flake8 to 3.9.2 by @pyup-bot in #549
* Bump hosted-git-info from 2.8.5 to 2.8.9 in /dashboard by @dependabot in #548
* Bump lodash from 4.17.19 to 4.17.21 in /dashboard by @dependabot in #550
* Update pytest-cov to 2.12.0 by @pyup-bot in #552
* Update py-spy to 0.3.7 by @pyup-bot in #555
* Bump ws from 7.4.0 to 7.4.6 in /dashboard by @dependabot in #556
* Update pylint to 2.8.3 by @pyup-bot in #558
* Update pytest-cov to 2.12.1 by @pyup-bot in #561
* Bump glob-parent from 5.1.1 to 5.1.2 in /dashboard by @dependabot in #564
* Update pylint to 2.9.3 by @pyup-bot in #573
* Update tox to 3.24.0 by @pyup-bot in #575
* Update twine to 3.4.2 by @pyup-bot in #576
* Update pylint to 2.9.5 by @pyup-bot in #577
* Update wheel to 0.37.0 by @pyup-bot in #585
* Update codecov to 2.1.12 by @pyup-bot in #582
* Update typing-extensions to 3.10.0.2 by @pyup-bot in #599
* Update pytest to 6.2.5 by @pyup-bot in #598
* Update tox to 3.24.3 by @pyup-bot in #592
* Update pylint to 2.10.2 by @pyup-bot in #591
* Bump path-parse from 1.0.6 to 1.0.7 in /dashboard by @dependabot in #586
* Update py-spy to 0.3.9 by @pyup-bot in #604
* Update rope to 0.20.1 by @pyup-bot in #611
* Update pylint to 2.11.1 by @pyup-bot in #609
* Update tox to 3.24.4 by @pyup-bot in #607
* add paramiko types for mypy compliance by @abhinavsingh in #613
* Update py-spy to 0.3.10 by @pyup-bot in #616
* Update coverage to 6.0 by @pyup-bot in #618
* Update pytest-cov to 3.0.0 by @pyup-bot in #619
* Update types-paramiko to 2.7.1 by @pyup-bot in #620
* Update coverage to 6.0.1 by @pyup-bot in #623
* Update paramiko to 2.8.0 by @pyup-bot in #624
* Update coverage to 6.0.2 by @pyup-bot in #628
* Update types-paramiko to 2.7.2 by @pyup-bot in #629
* Update types-paramiko to 2.7.3 by @pyup-bot in #630
* Update rope to 0.21.0 by @pyup-bot in #631
* Update flake8 to 4.0.1 by @pyup-bot in #627
* Add support for 3.10 by @abhinavsingh in #637
* v3.4.0 by @abhinavsingh in #638
* Update autopep8 to 1.6.0 by @pyup-bot in #632
* Fix the typing_extensions runtime dependency version by @webknjaz in #641
* Update coverage to 6.1 by @pyup-bot in #640
* Fix path to dashboard.png by @abhinavsingh in #643
* [ImgBot] Optimize images by @imgbot in #644
* Update coverage to 6.1.1 by @pyup-bot in #646
* Async proxy pool, Event manager, Custom access log, Expose loop to plugins by @abhinavsingh in #645
* Add tox envs for building dists via PEP 517 by @webknjaz in #647
* Revert "Upgrade master to develop in setup.py" by @webknjaz in #650
* Add a no-op check job to GHA for branch protection by @webknjaz in #652
* Add a config for YAMLLint by @webknjaz in #653
* Add a config for flake8 by @webknjaz in #654
* Correct spelling mistakes caught by codespell by @webknjaz in #656
* Add a config for pylint by @webknjaz in #655
* Organize the linting setup around tox+pre-commit by @webknjaz in #657
* Make the YAML files follow consistent style by @webknjaz in #658
* Add autocancellation of the stale PR GHA jobs by @webknjaz in #663
* Update twine to 3.5.0 by @pyup-bot in #665
* Enable the add-trailing-comma pre-commit fixer by @webknjaz in #661
* Migrate the pytest invocation to tox by @webknjaz in #662
* Pre-install mypy deps in pre-commit.ci by @webknjaz in #666
* Fix the YTT201 flake8 violation by @webknjaz in #667
* Make names in the GHA lib workflow short by @webknjaz in #669
* Update outdated sections of the codebase by @abhinavsingh in #670
* Make pytest emit XML coverage by @webknjaz in #673
* CustomDnsResolver plugin, CloudflareDnsResolver plugin, Allow plugins to configure network interface by @abhinavsingh in #671
* Add tests for missing core modules by @abhinavsingh in #674
* Use core loop for reverse proxy async IO operations by @abhinavsingh in #675
* Collect coverage for tests/ by @webknjaz in #677
* Allow pylint to utilize all available CPU cores by @webknjaz in #676
* Add a config for Coverage.py by @webknjaz i...
-------------------------------------------------------------------
Fri Apr 21 12:29:55 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:43:22 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Mon Dec 13 17:33:03 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Don't use the same command name as conflicting libproxy:
Use `proxy-py` instead of `proxy`. (Cannot use `proxy.py` due to
import problems). Add proxy.py-command.patch
-------------------------------------------------------------------
Sat Dec 11 19:50:52 UTC 2021 - Ben Greiner <code@bnavigator.de>
- initial specfile for version 2.3.1
- required by aiohttp 3.8 testing

82
python-proxy.py.spec Normal file
View File

@ -0,0 +1,82 @@
#
# spec file for package python-proxy.py
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define skip_python2 1
%{?sle15_python_module_pythons}
Name: python-proxy.py
Version: 2.4.3
Release: 0
Summary: TLS interception capable proxy server
License: BSD-3-Clause
URL: https://github.com/abhinavsingh/proxy.py
# PyPI sdist does not have tests, use Github source
Source: https://github.com/abhinavsingh/proxy.py/archive/refs/tags/v%{version}.tar.gz#/proxy.py-%{version}-gh.tar.gz
# PATCH-FIX-OPENSUSE proxy.py-command.patch -- deconflict with libproxy, code@bnavigator.de
Patch0: proxy.py-command.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires(post): update-alternatives
Requires(postun):update-alternatives
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-cov}
BuildRequires: %{python_module pytest-mock}
BuildRequires: openssl
# /SECTION
%python_subpackages
%description
Fast, Lightweight, Pluggable, TLS interception capable proxy server
focused on Network monitoring, controls & Application development, testing, debugging.
Note: On SUSE distributions, the command is installed as proxy-py not as proxy.
%prep
%autosetup -p1 -n proxy.py-%{version}
%build
%pyproject_wheel
%install
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/proxy-py
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%pytest --ignore tests/http/proxy/test_http2.py --ignore tests/integration/test_integration.py
%post
%python_install_alternative proxy-py
%postun
%python_uninstall_alternative proxy-py
%files %{python_files}
%doc README.md
%license LICENSE
%python_alternative %{_bindir}/proxy-py
%{python_sitelib}/proxy
%{python_sitelib}/proxy.py-%{version}*-info
%changelog