liburlparser 2.1.0__tar.gz → 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- liburlparser-2.2.0/CHANGELOG.md +212 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/CMakeLists.txt +25 -11
- {liburlparser-2.1.0 → liburlparser-2.2.0}/PKG-INFO +5 -5
- {liburlparser-2.1.0 → liburlparser-2.2.0}/README.md +4 -4
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/CMakeLists.txt +1 -1
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/liburlparserConfig.cmake +2 -2
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/index.html.in +2 -2
- {liburlparser-2.1.0 → liburlparser-2.2.0}/examples/find_liburlparser_via_python/CMakeLists.txt +1 -1
- {liburlparser-2.1.0 → liburlparser-2.2.0}/include/urlparser.h +1 -1
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/public_suffix_list.dat +185 -73
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.clang-format +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.github/workflows/cmake.yml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.github/workflows/orchestrator.yml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.github/workflows/process_release.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.github/workflows/release_template.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.github/workflows/wheels.yml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/.gitignore +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/ARCHITECTURE.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/LICENSE +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/.gitignore +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/OPTIMIZATION_NOTES.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/README.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cmake/Download.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/corpus/.gitignore +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/corpus/generate_corpus.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/abspath_fix_verification/README.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/abspath_fix_verification/fair_compare.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/bench.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/psl_structures/README.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/cpp/psl_structures/psl_structure_comparison.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/python/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/python/bench.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/python/binding_fast_path_ab.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/python/requirements.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/report/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/report/generate_report.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/report/template.html.jinja2 +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/benchmarks/results/report.html +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/DynamicVersion.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/EmbedFile.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/FixLCovPaths.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/GenerateIframe.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/PublicSuffixList.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/PyProject.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/coverage_iframe.html.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/cmake/utils/embedded_string.in.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/conda.recipe/meta.yaml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/CreateDocs.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/InjectComment.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/UrlParserPages.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cli/examples.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cli/index.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cli/installation.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cli/options.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/convert_page.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/CreateDocs.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/Doxyfile.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/footer.html.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/header.html +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/images/interface-arch.svg +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/images/url-parsing-process.svg +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/cpp/mainpage.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/images/liburlparser-sq.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/images/logo/liburlparser-logo-1.svg +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/images/logo/liburlparser-logo-2.svg +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/initial_comment.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/page.html.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/CreateDocs.cmake +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/api/host.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/api/psl.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/api/reference.rst +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/api/url.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/conf.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/examples.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/index.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/installation.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/performance.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/usage/advanced.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/usage/basic.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/docs/usage/cli.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/python/mkdocs.yml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/section.html.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/docs/urlparser-docs.css +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/examples/common.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/examples/find_liburlparser_via_python/main.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/examples/main.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/pyproject.toml +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/requirements-dev.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/ankerl/LICENSE +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/ankerl/README.md +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/ankerl/stl.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/ankerl/unordered_dense.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/bindings/python/binding_py.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/bindings/python/liburlparser/__init__.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/bindings/python/liburlparser/__main__.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/bindings/python/liburlparser/core.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/bindings/python/liburlparser/utils.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/src/urlparser.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/coverage_dashboard.html.in +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/common.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/fuzz_abspath.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/perf_regression_guard.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_host.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_idna.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_normalize.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_percent_codec.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_resolve.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_scp_url.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/cpp/test_url.cpp +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/data/host_data.csv +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/data/url_data.csv +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/genhtml.css +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/CMakeLists.txt +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_cli_subprocess.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_extra.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_host.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_idna.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_memory.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_normalize.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_percent_codec.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_resolve.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_scp_url.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/python/test_url.py +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/utest/utest.h +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/tests/utest/utest_main.cxx +0 -0
- {liburlparser-2.1.0 → liburlparser-2.2.0}/version.py +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to liburlparser are documented here. The format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project follows
|
|
5
|
+
[Semantic Versioning](https://semver.org/). The version of the project is the one in `include/urlparser.h`
|
|
6
|
+
(`URLPARSER_VERSION_MAJOR/MINOR/PATCH`); `pyproject.toml` and CMake read it from there.
|
|
7
|
+
|
|
8
|
+
The entries up to 2.1.0 were written from the git history and the release tags. Since the commit messages of the 1.x
|
|
9
|
+
releases are short, those entries are brief.
|
|
10
|
+
|
|
11
|
+
## [2.2.0] - 2026-11-09
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- **The CMake package namespace is now `liburlparser::`, like the package.** The public target is
|
|
15
|
+
`liburlparser::urlparser`, the same name from `add_subdirectory()`, `FetchContent` and
|
|
16
|
+
`find_package(liburlparser CONFIG)`. A CMake package should export its targets under its own name, and the
|
|
17
|
+
package is `liburlparser` (`liburlparserConfig.cmake`, `python -m liburlparser --cmake-dir`). **Breaking:** the
|
|
18
|
+
2.1.0 name `urlparser::urlparser` is gone and there is no alias for it. Change `target_link_libraries(... urlparser::urlparser)` to
|
|
19
|
+
`liburlparser::urlparser`. The C++ namespace (`urlparser::url`, `urlparser::host`) is unchanged.
|
|
20
|
+
- The `example` program is built only when liburlparser is the top-level project, like the tests and the docs, so it is
|
|
21
|
+
not compiled for nothing when the library is a dependency.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- **Using liburlparser from another scikit-build-core project failed.** `SKBUILD` is defined for the whole build, so a
|
|
25
|
+
project that pulled liburlparser in with `add_subdirectory()` or `FetchContent` made it believe it was itself the wheel
|
|
26
|
+
being built: it tried to build its own nanobind module (and failed when nanobind was not installed) or stopped
|
|
27
|
+
with `RETURN()` before the example, tests and docs. The check is now "`SKBUILD` is defined **and** liburlparser is the
|
|
28
|
+
top-level project". The 2.0.0 release had a guard for this (`c140ea4`); the CMake refactor of 2.1.0 (`ac6ac03`)
|
|
29
|
+
dropped it.
|
|
30
|
+
|
|
31
|
+
## [2.1.0] - 2026-10-03
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
- **`find_package(liburlparser CONFIG)`.** The core is a static library that is installed with its headers and a CMake
|
|
35
|
+
package (`liburlparserConfig.cmake`, targets, version file, and `liburlparserPaths.cmake` with the absolute library
|
|
36
|
+
and include paths). The Python wheel carries the same tree (`include/`, `lib/`, `cmake/`), and
|
|
37
|
+
`python -m liburlparser --cmake-dir` / `--include-dir` / `--lib-dir` print the paths, the way `python -m nanobind --cmake_dir` does.
|
|
38
|
+
`examples/find_liburlparser_via_python` shows it.
|
|
39
|
+
- **IDNA normalization and percent codec APIs.**
|
|
40
|
+
- **scp-like git URLs** (`user@host:path/repo.git`) are parsed.
|
|
41
|
+
- **`url::normalized()`** returns a canonical serialization of a URL.
|
|
42
|
+
- Benchmarks: `search_params` against ada, a reproducible comparison of the PSL structures, benchmark artifacts kept apart
|
|
43
|
+
from the committed results, and an HTML report target.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- **The CMake targets are unified.** The historical aliases `url::base` and `liburlparser::core` are replaced by the one
|
|
47
|
+
public alias `urlparser::urlparser`, and `install(EXPORT)` uses the same name. (**Breaking** for anyone who linked the old aliases;
|
|
48
|
+
renamed again in 2.2.0.)
|
|
49
|
+
- The standalone `idna.cpp` and `percent_codec.cpp` are merged into `urlparser.cpp`, and stale files left from the
|
|
50
|
+
header/source consolidation were removed.
|
|
51
|
+
- The bundled `public_suffix_list.dat` is the 2026-09-08 version.
|
|
52
|
+
- CI: cibuildwheel is updated.
|
|
53
|
+
|
|
54
|
+
### Performance
|
|
55
|
+
- AVX2 scanning for the authority of a URL.
|
|
56
|
+
- PSL suffix matching tracks the maximum rule depth, and the truncation scan in `suffix_of` and the TLD suffix are bounded
|
|
57
|
+
by the maximum length (an O(1) check instead of an O(n) scan).
|
|
58
|
+
- A fast path with interned keys when a `Hostname` is extracted to a Python dict.
|
|
59
|
+
|
|
60
|
+
## [2.0.0] - 2026-09-11
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
- **Public Suffix List support.** A `psl` class (a singleton that tracks the version of its data) matches suffixes; the
|
|
64
|
+
list is embedded into the library when CMake configures, and a configure step refreshes the tracked
|
|
65
|
+
`public_suffix_list.dat` in place when it can download a newer one.
|
|
66
|
+
- **`host`** parsing and classification, with constructor overloads and `string&&` overloads of `host::from_url` and
|
|
67
|
+
`url::extract_host`. Cross-platform IP address parsing replaces the platform-specific code.
|
|
68
|
+
- **Version macros** `URLPARSER_VERSION_*` and a version class (the prefix was renamed from `LIBURLPARSER_`); CMake reads the version from the
|
|
69
|
+
header.
|
|
70
|
+
- SIMD scanning in `find_first_of_3` (AVX2, SSE2, NEON).
|
|
71
|
+
- Python: a static `Url.extract_dict`, built from reusable `to_dict` helpers.
|
|
72
|
+
- Tooling: coverage reports for C++ and Python, leak checks with pytest-memray, benchmark and profiling targets, standalone
|
|
73
|
+
benchmarks (also against ada), Sphinx documentation for the Python API, a CLI reference, and architecture notes.
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
- **liburlparser is a static library**, built with position-independent code, and the default build type is Release.
|
|
77
|
+
- nanobind ABI handling for Python 3.12 and later.
|
|
78
|
+
- The googletest and doxygen-awesome-css submodules are removed, and the `online` extra is gone (the PSL update uses `urllib`).
|
|
79
|
+
- Tests and docs are built only when liburlparser is the top-level project, and a vendored copy does not build its Python
|
|
80
|
+
bindings.
|
|
81
|
+
- The implementation of the suffix table is hidden behind a forward declaration.
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
- Windows compatibility (pull request #4, by CKCat).
|
|
85
|
+
- Regression tests for earlier URL parsing bugs.
|
|
86
|
+
|
|
87
|
+
### Performance
|
|
88
|
+
- Extra capacity for URL fields, a faster `host` constructor, and the suffix position is computed by arithmetic.
|
|
89
|
+
|
|
90
|
+
## [1.6.1] - 2025-10-24
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
- The CLI logic is refactored and covered by tests, and `flatten_dict` moved to the utils module.
|
|
94
|
+
- The release workflow and the wheel builds are improved (`test_cli_subprocess` is excluded in CI).
|
|
95
|
+
|
|
96
|
+
## [1.6.0] - 2025-05-04
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
- `--parts` option of the command line, and the top-level domain (TLD) of a host.
|
|
100
|
+
- The Public Suffix List file.
|
|
101
|
+
- Doxygen documentation (main page with logo and architecture diagram, doxygen-awesome theme) and the Python documentation,
|
|
102
|
+
published to GitHub Pages.
|
|
103
|
+
|
|
104
|
+
## [1.5.0] - 2024-10-18
|
|
105
|
+
|
|
106
|
+
### Changed
|
|
107
|
+
- The project architecture changed, and the CI runs all tests (C++ and Python).
|
|
108
|
+
- Build requirements are managed with pip-tools; ruff fixes.
|
|
109
|
+
|
|
110
|
+
## [1.4.6] - 2024-02-11
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
- macOS is built in CI, the build system changed, and the README got badges.
|
|
114
|
+
|
|
115
|
+
## [1.4.5] - 2023-11-28
|
|
116
|
+
|
|
117
|
+
### Changed
|
|
118
|
+
- The Doxygen project information is read from `pyproject.toml`, and the release workflow uploads the release assets.
|
|
119
|
+
|
|
120
|
+
## [1.4.4] - 2023-11-23
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
- The C++ tests moved to googletest and were rewritten as parametrized tests, like the Python ones; C++ and Python
|
|
124
|
+
tests are separate. The wheel files are created.
|
|
125
|
+
|
|
126
|
+
## [1.4.3] - 2023-11-19
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
- A file lock lets the tests run in parallel.
|
|
130
|
+
|
|
131
|
+
## [1.4.2] - 2023-11-13
|
|
132
|
+
|
|
133
|
+
### Changed
|
|
134
|
+
- `shared_ptr` replaces `unique_ptr`, since every method is const.
|
|
135
|
+
|
|
136
|
+
### Fixed
|
|
137
|
+
- The `fulldomain` problem, and the host name was removed again.
|
|
138
|
+
|
|
139
|
+
## [1.4.1] - 2023-11-11
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
- C++ tests with gtest and gmock.
|
|
143
|
+
- A fast `hostName` that does not parse the host string (with a known problem with `ignore_www`).
|
|
144
|
+
|
|
145
|
+
### Changed
|
|
146
|
+
- The PSL is held as data instead of a pointer (fixes the pointer-to-data conversion), and `requests` became an optional
|
|
147
|
+
dependency (the `online` extra).
|
|
148
|
+
|
|
149
|
+
## [1.4.0] - 2023-11-08
|
|
150
|
+
|
|
151
|
+
### Changed
|
|
152
|
+
- `urlparser.cpp` is split into a host part and a url part, a url holds its host through a pointer, and the lazy
|
|
153
|
+
calculation uses a smart pointer.
|
|
154
|
+
|
|
155
|
+
### Fixed
|
|
156
|
+
- Problems with the operators; the move constructor and assignment were removed.
|
|
157
|
+
|
|
158
|
+
## [1.3.0] - 2023-11-05
|
|
159
|
+
|
|
160
|
+
### Fixed
|
|
161
|
+
- `fulldomain` in the substring step; accessibility of the class; test and linter issues. An automatic correction was
|
|
162
|
+
tried and removed.
|
|
163
|
+
|
|
164
|
+
## [1.2.1] - 2023-10-10
|
|
165
|
+
|
|
166
|
+
### Fixed
|
|
167
|
+
- The `fulldomain` issue.
|
|
168
|
+
|
|
169
|
+
## [1.2.0] - 2023-10-09
|
|
170
|
+
|
|
171
|
+
### Changed
|
|
172
|
+
- The `fulldomain` attribute was updated.
|
|
173
|
+
|
|
174
|
+
## [1.1.0] - 2023-07-23
|
|
175
|
+
|
|
176
|
+
### Added
|
|
177
|
+
- The `ignore_www` option for subdomains.
|
|
178
|
+
|
|
179
|
+
## [1.0.2] - 2023-07-22
|
|
180
|
+
|
|
181
|
+
### Added
|
|
182
|
+
- A Ruff lint check.
|
|
183
|
+
|
|
184
|
+
## [1.0.1] - 2023-07-21
|
|
185
|
+
|
|
186
|
+
### Fixed
|
|
187
|
+
- `pyproject.toml` and the wheels workflow.
|
|
188
|
+
|
|
189
|
+
## [1.0.0] - 2023-07-21
|
|
190
|
+
|
|
191
|
+
First tagged release. The history before it is mostly the setup of the wheel builds with cibuildwheel (PyPy excluded).
|
|
192
|
+
|
|
193
|
+
[2.2.0]: https://github.com/mohammadraziei/liburlparser/compare/v2.1.0...v2.2.0
|
|
194
|
+
[2.1.0]: https://github.com/mohammadraziei/liburlparser/compare/v2.0.0...v2.1.0
|
|
195
|
+
[2.0.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.6.1...v2.0.0
|
|
196
|
+
[1.6.1]: https://github.com/mohammadraziei/liburlparser/compare/v1.6.0...v1.6.1
|
|
197
|
+
[1.6.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.5.0...v1.6.0
|
|
198
|
+
[1.5.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.6...v1.5.0
|
|
199
|
+
[1.4.6]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.5...v1.4.6
|
|
200
|
+
[1.4.5]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.4...v1.4.5
|
|
201
|
+
[1.4.4]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.3...v1.4.4
|
|
202
|
+
[1.4.3]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.2...v1.4.3
|
|
203
|
+
[1.4.2]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.1...v1.4.2
|
|
204
|
+
[1.4.1]: https://github.com/mohammadraziei/liburlparser/compare/v1.4.0...v1.4.1
|
|
205
|
+
[1.4.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.3.0...v1.4.0
|
|
206
|
+
[1.3.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.2.1...v1.3.0
|
|
207
|
+
[1.2.1]: https://github.com/mohammadraziei/liburlparser/compare/v1.2.0...v1.2.1
|
|
208
|
+
[1.2.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.1.0...v1.2.0
|
|
209
|
+
[1.1.0]: https://github.com/mohammadraziei/liburlparser/compare/v1.0.2...v1.1.0
|
|
210
|
+
[1.0.2]: https://github.com/mohammadraziei/liburlparser/compare/v1.0.1...v1.0.2
|
|
211
|
+
[1.0.1]: https://github.com/mohammadraziei/liburlparser/compare/v1.0.0...v1.0.1
|
|
212
|
+
[1.0.0]: https://github.com/mohammadraziei/liburlparser/releases/tag/v1.0.0
|
|
@@ -38,9 +38,20 @@ if (CYGWIN OR UNIX)
|
|
|
38
38
|
endif()
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
# URLPARSER_SKBUILD is true only when liburlparser itself is the scikit-build-core
|
|
42
|
+
# project being built (the wheel build). SKBUILD alone is not enough: it is also
|
|
43
|
+
# defined when another scikit-build-core project (e.g. httpp) pulls this one in with
|
|
44
|
+
# add_subdirectory() or FetchContent, and then it must behave as a plain C++ library:
|
|
45
|
+
# no nanobind module, no early RETURN() before the liburlparser::urlparser target and the tests.
|
|
46
|
+
if(DEFINED SKBUILD AND CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
47
|
+
set(URLPARSER_SKBUILD ON)
|
|
48
|
+
else()
|
|
49
|
+
set(URLPARSER_SKBUILD OFF)
|
|
50
|
+
endif()
|
|
51
|
+
|
|
41
52
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
|
42
53
|
|
|
43
|
-
if(
|
|
54
|
+
if(URLPARSER_SKBUILD)
|
|
44
55
|
set(PYTHON_PROJECT_NAME "${SKBUILD_PROJECT_NAME}")
|
|
45
56
|
elseif(BUILD_PYTHON)
|
|
46
57
|
set(PYTHON_PROJECT_NAME "${CMAKE_BINARY_DIR}")
|
|
@@ -102,7 +113,7 @@ embed_file_as_string(
|
|
|
102
113
|
# Install layout: the wheel carries include/, lib/ and cmake/ inside the
|
|
103
114
|
# `liburlparser` package (nanobind/pybind11 pattern, see get_cmake_dir() in
|
|
104
115
|
# the Python package); a plain `cmake --install` uses the usual prefix layout.
|
|
105
|
-
if(
|
|
116
|
+
if(URLPARSER_SKBUILD)
|
|
106
117
|
set(_urlparser_lib_dest liburlparser/lib)
|
|
107
118
|
set(_urlparser_inc_dest liburlparser/include)
|
|
108
119
|
set(_urlparser_cmake_dest liburlparser/cmake)
|
|
@@ -113,16 +124,16 @@ else()
|
|
|
113
124
|
endif()
|
|
114
125
|
|
|
115
126
|
add_library(urlparser STATIC ${SOURCES})
|
|
116
|
-
# The public target is `
|
|
127
|
+
# The public target is `liburlparser::urlparser` - the same name whether the
|
|
117
128
|
# library comes from FetchContent/add_subdirectory (this alias) or from an
|
|
118
129
|
# installed package (find_package(liburlparser), exported below).
|
|
119
|
-
add_library(
|
|
130
|
+
add_library(liburlparser::urlparser ALIAS urlparser)
|
|
120
131
|
|
|
121
132
|
set_target_properties(urlparser PROPERTIES
|
|
122
133
|
POSITION_INDEPENDENT_CODE ON # linked into the Python extension
|
|
123
134
|
CXX_VISIBILITY_PRESET hidden
|
|
124
135
|
VISIBILITY_INLINES_HIDDEN ON
|
|
125
|
-
EXPORT_NAME urlparser # installed as
|
|
136
|
+
EXPORT_NAME urlparser # installed as liburlparser::urlparser (see install(EXPORT))
|
|
126
137
|
OUTPUT_NAME urlparser # liburlparser.a / urlparser.lib
|
|
127
138
|
)
|
|
128
139
|
target_include_directories(urlparser
|
|
@@ -175,7 +186,7 @@ if(DEFINED PYTHON_PROJECT_NAME)
|
|
|
175
186
|
|
|
176
187
|
target_link_libraries(${NB_MODULE} PRIVATE urlparser)
|
|
177
188
|
|
|
178
|
-
if(
|
|
189
|
+
if(URLPARSER_SKBUILD)
|
|
179
190
|
install(TARGETS ${NB_MODULE}
|
|
180
191
|
CONFIGURATIONS Release
|
|
181
192
|
LIBRARY DESTINATION
|
|
@@ -187,7 +198,7 @@ if(DEFINED PYTHON_PROJECT_NAME)
|
|
|
187
198
|
endif()
|
|
188
199
|
endif()
|
|
189
200
|
|
|
190
|
-
# --- install: find_package(liburlparser CONFIG) ->
|
|
201
|
+
# --- install: find_package(liburlparser CONFIG) -> liburlparser::urlparser ---
|
|
191
202
|
include(CMakePackageConfigHelpers)
|
|
192
203
|
install(TARGETS urlparser EXPORT liburlparserTargets
|
|
193
204
|
ARCHIVE DESTINATION ${_urlparser_lib_dest}
|
|
@@ -195,7 +206,7 @@ install(TARGETS urlparser EXPORT liburlparserTargets
|
|
|
195
206
|
install(DIRECTORY include/ DESTINATION ${_urlparser_inc_dest})
|
|
196
207
|
install(EXPORT liburlparserTargets
|
|
197
208
|
FILE liburlparserTargets.cmake
|
|
198
|
-
NAMESPACE
|
|
209
|
+
NAMESPACE liburlparser::
|
|
199
210
|
DESTINATION ${_urlparser_cmake_dest})
|
|
200
211
|
|
|
201
212
|
# urlparser_LIB_PATH / urlparser_INCLUDE_PATH for consumers that want plain
|
|
@@ -228,12 +239,15 @@ install(FILES
|
|
|
228
239
|
${PROJECT_BINARY_DIR}/liburlparserConfigVersion.cmake
|
|
229
240
|
DESTINATION ${_urlparser_cmake_dest})
|
|
230
241
|
|
|
231
|
-
if(
|
|
242
|
+
if(URLPARSER_SKBUILD)
|
|
232
243
|
RETURN()
|
|
233
244
|
endif()
|
|
234
245
|
|
|
235
|
-
|
|
236
|
-
|
|
246
|
+
# The example is only for the top-level build; as a dependency it would just be compiled for nothing.
|
|
247
|
+
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|
248
|
+
add_executable(example examples/main.cpp)
|
|
249
|
+
target_link_libraries(example PRIVATE liburlparser::urlparser)
|
|
250
|
+
endif()
|
|
237
251
|
|
|
238
252
|
enable_testing()
|
|
239
253
|
find_package(Threads REQUIRED)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: liburlparser
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Fastest Url parser in the world
|
|
5
5
|
Author-Email: Mohammad Raziei <mohammadraziei1375@gmail.com>
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -243,7 +243,7 @@ you can see all methods in python we can use in c++ very easily
|
|
|
243
243
|
### C++
|
|
244
244
|
|
|
245
245
|
Requires a C++17 compiler and CMake >= 3.19. The library is a static library plus one header (`urlparser.h`),
|
|
246
|
-
and its CMake target is **`
|
|
246
|
+
and its CMake target is **`liburlparser::urlparser`** - the same name no matter how you get it:
|
|
247
247
|
|
|
248
248
|
#### 1. FetchContent
|
|
249
249
|
|
|
@@ -256,7 +256,7 @@ FetchContent_Declare(
|
|
|
256
256
|
)
|
|
257
257
|
FetchContent_MakeAvailable(liburlparser)
|
|
258
258
|
|
|
259
|
-
target_link_libraries(my_app PRIVATE
|
|
259
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
260
260
|
```
|
|
261
261
|
|
|
262
262
|
#### 2. From the pip package
|
|
@@ -274,7 +274,7 @@ execute_process(
|
|
|
274
274
|
COMMAND_ERROR_IS_FATAL ANY)
|
|
275
275
|
|
|
276
276
|
find_package(liburlparser CONFIG REQUIRED)
|
|
277
|
-
target_link_libraries(my_app PRIVATE
|
|
277
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
278
278
|
```
|
|
279
279
|
|
|
280
280
|
For build systems that prefer plain paths over the target, `find_package` also sets:
|
|
@@ -321,7 +321,7 @@ Then, in your project (add `-DCMAKE_PREFIX_PATH=<prefix>` if you used a custom p
|
|
|
321
321
|
|
|
322
322
|
```cmake
|
|
323
323
|
find_package(liburlparser CONFIG REQUIRED)
|
|
324
|
-
target_link_libraries(my_app PRIVATE
|
|
324
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
325
325
|
```
|
|
326
326
|
|
|
327
327
|
### Python and Command Line:
|
|
@@ -219,7 +219,7 @@ you can see all methods in python we can use in c++ very easily
|
|
|
219
219
|
### C++
|
|
220
220
|
|
|
221
221
|
Requires a C++17 compiler and CMake >= 3.19. The library is a static library plus one header (`urlparser.h`),
|
|
222
|
-
and its CMake target is **`
|
|
222
|
+
and its CMake target is **`liburlparser::urlparser`** - the same name no matter how you get it:
|
|
223
223
|
|
|
224
224
|
#### 1. FetchContent
|
|
225
225
|
|
|
@@ -232,7 +232,7 @@ FetchContent_Declare(
|
|
|
232
232
|
)
|
|
233
233
|
FetchContent_MakeAvailable(liburlparser)
|
|
234
234
|
|
|
235
|
-
target_link_libraries(my_app PRIVATE
|
|
235
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
236
236
|
```
|
|
237
237
|
|
|
238
238
|
#### 2. From the pip package
|
|
@@ -250,7 +250,7 @@ execute_process(
|
|
|
250
250
|
COMMAND_ERROR_IS_FATAL ANY)
|
|
251
251
|
|
|
252
252
|
find_package(liburlparser CONFIG REQUIRED)
|
|
253
|
-
target_link_libraries(my_app PRIVATE
|
|
253
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
254
254
|
```
|
|
255
255
|
|
|
256
256
|
For build systems that prefer plain paths over the target, `find_package` also sets:
|
|
@@ -297,7 +297,7 @@ Then, in your project (add `-DCMAKE_PREFIX_PATH=<prefix>` if you used a custom p
|
|
|
297
297
|
|
|
298
298
|
```cmake
|
|
299
299
|
find_package(liburlparser CONFIG REQUIRED)
|
|
300
|
-
target_link_libraries(my_app PRIVATE
|
|
300
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
### Python and Command Line:
|
|
@@ -25,7 +25,7 @@ FetchContent_Declare(
|
|
|
25
25
|
FetchContent_MakeAvailable(liburlparser ada)
|
|
26
26
|
|
|
27
27
|
add_executable(bench_cpp bench.cpp)
|
|
28
|
-
target_link_libraries(bench_cpp PRIVATE
|
|
28
|
+
target_link_libraries(bench_cpp PRIVATE liburlparser::urlparser ada::ada)
|
|
29
29
|
target_compile_definitions(bench_cpp PRIVATE
|
|
30
30
|
URLPARSER_BENCH_DOMAINS_FILE="${URLPARSER_BENCH_DOMAINS_FILE}"
|
|
31
31
|
URLPARSER_BENCH_URLS_FILE="${URLPARSER_BENCH_URLS_FILE}"
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
# Usage (CMake >= 3.15):
|
|
4
4
|
#
|
|
5
5
|
# find_package(liburlparser CONFIG REQUIRED)
|
|
6
|
-
# target_link_libraries(app PRIVATE
|
|
6
|
+
# target_link_libraries(app PRIVATE liburlparser::urlparser)
|
|
7
7
|
#
|
|
8
|
-
# `
|
|
8
|
+
# `liburlparser::urlparser` is the same target you get from
|
|
9
9
|
# FetchContent/add_subdirectory. It carries everything a consumer needs: the
|
|
10
10
|
# compiled static library and the include directory for <urlparser.h>. All
|
|
11
11
|
# paths are resolved relative to this file, so the package works wherever it
|
|
@@ -188,10 +188,10 @@ FetchContent_Declare(
|
|
|
188
188
|
)
|
|
189
189
|
FetchContent_MakeAvailable(liburlparser)
|
|
190
190
|
|
|
191
|
-
target_link_libraries(my_app PRIVATE
|
|
191
|
+
target_link_libraries(my_app PRIVATE liburlparser::urlparser)</code></pre>
|
|
192
192
|
</div>
|
|
193
193
|
<div class="install-note">
|
|
194
|
-
Requires CMake 3.19+ and a C++17-compatible compiler. Link against <code>
|
|
194
|
+
Requires CMake 3.19+ and a C++17-compatible compiler. Link against <code>liburlparser::urlparser</code> and include <code>urlparser.h</code>.
|
|
195
195
|
</div>
|
|
196
196
|
</div>
|
|
197
197
|
|
{liburlparser-2.1.0 → liburlparser-2.2.0}/examples/find_liburlparser_via_python/CMakeLists.txt
RENAMED
|
@@ -19,7 +19,7 @@ execute_process(
|
|
|
19
19
|
find_package(liburlparser CONFIG REQUIRED)
|
|
20
20
|
|
|
21
21
|
add_executable(app main.cpp)
|
|
22
|
-
target_link_libraries(app PRIVATE
|
|
22
|
+
target_link_libraries(app PRIVATE liburlparser::urlparser)
|
|
23
23
|
|
|
24
24
|
# Plain paths are available too, for build systems that don't use the target:
|
|
25
25
|
message(STATUS "urlparser_LIB_PATH = ${urlparser_LIB_PATH}")
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
// - pyproject.toml's [tool.scikit-build.metadata.version] regex provider
|
|
49
49
|
// - version.py (bump/tag helper)
|
|
50
50
|
#define URLPARSER_VERSION_MAJOR 2
|
|
51
|
-
#define URLPARSER_VERSION_MINOR
|
|
51
|
+
#define URLPARSER_VERSION_MINOR 2
|
|
52
52
|
#define URLPARSER_VERSION_PATCH 0
|
|
53
53
|
|
|
54
54
|
#define URLPARSER_VERSION_ENCODE(maj,min,pat) (((maj)*10000)+((min)*100)+(pat))
|