git-bot-feedback 0.2.4__tar.gz → 0.2.6__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.
Files changed (56) hide show
  1. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/CHANGELOG.md +4 -3
  2. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/Cargo.lock +2 -2
  3. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/Cargo.toml +1 -1
  4. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/PKG-INFO +1 -1
  5. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/bindings/python/CHANGELOG.md +26 -0
  6. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/bindings/python/Cargo.toml +2 -2
  7. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6/bindings/python}/git_bot_feedback.pyi +2 -0
  8. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/bindings/python/src/wrapper.rs +23 -0
  9. {git_bot_feedback-0.2.4/bindings/python → git_bot_feedback-0.2.6}/git_bot_feedback.pyi +2 -0
  10. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/file_utils/file_filter.rs +28 -1
  11. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/.gitattributes +0 -0
  12. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/.gitignore +0 -0
  13. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/.pre-commit-config.yaml +0 -0
  14. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/CONTRIBUTING.md +0 -0
  15. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/LICENSE +0 -0
  16. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/README.md +0 -0
  17. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/README.rst +0 -0
  18. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/bindings/python/README.rst +0 -0
  19. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/bindings/python/src/lib.rs +0 -0
  20. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/build.rs +0 -0
  21. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/codecov.yml +0 -0
  22. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/cspell.config.yml +0 -0
  23. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/client.rst +0 -0
  24. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/file-annotations.rst +0 -0
  25. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/file-changes.rst +0 -0
  26. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/index.rst +0 -0
  27. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/output-variables.rst +0 -0
  28. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/pr-reviews.rst +0 -0
  29. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/API/thread-comments.rst +0 -0
  30. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/_static/favicon.ico +0 -0
  31. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/_static/logo.png +0 -0
  32. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/conf.py +0 -0
  33. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/index.rst +0 -0
  34. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/docs/logo.xcf +0 -0
  35. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/nurfile +0 -0
  36. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/pyproject.toml +0 -0
  37. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/common.rs +0 -0
  38. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/gitea/mod.rs +0 -0
  39. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/gitea/serde_structs.rs +0 -0
  40. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/gitea/specific_api.rs +0 -0
  41. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/github/graphql.rs +0 -0
  42. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/github/mod.rs +0 -0
  43. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/github/serde_structs.rs +0 -0
  44. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/github/specific_api.rs +0 -0
  45. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/local.rs +0 -0
  46. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/client/mod.rs +0 -0
  47. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/comments/mod.rs +0 -0
  48. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/comments/review_comments.rs +0 -0
  49. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/comments/thread_comments.rs +0 -0
  50. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/error.rs +0 -0
  51. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/file_annotations.rs +0 -0
  52. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/file_utils/mod.rs +0 -0
  53. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/git_diff.rs +0 -0
  54. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/lib.rs +0 -0
  55. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/src/output_variable.rs +0 -0
  56. {git_bot_feedback-0.2.4 → git_bot_feedback-0.2.6}/uv.lock +0 -0
@@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
  <!-- markdownlint-disable MD024 -->
8
8
 
9
- ## [git-bot-feedback/v0.8.4] - 2026-10-02
9
+ ## [git-bot-feedback/v0.8.5] - 2026-10-04
10
10
 
11
11
  ### <!-- 1 --> 🚀 Added
12
12
 
@@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
48
48
  - Move option's value instead of cloning it by @2bndy5 in [#99](https://github.com/2bndy5/git-bot-feedback/pull/99)
49
49
  - Output only diff using `git show` by @2bndy5 in [#102](https://github.com/2bndy5/git-bot-feedback/pull/102)
50
50
  - Improve Github client's `get_list_of_changed_files()` by @2bndy5 in [#123](https://github.com/2bndy5/git-bot-feedback/pull/123)
51
+ - Match descendants of a given glob pattern by @2bndy5 in [#132](https://github.com/2bndy5/git-bot-feedback/pull/132)
51
52
 
52
53
  ### <!-- 8 --> 📝 Documentation
53
54
 
@@ -57,9 +58,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
57
58
 
58
59
  - Revise `FileAnnotations` impl by @2bndy5 in [#64](https://github.com/2bndy5/git-bot-feedback/pull/64)
59
60
 
60
- [git-bot-feedback/v0.8.4]: https://github.com/2bndy5/git-bot-feedback/compare/git-bot-feedback/v0.8.3...git-bot-feedback/v0.8.4
61
+ [git-bot-feedback/v0.8.5]: https://github.com/2bndy5/git-bot-feedback/compare/git-bot-feedback/v0.8.4...git-bot-feedback/v0.8.5
61
62
 
62
- Full commit diff: [`git-bot-feedback/v0.8.3...git-bot-feedback/v0.8.4`][git-bot-feedback/v0.8.4]
63
+ Full commit diff: [`git-bot-feedback/v0.8.4...git-bot-feedback/v0.8.5`][git-bot-feedback/v0.8.5]
63
64
 
64
65
  ## New Contributors
65
66
 
@@ -413,7 +413,7 @@ dependencies = [
413
413
 
414
414
  [[package]]
415
415
  name = "git-bot-feedback"
416
- version = "0.8.4"
416
+ version = "0.8.5"
417
417
  dependencies = [
418
418
  "async-trait",
419
419
  "chrono",
@@ -433,7 +433,7 @@ dependencies = [
433
433
 
434
434
  [[package]]
435
435
  name = "git-bot-feedback-py"
436
- version = "0.2.4"
436
+ version = "0.2.6"
437
437
  dependencies = [
438
438
  "git-bot-feedback",
439
439
  "pyo3",
@@ -21,7 +21,7 @@ features = ["http2", "charset", "system-proxy"]
21
21
  [package]
22
22
  name = "git-bot-feedback"
23
23
  description = "A library designed for CI tools that posts comments on a Pull Request."
24
- version = "0.8.4"
24
+ version = "0.8.5"
25
25
  edition.workspace = true
26
26
  license.workspace = true
27
27
  repository.workspace = true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: git-bot-feedback
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Classifier: Development Status :: 5 - Production/Stable
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Intended Audience :: System Administrators
@@ -6,11 +6,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
  <!-- markdownlint-disable MD024 -->
8
8
 
9
+ ## [git-bot-feedback-py/v0.2.6] - 2026-10-06
10
+
11
+ ### <!-- 4 --> 🛠️ Fixed
12
+
13
+ - Add log grouping functions to python wrapper by @2bndy5 in [#133](https://github.com/2bndy5/git-bot-feedback/pull/133)
14
+
15
+ [git-bot-feedback-py/v0.2.6]: https://github.com/2bndy5/git-bot-feedback/compare/git-bot-feedback-py/v0.2.5...git-bot-feedback-py/v0.2.6
16
+
17
+ Full commit diff: [`git-bot-feedback-py/v0.2.5...git-bot-feedback-py/v0.2.6`][git-bot-feedback-py/v0.2.6]
18
+
19
+ ## [git-bot-feedback-py/v0.2.5] - 2026-10-04
20
+
21
+ ### <!-- 4 --> 🛠️ Fixed
22
+
23
+ - Match descendants of a given glob pattern by @2bndy5 in [#132](https://github.com/2bndy5/git-bot-feedback/pull/132)
24
+
25
+ ### <!-- 6 --> 📦 Dependency updates
26
+
27
+ - Bump version to git-bot-feedback/v0.8.5 by @2bndy5 in [`55b72b7`](https://github.com/2bndy5/git-bot-feedback/commit/55b72b7e472fc6e2f33d0d76a20d0d0c2ab3cd9f)
28
+ - Bump version to git-bot-feedback-py/v0.2.5 by @2bndy5 in [`02ed42d`](https://github.com/2bndy5/git-bot-feedback/commit/02ed42d76f20087dbe73b56a6db67aa9041ee23a)
29
+
30
+ [git-bot-feedback-py/v0.2.5]: https://github.com/2bndy5/git-bot-feedback/compare/git-bot-feedback-py/v0.2.4...git-bot-feedback-py/v0.2.5
31
+
32
+ Full commit diff: [`git-bot-feedback-py/v0.2.4...git-bot-feedback-py/v0.2.5`][git-bot-feedback-py/v0.2.5]
33
+
9
34
  ## [git-bot-feedback-py/v0.2.4] - 2026-10-02
10
35
 
11
36
  ### <!-- 6 --> 📦 Dependency updates
12
37
 
13
38
  - Bump version to git-bot-feedback/v0.8.4 by @2bndy5 in [`41a9014`](https://github.com/2bndy5/git-bot-feedback/commit/41a90143260cd11d9597ecb09fc1b6dd41b793cd)
39
+ - Bump version to git-bot-feedback-py/v0.2.4 by @2bndy5 in [`fc345db`](https://github.com/2bndy5/git-bot-feedback/commit/fc345dba18ecb0bc7d587542854115b317db2226)
14
40
 
15
41
  [git-bot-feedback-py/v0.2.4]: https://github.com/2bndy5/git-bot-feedback/compare/git-bot-feedback-py/v0.2.3...git-bot-feedback-py/v0.2.4
16
42
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "git-bot-feedback-py"
3
- version = "0.2.4"
3
+ version = "0.2.6"
4
4
  edition.workspace = true
5
5
  license.workspace = true
6
6
  repository.workspace = true
@@ -14,7 +14,7 @@ crate-type = ["cdylib"] # spell-checker: disable-line
14
14
  path = "src/lib.rs"
15
15
 
16
16
  [dependencies]
17
- git-bot-feedback = { path = "../..", version = "0.8.4", features = ["file-changes", "pyo3"] }
17
+ git-bot-feedback = { path = "../..", version = "0.8.5", features = ["file-changes", "pyo3"] }
18
18
  pyo3 = { workspace = true }
19
19
  pyo3-async-runtimes = { version = "0.29.0", features = ["tokio-runtime"] }
20
20
  pyo3-log = "0.13.4"
@@ -6,6 +6,8 @@ class GitClient:
6
6
  def __init__(self) -> None: ...
7
7
  def is_pr_event(self) -> bool: ...
8
8
  def is_debug_enabled(self) -> bool: ...
9
+ def start_log_group(self, name: str) -> None: ...
10
+ def end_log_group(self, name: str) -> None: ...
9
11
  @property
10
12
  def event_name(self) -> str | None: ...
11
13
  def set_user_agent(self, user_agent: str) -> None: ...
@@ -218,6 +218,29 @@ impl GitClient {
218
218
  Ok(())
219
219
  }
220
220
 
221
+ /// Mark the start of a group of logs statements.
222
+ ///
223
+ /// The name given is used as the unique group name.
224
+ #[pyo3(
225
+ signature = (name),
226
+ text_signature = "(name: str) -> None"
227
+ )]
228
+ pub fn start_log_group(&self, name: &str) {
229
+ self.client.blocking_lock().start_log_group(name);
230
+ }
231
+
232
+ /// Mark the end of a group of logs statements.
233
+ ///
234
+ /// Some CI platforms expect the given name to match an already started group of logs.
235
+ /// Other CI platforms do not actually used the given name.
236
+ #[pyo3(
237
+ signature = (name),
238
+ text_signature = "(name: str) -> None"
239
+ )]
240
+ pub fn end_log_group(&self, name: &str) {
241
+ self.client.blocking_lock().end_log_group(name);
242
+ }
243
+
221
244
  // /// Construct a HTTP request to be sent.
222
245
  // ///
223
246
  // /// The idea here is that this method is called before [`Self::send_api_request()`].
@@ -6,6 +6,8 @@ class GitClient:
6
6
  def __init__(self) -> None: ...
7
7
  def is_pr_event(self) -> bool: ...
8
8
  def is_debug_enabled(self) -> bool: ...
9
+ def start_log_group(self, name: str) -> None: ...
10
+ def end_log_group(self, name: str) -> None: ...
9
11
  @property
10
12
  def event_name(self) -> str | None: ...
11
13
  def set_user_agent(self, user_agent: str) -> None: ...
@@ -176,10 +176,20 @@ impl FileFilter {
176
176
  };
177
177
  for pattern in set {
178
178
  let pat = PathBuf::from(&pattern);
179
+ let is_valid_glob = fast_glob::validate(pattern).is_ok();
180
+ let is_glob = is_valid_glob
181
+ && pattern
182
+ .chars()
183
+ .any(|character| matches!(character, '*' | '?' | '[' | '{'));
179
184
  if pattern.is_empty()
180
- || glob_match(pattern, file_name.to_string_lossy().as_ref())
185
+ || (is_valid_glob && glob_match(pattern, file_name.to_string_lossy().as_ref()))
181
186
  || (pat.is_file() && file_name == pat)
182
187
  || (pat.is_dir() && file_name.starts_with(pat))
188
+ || (is_glob
189
+ && file_name.ancestors().any(|a| {
190
+ !a.as_os_str().is_empty()
191
+ && glob_match(pattern, a.to_string_lossy().as_ref())
192
+ }))
183
193
  {
184
194
  log::debug!(
185
195
  "{}file {file_name:?} is {}ignored with domain {pattern:?}.",
@@ -456,6 +466,23 @@ mod tests {
456
466
  assert!(file_filter.is_file_not_ignored(&PathBuf::from("./src/file_utils/file_filter.rs")));
457
467
  }
458
468
 
469
+ #[test]
470
+ fn ignore_glob_descendants() {
471
+ // Pattern is a glob that resolves to a directory (examples/<any>/build).
472
+ let file_filter = setup_ignore("examples/*/build", &[]);
473
+
474
+ // The directory itself matches (whole-path glob match).
475
+ assert!(file_filter.is_file_ignored(&PathBuf::from("examples/linux/build")));
476
+
477
+ // Files inside the matched directory should be ignored too,
478
+ // the same way a literal dir pattern like "src" ignores "src/lib.rs".
479
+ assert!(file_filter.is_file_ignored(&PathBuf::from("examples/linux/build/file.c")));
480
+ assert!(file_filter.is_file_ignored(&PathBuf::from("examples/linux/build/some/file.c")));
481
+
482
+ // Siblings outside the glob must not be ignored.
483
+ assert!(!file_filter.is_file_ignored(&PathBuf::from("examples/linux/src/file.c")));
484
+ }
485
+
459
486
  #[test]
460
487
  fn ignore_submodules() {
461
488
  let mut file_filter = setup_ignore("!pybind11", &[]);