Commit Graph

10 Commits

Author SHA1 Message Date
Abhinav Singh a51ddaae41
Add clarity on how `HttpParser` class works (#1466)
* Add clarity on how `HttpParser` class works

* `"python.analysis.autoImportCompletions": true`
2024-08-27 21:33:53 +05:30
Abhinav Singh 380e0cc3ce
Catch `KeyError` within Threadless executors (#1396) 2024-04-23 18:51:53 +05:30
Abhinav Singh c24862ba85
Ability to override `--data-dir` for scenarios when `proxy.py` is running as a user with no home directory (#1389)
* Ability to override `--data-dir` for scenarios when `proxy.py` is running as a user with no home directory

* Single quotes

* Update expected tar.gz name and Default to `ms-python.black-formatter` in vscode settings

* Fix tests for Python 3.6 and 3.7

* Updated README
2024-04-18 09:04:07 +05:30
Abhinav Singh ddc96d4c09
Update project test dependencies to ensure green workflow (#1371)
* Use www.google.com for http2 tests

* Update README.md

Add missing tutorial's link

(cherry picked from commit e459f932cd)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* System packages for readthedocs

* Pin pyyaml, see https://github.com/yaml/pyyaml/issues/724\#issuecomment-1638587228

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Ignore flake8 S507

* precommit `pyyaml==5.3.1`

* follow https://github.com/yaml/pyyaml/issues/724

* pin to essentials_openapi==0.1.4 for blacksheep

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Remove blacksheep dep

* remove system_packages

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Check if tox upgrade helps with `ERROR: FAIL could not package project ` tox related issues

* Fix links

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Use `importlib.metadata` instead of `pkg_resources`

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Just remove link from plugin docstring for now

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* pin `sphinxcontrib-applehelp==1.0.2` which is breaking spellcheck

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Pin `sphinxcontrib-*`

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* pin `towncrier` too

* add kwargs as a spelling

* `_get_dist` backward compatible with 3.6

* Use `httpbingo.org` instead of `httpbin.org` in tests making network requests

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Use `httpbingo` for reverse proxy plugin too which is tested in workflows

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* `importlib-metadata; python_version <= 3.7`

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Integration test changes due to usage of httpbingo instead of httpbin

* `importlib-metadata; python_version <= 3.7` moved to build essentials and bypass reverse proxy integration test result verification for now

* Filter and ignore `DeprecationWarning` to make it work on 3.7

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* with deprecation ignore we dont need `importlib-metadata`

---------

Co-authored-by: Wermeille Bastien <bastien.wermeille@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-04-11 13:04:10 +05:30
Abhinav Singh 82be14ef13
Remove menubar (#930)
Remove `menubar`
2022-01-01 12:36:27 +05:30
Abhinav Singh 44d72431e3
Async `get_events`, `handle_event`, `handle_readables`, `handle_writables` (#769)
* Asynchronous `handle_event` and `LocalExecutor` thread

* Bail out on first task completion

* mypy

* Add `helper/benchmark.sh` and fix threaded which must now use asyncio (reduced performance of threaded)

* Print open file diff from `benchmark.sh`

* Add `--local-executor` flag, disabled by default for now until tests are updated

* Async `handle_readables` and `handle_writables` for `HttpProtocolHandlerPlugin` interface (doesnt impact proxy/web plugins for now)

* Async `get_events`

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Address tests after async changes

* mypy and flake8

* spelldoc

* `check.py` and trailing comma

* Rename to `_assertions.py`

* Add missing `pytest-mock` and `pytest-asyncio` deps

* Add `pytest-mock` to `pylint` deps

* Correct use of `parameterize` and add `PT007` to flake8 ignores

* Fix mypy hints broken for `< Python3.9`

* Remove usage of `asynccontextmanager` which is not available for all Python versions that `proxy.py` supports

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix for pre-python-3.9 versions

* `AsyncTask` apis `set_name` and `get_name` are not available on all supported versions

* Install setuptools via `lib-dep` until we recommend editable install

* Deprecate support for `Python 3.6`

* Use recommendation suggested here https://github.com/abhinavsingh/proxy.py/pull/769\#discussion_r753840929

* Address recommendation here https://github.com/abhinavsingh/proxy.py/pull/769\#discussion_r753841906

* Make `Threadless` agnostic of `multiprocessing.Process`

* Acceptors must dispatch to local executor in non-blocking fashion

* No daemon for executor processes and fix shutdown logic

* Only return fds from `_selected_events` not all events data

* Refactor logic

* Prefix private methods with `_`

* `work_queue` and not `client_queue`

* Turn `Threadless` into an abstract executor. Introduce `RemoteExecutor`

* Make `LocalExecutor` agnostic of `threading.Thread`

* `LocalExecutor` now implements `Threadless`

* `get_events` and `get_descriptors` now must return int and not sock.  `Threadless` now avoids repeated register/unregister and instead make use of `selectors.modify`

* Fix `main` tests

* Apply suggestions from code review

Co-authored-by: Sviatoslav Sydorenko <wk@sydorenko.org.ua>

* Apply code review recommendations manually

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Revert back `Any` and use `addr or None`

* Address `flake8`

* Update tests to use `fileno`

* Fix doc build

* Fix doc spell, use tear down and not teardown

* Doc updates

* Add back support for `Python 3.6`

* Acceptors dont need loop initialization

* On Python 3.6 `asyncio.new_event_loop()` is necessary

* Make doc happy

* `--threaded` needs a new event loop for 3.7 too

* Always use `asyncio.new_event_loop()` for threaded mode

Added e2e integration tests (subprocess & curl) for all modes.

* Lint fixes

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Sviatoslav Sydorenko <wk@sydorenko.org.ua>
2021-11-23 15:02:00 +05:30
Abhinav Singh 8fdddfd199
Acceptors performance (#767)
* Use threads for delegation. Now `run_once` lock before `accept` not `select`

* Add support to use master proxy within proxy pool plugin.  When used, proxy pool plugin will be a no-op for the master node

* Fix acceptor tests now that mask is being used

* Use `cached_property` for web server routes

* Use `select(timeout=1)` otherwise acceptor wont join if total blocking

* mypy, flake, doc spell fixes

* R0205: Class `cached_property` inherits from object, can be safely removed from bases in python3 (useless-object-inheritance)
2021-11-20 19:42:38 +05:30
Abhinav Singh 852924e901
Single workflow (#765)
* To optimize pull all workflows within check guard

* give space between version and to

* Move all other workflow under `other-checks` guard

* Dont run brew/dashboard/docker until lib checks have passed

* Additional check bridging slows it down

* Name diff via emoji

* More emojis

* 🐳

* Per GitHub it will try to maximize, lets fallback to GHA behavior

* False position (not indented)

* Remove tagline from readme, its in hero image now
2021-11-20 04:56:21 +05:30
Abhinav Singh c59e8f8a14
Run push workflow only for push to master and develop branch (#764)
* Run push workflow only for push to master and develop branch

* remove comments from `settings.json`
2021-11-20 03:38:26 +05:30
Abhinav Singh 5eb4fa4acd
Add `.vscode` settings (#761) 2021-11-20 01:25:05 +05:30