Commit Graph
1424 Commits
Author SHA1 Message Date
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ee5f7fa109 build(deps-dev): bump coverage from 7.14.3 to 7.15.0 (#2831)
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.3 to 7.15.0.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.3...7.15.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 17:58:29 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
64a20be9a2 build(deps-dev): bump pytest-rerunfailures from 16.3 to 16.4 (#2829)
Bumps [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) from 16.3 to 16.4.
- [Changelog](https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst)
- [Commits](https://github.com/pytest-dev/pytest-rerunfailures/compare/16.3...16.4)

---
updated-dependencies:
- dependency-name: pytest-rerunfailures
  dependency-version: '16.4'
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-02 09:46:22 +02:00
fc5038bca8 fix: remove stray attribute from html tag in simple_report_pdf.tpl (#2806)
The opening <html> tag contains a malformed type="text/css" attribute
which makes the HTML invalid (leading > missing). In HTML5 the <html>
tag does not require any attributes.

Fixes the malformed HTML that appears in generated PDF reports.

Co-authored-by: yaqing <yyq1043-cloud@users.noreply.github.com>
2026-07-01 21:55:02 +02:00
SoxojandGitHub cfb28b492a Bump to 0.6.2 (#2827)
* Bump to 0.6.2

* Release process automation
2026-07-01 17:32:50 +02:00
SoxojandGitHub e023dd441a Fix site checks: 6 fixed, 5 disabled (#2826) 2026-07-01 14:36:57 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
62a61a0310 build(deps): bump python-bidi from 0.6.10 to 0.6.11 (#2825)
Bumps [python-bidi](https://github.com/MeirKriheli/python-bidi) from 0.6.10 to 0.6.11.
- [Release notes](https://github.com/MeirKriheli/python-bidi/releases)
- [Changelog](https://github.com/MeirKriheli/python-bidi/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/MeirKriheli/python-bidi/compare/v0.6.10...v0.6.11)

---
updated-dependencies:
- dependency-name: python-bidi
  dependency-version: 0.6.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 11:30:16 +02:00
jichaowang02-langandGitHub af253d7dc3 Make include-tag site filter case-insensitive (match exclude filter) (#2811)
In MaigretDatabase.ranked_sites_dict, the include (whitelist) tag filter
compared the site's raw tags against the lowercased query tags:

    is_tags_ok = lambda x: set(x.tags).intersection(set(normalized_tags))

while the exclude (blacklist) filter and every sibling lambda
(name/source/engine) lowercase the site-side value:

    is_excluded_by_tag = lambda x: set(map(str.lower, x.tags)).intersection(
        set(normalized_excluded_tags)
    )

So a site stored with an upper/mixed-case tag (e.g. a custom or submitted
site tagged 'US') was excluded by `--exclude-tags us` but NOT found by
`--tags us` — an asymmetry between the two filters. Lowercase the site
tags in the include filter too, matching the rest of the method.

Adds a regression test asserting tags=['us'] finds a site tagged 'US'.
2026-06-29 22:05:00 +02:00
SoxojandGitHub 7b08793e9d Added docs for Neo4j integration (#2818) 2026-06-29 22:04:25 +02:00
AliandGitHub e41c4d7ee3 Add Neo4j Cypher export (--neo4j) (#2774)
Serialize the maigret graph (the same one --graph builds) into an idempotent Cypher script importable into Neo4j. Reuses MaigretGraph via an extracted _build_maigret_graph() helper, leaving save_graph_report behavior unchanged; no new runtime dependency. Adds the --neo4j flag, the neo4j_report setting, docs, and a unit test.

Closes #2630
2026-06-29 15:41:57 +02:00
Sushanth012andGitHub 0a414c2e1c fix: preserve report error reasons (#2802) 2026-06-29 15:06:03 +02:00
jichaowang02-langandGitHub f8c35b09e3 Fix URLMatcher eating leading host chars (unescaped dots in prefix regex) (#2808)
URLMatcher._HTTP_URL_RE_STR was "^https?://(www.|m.)?(.+)$". The dots in
the optional (www.|m.)? subdomain-prefix group were unescaped, so each `.`
matched ANY character. For a host that simply starts with `m` or `www`
(not the literal `m.`/`www.` prefix), the group greedily ate the first
characters:

    extract_main_part('https://medium.com/alice')  -> 'dium.com/alice'
    extract_main_part('https://myspace.com/bob')   -> 'space.com/bob'

extract_main_part feeds make_profile_url_regexp / get_url_template, so the
generated site-detection regexp was corrupted too (medium.com -> dium.com),
and the loose prefix could match bogus hosts like `xmedium.com`. 170+ hosts
in resources/data.json start with `m`.

Fix: escape the dots with a raw string, r"^https?://(www\.|m\.)?(.+)$".
Genuine `m.`/`www.` prefixes are still stripped
(m.wikipedia.org -> wikipedia.org). The two existing tests that pinned the
unescaped pattern string are updated to the corrected form, and a
regression test covers hosts beginning with m/www.
2026-06-29 14:59:31 +02:00
jichaowang02-langandGitHub b0b5bf68d2 Compare raw error percentage against threshold (don't round first) (#2809)
extract_and_group stored the per-error-type percentage already rounded to
2 decimals, and is_important() compares that stored value against the
threshold. Rounding before the comparison can push a rate that is strictly
below the threshold up to it:

    8 Captcha errors / 267 sites = 2.99625%
    round(2.99625, 2) == 3.0  ->  is_important() True  ->  spurious
    'Too many errors of type "Captcha" (3.0%)' warning

This is the residual of the same class fixed in #2788 (scale-then-round):
scaling to a percentage first stopped 2.5% from becoming 3.0%, but rounding
the percentage still feeds the threshold check. The display sites already
round (round(e["perc"], 2)), so storing the raw percentage keeps the shown
values unchanged while making the threshold comparison exact.

Genuine at-or-above-threshold rates still fire (3/100 = 3.0%, DNS 10%).
Adds a regression test for the 2.996% -> 3.0% rounding-up case.
2026-06-28 20:14:51 +02:00
jichaowang02-langandGitHub ac25cd71bb Fix get_dict_ascii_tree ignoring new_line=False (#2805)
`get_dict_ascii_tree(items, prepend="", new_line=True)` immediately reassigned
`new_line` to the horizontal box-drawing glyph ("─"), shadowing the boolean
parameter. The trailing `if not new_line: text = text[1:]` — meant to strip the
leading newline — therefore tested a non-empty string (always truthy) and never
ran. Callers passing `new_line=False` (e.g. `maigret.py` printing a user's
identity data) got a stray leading blank line.

Rename the glyph local to `h_line` so the `new_line` parameter is preserved and
its strip takes effect. The tree drawing is unchanged.

Adds a regression test asserting `new_line=False` drops the leading newline
while keeping the rest of the tree identical.
2026-06-28 20:11:46 +02:00
ca6d7e474e Add archive.org and archive.is links to profile URL blocks (#2803)
Adds quick-access links to web archives (Wayback Machine and archive.is)
in profile URL report blocks, allowing users to see historical snapshots
of profile pages when they still exist but are no longer accessible.

Closes #247

Co-authored-by: yyq1043 <yyq1043@outlook.com>
2026-06-28 20:06:45 +02:00
SoxojandGitHub 24845091c8 Refactor sponsor section in README.md (#2799)
* Refactor sponsor section in README.md

* docs: update sponsor layout in Chinese README
2026-06-24 09:12:01 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9516d2b906 build(deps): update future requirement from >=0.18.3 to >=1.0.0 (#2792)
Updates the requirements on [future](https://github.com/PythonCharmers/python-future) to permit the latest version.
- [Release notes](https://github.com/PythonCharmers/python-future/releases)
- [Changelog](https://github.com/PythonCharmers/python-future/blob/master/docs/changelog.rst)
- [Commits](https://github.com/PythonCharmers/python-future/compare/v0.18.3...v1.0.0)

---
updated-dependencies:
- dependency-name: future
  dependency-version: 1.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 10:31:25 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
677f8e053a build(deps): update mock requirement from >=4.0.3 to >=5.2.0 (#2791)
Updates the requirements on [mock](https://github.com/testing-cabal/mock) to permit the latest version.
- [Changelog](https://github.com/testing-cabal/mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/testing-cabal/mock/compare/4.0.3...5.2.0)

---
updated-dependencies:
- dependency-name: mock
  dependency-version: 5.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 10:31:15 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b52eb529b2 build(deps): update requests-futures requirement from >=1.0.0 to >=1.0.2 (#2794)
Updates the requirements on [requests-futures](https://github.com/ross/requests-futures) to permit the latest version.
- [Changelog](https://github.com/ross/requests-futures/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ross/requests-futures/compare/v1.0.0...v1.0.2)

---
updated-dependencies:
- dependency-name: requests-futures
  dependency-version: 1.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 10:05:57 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
aa9acd9d38 build(deps-dev): bump coverage from 7.14.1 to 7.14.3 (#2798)
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.1 to 7.14.3.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.1...7.14.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.14.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 10:05:48 +02:00
296daa0f24 refactor: drop dead 'if not dictionary' guards across report paths (#2796)
Closes #2665.

Every site results entry flows through make_site_result (checking.py:788),
which initializes results_site = {} and then unconditionally populates it
(site/username/keywords/parsing_enabled/url_main/cookies up front, checker
at the end, plus status or url_user+future on every branch). It has no
return path that yields an empty dict. check_site_for_username wraps that
result and likewise never returns a falsy entry, and maigret.py does not
construct site-result dicts by hand.

So the four downstream 'if not dictionary: continue' guards (all tagged
'# TODO: fix no site data issue') were dead code — the entries they
guarded against cannot occur. Removed:

  - maigret/maigret.py:101  (extract_ids_from_results)
  - maigret/report.py:151   — 'if not dictionary or dictionary.get("is_similar")'
                              trimmed to just the is_similar check (real logic)
  - maigret/report.py:467  (extended-report builder)
  - maigret/report.py:609  (generate_txt_report)
  - maigret/report.py:627  — 'if not site_result or not site_result.get("status")'
                              trimmed to just the status check (real logic)
  - maigret/report.py:687 (generate_json_report)

plus the four '# TODO: fix no site data issue' comments.

No behavior change for well-formed inputs; downstream .get() calls are
safe because entries are always populated dicts. 292 tests pass.

Co-authored-by: aznikline <aznikline@users.noreply.github.com>
2026-06-23 10:05:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cbb02fb658 build(deps): update chardet requirement from >=5.0.0 to >=7.4.3 (#2797)
Updates the requirements on [chardet](https://github.com/chardet/chardet) to permit the latest version.
- [Release notes](https://github.com/chardet/chardet/releases)
- [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst)
- [Commits](https://github.com/chardet/chardet/compare/5.0.0...7.4.3)

---
updated-dependencies:
- dependency-name: chardet
  dependency-version: 7.4.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-23 09:55:42 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9dfeff2d04 build(deps): update stem requirement from >=1.8.1 to >=1.8.2 (#2790)
Updates the requirements on [stem](https://github.com/torproject/stem) to permit the latest version.
- [Release notes](https://github.com/torproject/stem/releases)
- [Commits](https://github.com/torproject/stem/compare/1.8.1...1.8.2)

---
updated-dependencies:
- dependency-name: stem
  dependency-version: 1.8.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 19:22:48 +02:00
e90ca42aac test: cover #2666 TODO-test paths (cookie_jar forwarding, extract_ids_from_results) (#2795)
Closes #2666.

Issue #2666 tracked four paths flagged `# TODO: tests`. Two of them
(`executors.py` increment_progress / stop_progress) were removed by the
#2789 refactor and no longer exist. This PR covers the two that remain:

1. maigret/checking.py:247 — the ClientSession cookie_jar forwarding.
   SimpleAiohttpChecker.check() builds ClientSession(cookie_jar=self.cookie_jar
   if self.cookie_jar else None), but nothing asserted the jar handed to the
   checker actually reached the outgoing session. Added two tests using the
   existing constructor-capture pattern (_capture_clientsession): one asserts
   a configured jar is forwarded verbatim, the other asserts None is passed
   when no jar is configured (the else branch).

2. maigret/maigret.py:946 — extract_ids_from_results. The pre-existing
   test_extract_ids_from_results was a bare expression with no `assert` (so
   it silently passed regardless of return value) AND pinned its expectation
   against test_db (tests/db.json), whose site set never matched the Reddit
   URL and silently dropped the ids_links result. Fixed: real assertion against
   default_db, plus three branch tests (cross-site username merge, empty-site
   skip, empty input).

No new dependencies: aioresponses was suggested in the issue but is not in
the project — the existing monkeypatch capture pattern fits the codebase
better and adds zero deps.

Removed both `# TODO: tests` comments from the now-covered lines.

Co-authored-by: aznikline <aznikline@users.noreply.github.com>
2026-06-22 19:22:37 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
468d448684 build(deps-dev): bump pytest from 9.1.0 to 9.1.1 (#2793)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/9.1.0...9.1.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 19:21:50 +02:00
SoxojandGitHub 3eaec01523 Code cleanup and refactoring after ponytail audit (#2789) 2026-06-21 12:51:01 +02:00
jichaowang02-langandGitHub 7936ce267f Fix error-percentage rounding tripping thresholds at whole-percent granularity (#2788)
`extract_and_group` computed the per-error-type percentage as
`round(count / len(search_res), 2) * 100` — it rounded the *fraction* to 2
decimals (i.e. to the nearest 1%) and only then scaled by 100, so `perc`
always had whole-percent granularity and was mis-rounded.

A genuine 2.5% error rate (1 error out of 40 sites) became
`round(0.025, 2) * 100 = 3.0%` and tripped the 3% "important" threshold in
`is_important()`, firing a spurious "Too many errors of type ..." warning.
Likewise 9.5% DNS errors rounded to 10.0% and crossed the DNS override.

Scale to a percentage *before* rounding: `round(count / len(search_res) * 100, 2)`.
The existing tests use integer-landing ratios (25/100, 5/100, 3/100) that are
identical under both formulas, so none of them change.

Adds a regression test for a sub-threshold non-integer rate (2.5%) staying silent.
2026-06-21 12:50:27 +02:00
df084d8ac4 Updated site list and statistics (#2787)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-06-21 01:53:11 +02:00
SoxojandGitHub 682059cf21 ORCID support (#2786)
* Added support of ORCID identifier

* ORCID documentation
2026-06-20 22:29:19 +02:00
SoxojandGitHub 8f737d10c3 Update README with sponsorship details (#2785) 2026-06-19 13:12:20 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9cf12bc5d2 build(deps): bump pypdf from 6.13.0 to 6.13.3 (#2784)
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.13.0 to 6.13.3.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.13.0...6.13.3)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.13.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 09:28:05 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3397d2f4ea build(deps): bump svglib from 2.0.1 to 2.0.2 (#2783)
Bumps [svglib](https://github.com/deeplook/svglib) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/deeplook/svglib/releases)
- [Changelog](https://github.com/deeplook/svglib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/deeplook/svglib/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: svglib
  dependency-version: 2.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 09:22:45 +02:00
5888f81235 Fix HackerNews and Rajce.net false positives (#2780)
* Fix HackerNews and Rajce.net false positives

* Fix HackerNews and Rajce.net false positives

---------

Co-authored-by: Codex <codex@openai.com>
2026-06-18 19:42:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b7baebde57 build(deps): bump certifi from 2026.5.20 to 2026.6.17 (#2781)
Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.5.20 to 2026.6.17.
- [Commits](https://github.com/certifi/python-certifi/compare/2026.05.20...2026.06.17)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2026.6.17
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-18 09:47:10 +02:00
Julio César SuásteguiandGitHub 0372bb3efc docs: fix typos (#2779) 2026-06-18 09:45:53 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0bd6186ab7 build(deps): bump svglib from 2.0.0 to 2.0.1 (#2782)
Bumps [svglib](https://github.com/deeplook/svglib) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/deeplook/svglib/releases)
- [Changelog](https://github.com/deeplook/svglib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/deeplook/svglib/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: svglib
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-18 09:43:04 +02:00
SoxojandGitHub 0b363a6ac9 Add AI Wiki links (#2778)
* Add AI Wiki links

* Update Chinese README with AI Wiki links and badge reorganization
2026-06-17 21:01:58 +02:00
SoxojandGitHub f2e4f8d3a2 Merge commit from fork 2026-06-17 15:15:32 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
06850e50c8 build(deps): bump svglib from 1.6.0 to 2.0.0 (#2777)
Bumps [svglib](https://github.com/deeplook/svglib) from 1.6.0 to 2.0.0.
- [Release notes](https://github.com/deeplook/svglib/releases)
- [Changelog](https://github.com/deeplook/svglib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/deeplook/svglib/compare/v1.6.0...v2.0.0)

---
updated-dependencies:
- dependency-name: svglib
  dependency-version: 2.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-17 11:08:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1b4f08a121 build(deps): bump pypdf from 6.12.0 to 6.13.0 (#2776)
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.12.0 to 6.13.0.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.12.0...6.13.0)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.13.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 20:39:34 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0f56cde19d build(deps): bump cryptography from 46.0.7 to 48.0.1 (#2775)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.7 to 48.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.7...48.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 48.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 17:45:33 +02:00
0xsealandGitHub 7c436d603d fix(data): fix absence string for myjane (#2770) 2026-06-16 09:58:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1f3b01d188 build(deps): bump pyinstaller from 6.20.0 to 6.21.0 (#2773)
Bumps [pyinstaller](https://github.com/pyinstaller/pyinstaller) from 6.20.0 to 6.21.0.
- [Release notes](https://github.com/pyinstaller/pyinstaller/releases)
- [Changelog](https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst)
- [Commits](https://github.com/pyinstaller/pyinstaller/compare/v6.20.0...v6.21.0)

---
updated-dependencies:
- dependency-name: pyinstaller
  dependency-version: 6.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 09:57:44 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1551322d48 build(deps-dev): bump pytest from 9.0.3 to 9.1.0 (#2772)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.3 to 9.1.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-16 09:57:31 +02:00
Xinmin ZengandGitHub 13f43b3420 Fix async activation retry handling (#2765)
Convert activation HTTP calls to aiohttp coroutines, await activation before retrying, and allocate independent protocol checkers per site check so concurrent retries do not overwrite shared checker state.
2026-06-13 16:34:24 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f4bcd18b91 build(deps): bump pypdf from 6.10.2 to 6.12.0 (#2767)
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.10.2 to 6.12.0.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.10.2...6.12.0)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.12.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 14:46:50 +02:00
36b14ccfa6 Add Tor site entries for issue 806 (#2755)
Co-authored-by: nyxst4ck <289980115+nyxst4ck@users.noreply.github.com>
2026-06-13 14:45:47 +02:00
AshvinandGitHub 0e9ced3168 fix: pass value v not key k to is_country_tag in generate_report_context (#2753)
is_country_tag checks for a 2-letter alpha code. The field names
'country' and 'locale' are 6-7 characters and never match, so the
direct alpha_2 lookup branch was dead code and all country values fell
through to search_fuzzy unconditionally.

Change is_country_tag(k) -> is_country_tag(v) so that 2-letter ISO
codes (e.g. 'US', 'RU') use the fast direct lookup while full country
names continue to use fuzzy search.

Fixes #2752
2026-06-11 14:48:21 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3e6db86122 build(deps): bump aiohttp from 3.14.0 to 3.14.1 (#2748)
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-11 10:19:03 +02:00
AshvinandGitHub 4c938751ea fix: update_site() now replaces list element instead of local variable (#2751)
update_site() used `s = site` inside a for-loop, which rebinds only the
local loop variable and leaves self._sites[i] unchanged. The method
returned self silently appearing to succeed while the database list
retained the original entry. This broke --auto-disable for any site
already present in the database.

Fix with enumerate so the actual list element is replaced.

Fixes #2750
2026-06-10 20:05:18 +02:00
4b9b4689e9 Updated site list and statistics (#2747)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-06-07 13:40:11 +02:00