github-dependents-info 1.2.0__tar.gz → 1.3.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: github-dependents-info
3
- Version: 1.2.0
3
+ Version: 1.3.0
4
4
  Summary: Collect information about dependencies between a github repo and other repositories. Results available in JSON, markdown and badges.
5
5
  Home-page: https://github.com/nvuillam/github-dependents-info
6
6
  License: MIT
@@ -38,6 +38,8 @@ Description-Content-Type: text/markdown
38
38
  [![Python Version](https://img.shields.io/pypi/pyversions/github-dependents-info.svg)](https://pypi.org/project/github-dependents-info/)
39
39
  [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/nvuillam/github-dependents-info/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)
40
40
 
41
+ [![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/github-dependents-info.svg)](https://github.com/nvuillam/github-dependents-info/graphs/contributors/)
42
+ [![GitHub Sponsors](https://img.shields.io/github/sponsors/nvuillam)](https://github.com/sponsors/nvuillam)
41
43
  [![MegaLinter](https://github.com/nvuillam/github-dependents-info/workflows/MegaLinter/badge.svg?branch=main)](https://oxsecurity.github.io/megalinter)
42
44
  [![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)
43
45
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
@@ -229,6 +231,12 @@ _Generated by [github-dependents-info](https://github.com/nvuillam/github-depend
229
231
  </details>
230
232
 
231
233
  Note: If your repository packages have millions of dependents, running github-dependent-infos could take hours, as it works by browsing and scraping HTML pages returned by GitHub. For example, [angular/angular dependents](assets/angular-package-usage.md) did run during several hours !
234
+
235
+ - [Installation](#⚙️-installation)
236
+ - [Usage](#🛠️-usage)
237
+ - [Examples](#🧪-examples)
238
+ - [Use as GitHub Action](#use-as-github-action)
239
+
232
240
  _________________
233
241
  ## ⚙️ Installation
234
242
 
@@ -292,6 +300,81 @@ _________________
292
300
 
293
301
  github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --mergepackages --verbose
294
302
 
303
+ ## Use as GitHub Action
304
+
305
+ Create a file **.github/workflows/github-dependents-info.yml** in your repository with the following content.
306
+
307
+ If will generate a new Pull Request (or replace the pending one) every time the usage stats will have changed :)
308
+
309
+ ```yaml
310
+ ---
311
+ # GitHub Dependents Info workflow
312
+ # More info at https://github.com/nvuillam/github-dependents-info/
313
+ name: GitHub Dependents Info
314
+
315
+ # Let by default
316
+ on:
317
+ # On manual launch
318
+ workflow_dispatch:
319
+ # On every push on selected branches (usually just main)
320
+ push:
321
+ branches: [main, setup-gdi]
322
+ # Scheduled interval: Use CRON format https://crontab.guru/
323
+ schedule:
324
+ - cron: "0 0 * * 0" # Every sunday at midnight
325
+
326
+ permissions: read-all
327
+
328
+ concurrency:
329
+ group: ${{ github.ref }}-${{ github.workflow }}
330
+ cancel-in-progress: true
331
+
332
+ jobs:
333
+ build:
334
+ name: GitHub Dependents Info
335
+ runs-on: ubuntu-latest
336
+ permissions:
337
+ contents: write
338
+ pull-requests: write
339
+ steps:
340
+ # Git Checkout
341
+ - name: Checkout Code
342
+ uses: actions/checkout@v4
343
+ with:
344
+ token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
345
+ fetch-depth: 0
346
+
347
+ # Collect data & generate markdown
348
+ - name: GitHub Dependents Info
349
+ uses: nvuillam/github-dependents-info@1.3.0
350
+ # See documentation for variables details: https://github.com/nvuillam/github-dependents-info?tab=readme-ov-file#%EF%B8%8F-usage
351
+ with:
352
+ repo: ${{ github.repository }}
353
+ # markdownfile: docs/github-dependents-info.md
354
+ # badgemarkdownfile: README.md
355
+ # sort: stars
356
+ # minstars: "0"
357
+ env:
358
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
359
+
360
+ # Create pull request
361
+ - name: Create Pull Request
362
+ id: cpr
363
+ uses: peter-evans/create-pull-request@v5
364
+ with:
365
+ token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
366
+ branch: github-dependents-info-auto-update
367
+ commit-message: "[GitHub Dependents Info] Updated markdown file(s)"
368
+ delete-branch: true
369
+ title: "[GitHub Dependents Info] Updated markdown file"
370
+ body: "_Generated with [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_"
371
+ labels: documentation
372
+ - name: Create PR output
373
+ run: |
374
+ echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
375
+ echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
376
+ ```
377
+
295
378
  _________________
296
379
  ## 🛡 License
297
380
 
@@ -9,6 +9,8 @@
9
9
  [![Python Version](https://img.shields.io/pypi/pyversions/github-dependents-info.svg)](https://pypi.org/project/github-dependents-info/)
10
10
  [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/nvuillam/github-dependents-info/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)
11
11
 
12
+ [![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/github-dependents-info.svg)](https://github.com/nvuillam/github-dependents-info/graphs/contributors/)
13
+ [![GitHub Sponsors](https://img.shields.io/github/sponsors/nvuillam)](https://github.com/sponsors/nvuillam)
12
14
  [![MegaLinter](https://github.com/nvuillam/github-dependents-info/workflows/MegaLinter/badge.svg?branch=main)](https://oxsecurity.github.io/megalinter)
13
15
  [![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)
14
16
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
@@ -200,6 +202,12 @@ _Generated by [github-dependents-info](https://github.com/nvuillam/github-depend
200
202
  </details>
201
203
 
202
204
  Note: If your repository packages have millions of dependents, running github-dependent-infos could take hours, as it works by browsing and scraping HTML pages returned by GitHub. For example, [angular/angular dependents](assets/angular-package-usage.md) did run during several hours !
205
+
206
+ - [Installation](#⚙️-installation)
207
+ - [Usage](#🛠️-usage)
208
+ - [Examples](#🧪-examples)
209
+ - [Use as GitHub Action](#use-as-github-action)
210
+
203
211
  _________________
204
212
  ## ⚙️ Installation
205
213
 
@@ -263,6 +271,81 @@ _________________
263
271
 
264
272
  github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --mergepackages --verbose
265
273
 
274
+ ## Use as GitHub Action
275
+
276
+ Create a file **.github/workflows/github-dependents-info.yml** in your repository with the following content.
277
+
278
+ If will generate a new Pull Request (or replace the pending one) every time the usage stats will have changed :)
279
+
280
+ ```yaml
281
+ ---
282
+ # GitHub Dependents Info workflow
283
+ # More info at https://github.com/nvuillam/github-dependents-info/
284
+ name: GitHub Dependents Info
285
+
286
+ # Let by default
287
+ on:
288
+ # On manual launch
289
+ workflow_dispatch:
290
+ # On every push on selected branches (usually just main)
291
+ push:
292
+ branches: [main, setup-gdi]
293
+ # Scheduled interval: Use CRON format https://crontab.guru/
294
+ schedule:
295
+ - cron: "0 0 * * 0" # Every sunday at midnight
296
+
297
+ permissions: read-all
298
+
299
+ concurrency:
300
+ group: ${{ github.ref }}-${{ github.workflow }}
301
+ cancel-in-progress: true
302
+
303
+ jobs:
304
+ build:
305
+ name: GitHub Dependents Info
306
+ runs-on: ubuntu-latest
307
+ permissions:
308
+ contents: write
309
+ pull-requests: write
310
+ steps:
311
+ # Git Checkout
312
+ - name: Checkout Code
313
+ uses: actions/checkout@v4
314
+ with:
315
+ token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
316
+ fetch-depth: 0
317
+
318
+ # Collect data & generate markdown
319
+ - name: GitHub Dependents Info
320
+ uses: nvuillam/github-dependents-info@1.3.0
321
+ # See documentation for variables details: https://github.com/nvuillam/github-dependents-info?tab=readme-ov-file#%EF%B8%8F-usage
322
+ with:
323
+ repo: ${{ github.repository }}
324
+ # markdownfile: docs/github-dependents-info.md
325
+ # badgemarkdownfile: README.md
326
+ # sort: stars
327
+ # minstars: "0"
328
+ env:
329
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
330
+
331
+ # Create pull request
332
+ - name: Create Pull Request
333
+ id: cpr
334
+ uses: peter-evans/create-pull-request@v5
335
+ with:
336
+ token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
337
+ branch: github-dependents-info-auto-update
338
+ commit-message: "[GitHub Dependents Info] Updated markdown file(s)"
339
+ delete-branch: true
340
+ title: "[GitHub Dependents Info] Updated markdown file"
341
+ body: "_Generated with [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_"
342
+ labels: documentation
343
+ - name: Create PR output
344
+ run: |
345
+ echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
346
+ echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
347
+ ```
348
+
266
349
  _________________
267
350
  ## 🛡 License
268
351
 
@@ -1,5 +1,6 @@
1
1
  import json
2
2
  import logging
3
+ import os
3
4
  import re
4
5
  from pathlib import Path
5
6
 
@@ -358,11 +359,16 @@ class GithubDependentsInfo:
358
359
  md_lines += [""]
359
360
 
360
361
  # footer
361
- md_lines += ["_Generated by [github-dependents-info](https://github.com/nvuillam/github-dependents-info)_"]
362
+ md_lines += [
363
+ "_Generated using [github-dependents-info]"
364
+ "(https://github.com/nvuillam/github-dependents-info), "
365
+ "by [Nicolas Vuillamy](https://github.com/nvuillam)_"
366
+ ]
362
367
  md_lines_str = "\n".join(md_lines)
363
368
 
364
369
  # Write in file if requested
365
370
  if "file" in options:
371
+ os.makedirs(os.path.dirname(options["file"]), exist_ok=True)
366
372
  with open(options["file"], "w", encoding="utf-8") as f:
367
373
  f.write(md_lines_str)
368
374
  if self.json_output is False:
@@ -375,7 +381,7 @@ class GithubDependentsInfo:
375
381
  else:
376
382
  url = f"https://github.com/{self.repo}/network/dependents"
377
383
  return (
378
- f"[![](https://img.shields.io/static/v1?label={label}&message={str(nb)}"
384
+ f"[![Generated by github-dependents-info](https://img.shields.io/static/v1?label={label}&message={str(nb)}"
379
385
  + f"&color={self.badge_color}&logo=slickpic)]({url})"
380
386
  )
381
387
 
@@ -410,9 +416,15 @@ class GithubDependentsInfo:
410
416
 
411
417
  # Generic method to replace text between tags
412
418
  def replace_in_file(self, file_path, start, end, content, add_new_line=False):
419
+ if not os.path.exists(file_path):
420
+ print(f"[Warning] Can not update badge in not existing file {file_path}")
421
+ return
413
422
  # Read in the file
414
423
  with open(file_path, encoding="utf-8") as file:
415
424
  file_content = file.read()
425
+ if (start not in file_content) or (end not in file_content):
426
+ print(f"[Warning] Can not update badge if it does not contain tags {start} and {end}")
427
+ return
416
428
  # Replace the target string
417
429
  if add_new_line is True:
418
430
  replacement = f"{start}\n{content}\n{end}"
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
 
6
6
  [tool.poetry]
7
7
  name = "github-dependents-info"
8
- version = "1.2.0"
8
+ version = "1.3.0"
9
9
  description = "Collect information about dependencies between a github repo and other repositories. Results available in JSON, markdown and badges."
10
10
  readme = "README.md"
11
11
  authors = ["nvuillam <nicolas.vuillamy@gmail.com>"]
@@ -44,18 +44,18 @@ requests = "^2.31.0"
44
44
  bandit = "^1.7.5"
45
45
  black = {version = "^22.12.0", allow-prereleases = true}
46
46
  darglint = "^1.8.1"
47
- isort = {extras = ["colors"], version = "^5.12.0"}
47
+ isort = {extras = ["colors"], version = "^5.13.2"}
48
48
  mypy = "^1.3"
49
49
  mypy-extensions = "^1.0.0"
50
- pre-commit = "^2.21.0"
50
+ pre-commit = "^3.6.0"
51
51
  pydocstyle = "^6.3.0"
52
- pylint = "^2.17.4"
52
+ pylint = "^3.0.0"
53
53
  pytest = "^7.3.1"
54
54
  pyupgrade = "^3.4.0"
55
55
  safety = "^2.3.5"
56
- coverage = "^6.1.2"
56
+ coverage = "^7.3.3"
57
57
  coverage-badge = "^1.1.0"
58
- pytest-html = "^3.1.1"
58
+ pytest-html = "^4.1.1"
59
59
  pytest-cov = "^4.0.0"
60
60
 
61
61
  [tool.poetry.group.dev.dependencies]
@@ -63,15 +63,15 @@ bandit = "^1.7.4"
63
63
  darglint = "^1.8.1"
64
64
  isort = {extras = ["colors"], version = "^5.12.0"}
65
65
  mypy = "^1.3"
66
- pre-commit = "^2.20.0"
66
+ pre-commit = ">=2.20,<4.0"
67
67
  pydocstyle = "^6.3.0"
68
- pylint = "^2.15.5"
68
+ pylint = "^3.0.0"
69
69
  pytest = "^7.3.1"
70
70
  pyupgrade = "^3.4.0"
71
71
  safety = "^2.3.5"
72
- coverage = "^6.5.0"
72
+ coverage = ">=6.5,<8.0"
73
73
  coverage-badge = "^1.1.0"
74
- pytest-html = "^3.2.0"
74
+ pytest-html = ">=3.2,<5.0"
75
75
  pytest-cov = "^4.0.0"
76
76
 
77
77
  [tool.black]
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ from setuptools import setup
3
+
4
+ packages = \
5
+ ['github_dependents_info']
6
+
7
+ package_data = \
8
+ {'': ['*']}
9
+
10
+ install_requires = \
11
+ ['beautifulsoup4==4.12.2',
12
+ 'pandas>=2.0.0,<3.0.0',
13
+ 'requests>=2.31.0,<3.0.0',
14
+ 'rich>=12.6,<14.0',
15
+ 'typer[all]>=0.4,<0.10']
16
+
17
+ entry_points = \
18
+ {'console_scripts': ['github-dependents-info = '
19
+ 'github_dependents_info.__main__:app']}
20
+
21
+ setup_kwargs = {
22
+ 'name': 'github-dependents-info',
23
+ 'version': '1.3.0',
24
+ 'description': 'Collect information about dependencies between a github repo and other repositories. Results available in JSON, markdown and badges.',
25
+ 'long_description': '# github-dependents-info\n\n<div align="center">\n\n[![PyPI](https://img.shields.io/pypi/v/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![GitHub stars](https://img.shields.io/github/stars/nvuillam/github-dependents-info?cacheSeconds=3600)](https://github.com/nvuillam/github-dependents-info/stargazers/)\n[![Build status](https://github.com/nvuillam/github-dependents-info/workflows/build/badge.svg?branch=main&event=push)](https://github.com/nvuillam/github-dependents-info/actions?query=workflow%3Abuild)\n[![Python Version](https://img.shields.io/pypi/pyversions/github-dependents-info.svg)](https://pypi.org/project/github-dependents-info/)\n[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/nvuillam/github-dependents-info/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)\n\n[![GitHub contributors](https://img.shields.io/github/contributors/nvuillam/github-dependents-info.svg)](https://github.com/nvuillam/github-dependents-info/graphs/contributors/)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/nvuillam)](https://github.com/sponsors/nvuillam)\n[![MegaLinter](https://github.com/nvuillam/github-dependents-info/workflows/MegaLinter/badge.svg?branch=main)](https://oxsecurity.github.io/megalinter)\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nCollect information about dependencies between a github repo and other repositories.\n\n</div>\n\n_________________\n## 🚀 Features\n\nGitHub API does not allow to collect information about package usage (**Used by** on home, **Dependents** in insights section)\n\nThis package uses GitHub HTML to collect dependents information and can:\n\n- Output as text\n- Output as json (including shields.io markdown badges)\n- Generate summary markdown file\n- Update existing markdown by inserting **Used by** badge within tags\n - `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`\n- Handle multiple repositories packages\n- Filter results using minimum stars\n\nBadges example\n\n[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n<details>\n <summary>JSON output</summary>\n\n```json\n{\n "all_public_dependent_repos": [\n {\n "name": "CIT-SeniorDesign/CIT-SeniorDesign.github.io",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/Jobsity-Challenge",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/automation-exercise-cypress",\n "stars": 0\n },\n {\n "name": "RecuencoJones/vscode-groovy-lint-issue",\n "stars": 0\n },\n {\n "name": "aboe026/data-structures",\n "stars": 0\n },\n {\n "name": "aboe026/shields.io-badge-results",\n "stars": 0\n },\n {\n "name": "aboe026/software-update-checker",\n "stars": 2\n },\n {\n "name": "katalon-labs/katalon-recorder-extension",\n "stars": 0\n },\n {\n "name": "mashafrancis/sa-jenkins",\n "stars": 0\n },\n {\n "name": "nvuillam/vscode-groovy-lint",\n "stars": 52\n },\n {\n "name": "run2cmd/dotfiles",\n "stars": 2\n }\n ],\n "packages": [\n {\n "id": null,\n "name": "nvuillam/npm-groovy-lint",\n "url": "https://github.com/nvuillam/npm-groovy-lint/network/dependents",\n "public_dependent_stars": 56,\n "public_dependents": [\n {\n "name": "CIT-SeniorDesign/CIT-SeniorDesign.github.io",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/Jobsity-Challenge",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/automation-exercise-cypress",\n "stars": 0\n },\n {\n "name": "RecuencoJones/vscode-groovy-lint-issue",\n "stars": 0\n },\n {\n "name": "aboe026/data-structures",\n "stars": 0\n },\n {\n "name": "aboe026/shields.io-badge-results",\n "stars": 0\n },\n {\n "name": "aboe026/software-update-checker",\n "stars": 2\n },\n {\n "name": "katalon-labs/katalon-recorder-extension",\n "stars": 0\n },\n {\n "name": "mashafrancis/sa-jenkins",\n "stars": 0\n },\n {\n "name": "nvuillam/vscode-groovy-lint",\n "stars": 52\n },\n {\n "name": "run2cmd/dotfiles",\n "stars": 2\n }\n ],\n "public_dependents_number": 11,\n "private_dependents_number": 4,\n "total_dependents_number": 15,\n "badges": {\n "total": "[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "public": "[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "private": "[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "stars": "[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)"\n }\n }\n ],\n "total_dependents_number": 15,\n "public_dependents_number": 11,\n "private_dependents_number": 4,\n "public_dependents_stars": 56,\n "badges": {\n "total": "[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "public": "[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "private": "[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "stars": "[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)"\n }\n}\n\n```\n</details>\n\n<details>\n <summary>Markdown output for single package</summary>\n\n```markdown\n# Dependents stats for nvuillam/npm-groovy-lint\n\n## Package nvuillam/npm-groovy-lint\n\n[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n| Repository | Stars |\n|:--------------------------------------------------------------------------------------------------------------|------:|\n| [CIT-SeniorDesign/CIT-SeniorDesign.github.io](https://github.com/CIT-SeniorDesign/CIT-SeniorDesign.github.io) | 0 |\n| [Moaz-Adel/Jobsity-Challenge](https://github.com/Moaz-Adel/Jobsity-Challenge) | 0 |\n| [Moaz-Adel/automation-exercise-cypress](https://github.com/Moaz-Adel/automation-exercise-cypress) | 0 |\n| [RecuencoJones/vscode-groovy-lint-issue](https://github.com/RecuencoJones/vscode-groovy-lint-issue) | 0 |\n| [aboe026/data-structures](https://github.com/aboe026/data-structures) | 0 |\n| [aboe026/shields.io-badge-results](https://github.com/aboe026/shields.io-badge-results) | 0 |\n| [aboe026/software-update-checker](https://github.com/aboe026/software-update-checker) | 2 |\n| [katalon-labs/katalon-recorder-extension](https://github.com/katalon-labs/katalon-recorder-extension) | 0 |\n| [mashafrancis/sa-jenkins](https://github.com/mashafrancis/sa-jenkins) | 0 |\n| [nvuillam/vscode-groovy-lint](https://github.com/nvuillam/vscode-groovy-lint) | 52 |\n| [run2cmd/dotfiles](https://github.com/run2cmd/dotfiles) | 2 |\n\n_Generated by [github-dependents-info](https://github.com/nvuillam/github-dependents-info)_\n```\n</details>\n\nNote: If your repository packages have millions of dependents, running github-dependent-infos could take hours, as it works by browsing and scraping HTML pages returned by GitHub. For example, [angular/angular dependents](assets/angular-package-usage.md) did run during several hours !\n\n- [Installation](#⚙️-installation)\n- [Usage](#🛠️-usage)\n- [Examples](#🧪-examples)\n- [Use as GitHub Action](#use-as-github-action)\n\n_________________\n## ⚙️ Installation\n\n```bash\npip install -U github-dependents-info\n```\n\nor install with `Poetry`\n\n```bash\npoetry add github-dependents-info\n```\n\n_________________\n## 🛠️ Usage\n\n```shell\n github-dependents-info [OPTIONS]\n```\n\n| Parameter | Type | Description |\n|-----------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| --repo | String | Repository. Example: `oxsecurity/megalinter` |\n| -b<br/> --badgemarkdownfile | String | _(optional)_ Path to markdown file where to insert/update **Used by** badge <br/> (must contain tags `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`) |\n| -s<br/> --sort | String | _(optional)_ Sort order: name (default) or stars |\n| -x<br/> --minstars | String | _(optional)_ If set, filters repositories to keep only those with more than X stars |\n| -m<br/> --markdownfile | String | _(optional)_ Output markdown file file |\n| -p<br/> --mergepackages | String | _(optional)_ In case of multiple packages, merge their stats in a single one in markdown and json output |\n| -j<br/> --json | String | _(optional)_ Output in json format |\n| -v<br/> --version | Boolean | _(optional)_ Displays version of github-dependents-info |\n| --verbose | Boolean | _(optional)_ Verbose output |\n\n_________________\n## 🧪 Examples\n\n- Text output\n\n github-dependents-info --repo nvuillam/npm-groovy-lint\n\n- JSON output\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --json\n\n- Insert/Update **Used by** markdown badge within an existing markdown file containing tags `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --badgemarkdownfile ./README.md\n\n- Build markdown file with dependent repos (single package), sorted by name\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --verbose\n\n- Build markdown file with dependent repos (single package), with minimum 10 stars\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --minstars 10 --verbose\n\n- Build markdown file with dependent repos (multiple package), sorted by stars\n\n github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --verbose\n\n- Build markdown file with dependent repos (multiple package), with merged list of packages in output markdown\n\n github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --mergepackages --verbose\n\n## Use as GitHub Action\n\nCreate a file **.github/workflows/github-dependents-info.yml** in your repository with the following content.\n\nIf will generate a new Pull Request (or replace the pending one) every time the usage stats will have changed :)\n\n```yaml\n---\n# GitHub Dependents Info workflow\n# More info at https://github.com/nvuillam/github-dependents-info/\nname: GitHub Dependents Info\n\n# Let by default\non:\n # On manual launch\n workflow_dispatch:\n # On every push on selected branches (usually just main)\n push:\n branches: [main, setup-gdi]\n # Scheduled interval: Use CRON format https://crontab.guru/\n schedule:\n - cron: "0 0 * * 0" # Every sunday at midnight\n\npermissions: read-all\n\nconcurrency:\n group: ${{ github.ref }}-${{ github.workflow }}\n cancel-in-progress: true\n\njobs:\n build:\n name: GitHub Dependents Info\n runs-on: ubuntu-latest\n permissions:\n contents: write\n pull-requests: write\n steps:\n # Git Checkout\n - name: Checkout Code\n uses: actions/checkout@v4\n with:\n token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}\n fetch-depth: 0\n\n # Collect data & generate markdown\n - name: GitHub Dependents Info\n uses: nvuillam/github-dependents-info@1.3.0\n # See documentation for variables details: https://github.com/nvuillam/github-dependents-info?tab=readme-ov-file#%EF%B8%8F-usage\n with:\n repo: ${{ github.repository }}\n # markdownfile: docs/github-dependents-info.md\n # badgemarkdownfile: README.md\n # sort: stars\n # minstars: "0"\n env:\n GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n # Create pull request\n - name: Create Pull Request\n id: cpr\n uses: peter-evans/create-pull-request@v5\n with:\n token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}\n branch: github-dependents-info-auto-update\n commit-message: "[GitHub Dependents Info] Updated markdown file(s)"\n delete-branch: true\n title: "[GitHub Dependents Info] Updated markdown file"\n body: "_Generated with [github-dependents-info](https://github.com/nvuillam/github-dependents-info), by [Nicolas Vuillamy](https://github.com/nvuillam)_"\n labels: documentation\n - name: Create PR output\n run: |\n echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"\n echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"\n```\n\n_________________\n## 🛡 License\n\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n\nThis project is licensed under the terms of the `MIT` license. See [LICENSE](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE) for more details.\n\n_________________\n## Credits [![🚀 Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template)\n\nThis package has been inspired by stackexchange post [How to use GitHub API to get a repository\'s dependents information in GitHub?](https://stackoverflow.com/questions/58734176/how-to-use-github-api-to-get-a-repositorys-dependents-information-in-github)\n- [Bertrand Martel](https://github.com/bertrandmartel)\n- [muvaf](https://stackoverflow.com/users/5233252/muvaf)\n- [Mo Ganji](https://www.linkedin.com/in/mohganji/) <!-- markdown-link-check-disable-line -->\n\nThis project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template)\n',
26
+ 'author': 'nvuillam',
27
+ 'author_email': 'nicolas.vuillamy@gmail.com',
28
+ 'maintainer': 'None',
29
+ 'maintainer_email': 'None',
30
+ 'url': 'https://github.com/nvuillam/github-dependents-info',
31
+ 'packages': packages,
32
+ 'package_data': package_data,
33
+ 'install_requires': install_requires,
34
+ 'entry_points': entry_points,
35
+ 'python_requires': '>=3.9,<4.0',
36
+ }
37
+
38
+
39
+ setup(**setup_kwargs)
@@ -1,39 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- from setuptools import setup
3
-
4
- packages = \
5
- ['github_dependents_info']
6
-
7
- package_data = \
8
- {'': ['*']}
9
-
10
- install_requires = \
11
- ['beautifulsoup4==4.12.2',
12
- 'pandas>=2.0.0,<3.0.0',
13
- 'requests>=2.31.0,<3.0.0',
14
- 'rich>=12.6,<14.0',
15
- 'typer[all]>=0.4,<0.10']
16
-
17
- entry_points = \
18
- {'console_scripts': ['github-dependents-info = '
19
- 'github_dependents_info.__main__:app']}
20
-
21
- setup_kwargs = {
22
- 'name': 'github-dependents-info',
23
- 'version': '1.2.0',
24
- 'description': 'Collect information about dependencies between a github repo and other repositories. Results available in JSON, markdown and badges.',
25
- 'long_description': '# github-dependents-info\n\n<div align="center">\n\n[![PyPI](https://img.shields.io/pypi/v/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/github-dependents-info)](https://pypi.org/project/github-dependents-info/)\n[![GitHub stars](https://img.shields.io/github/stars/nvuillam/github-dependents-info?cacheSeconds=3600)](https://github.com/nvuillam/github-dependents-info/stargazers/)\n[![Build status](https://github.com/nvuillam/github-dependents-info/workflows/build/badge.svg?branch=main&event=push)](https://github.com/nvuillam/github-dependents-info/actions?query=workflow%3Abuild)\n[![Python Version](https://img.shields.io/pypi/pyversions/github-dependents-info.svg)](https://pypi.org/project/github-dependents-info/)\n[![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/nvuillam/github-dependents-info/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot)\n\n[![MegaLinter](https://github.com/nvuillam/github-dependents-info/workflows/MegaLinter/badge.svg?branch=main)](https://oxsecurity.github.io/megalinter)\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\nCollect information about dependencies between a github repo and other repositories.\n\n</div>\n\n_________________\n## 🚀 Features\n\nGitHub API does not allow to collect information about package usage (**Used by** on home, **Dependents** in insights section)\n\nThis package uses GitHub HTML to collect dependents information and can:\n\n- Output as text\n- Output as json (including shields.io markdown badges)\n- Generate summary markdown file\n- Update existing markdown by inserting **Used by** badge within tags\n - `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`\n- Handle multiple repositories packages\n- Filter results using minimum stars\n\nBadges example\n\n[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n<details>\n <summary>JSON output</summary>\n\n```json\n{\n "all_public_dependent_repos": [\n {\n "name": "CIT-SeniorDesign/CIT-SeniorDesign.github.io",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/Jobsity-Challenge",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/automation-exercise-cypress",\n "stars": 0\n },\n {\n "name": "RecuencoJones/vscode-groovy-lint-issue",\n "stars": 0\n },\n {\n "name": "aboe026/data-structures",\n "stars": 0\n },\n {\n "name": "aboe026/shields.io-badge-results",\n "stars": 0\n },\n {\n "name": "aboe026/software-update-checker",\n "stars": 2\n },\n {\n "name": "katalon-labs/katalon-recorder-extension",\n "stars": 0\n },\n {\n "name": "mashafrancis/sa-jenkins",\n "stars": 0\n },\n {\n "name": "nvuillam/vscode-groovy-lint",\n "stars": 52\n },\n {\n "name": "run2cmd/dotfiles",\n "stars": 2\n }\n ],\n "packages": [\n {\n "id": null,\n "name": "nvuillam/npm-groovy-lint",\n "url": "https://github.com/nvuillam/npm-groovy-lint/network/dependents",\n "public_dependent_stars": 56,\n "public_dependents": [\n {\n "name": "CIT-SeniorDesign/CIT-SeniorDesign.github.io",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/Jobsity-Challenge",\n "stars": 0\n },\n {\n "name": "Moaz-Adel/automation-exercise-cypress",\n "stars": 0\n },\n {\n "name": "RecuencoJones/vscode-groovy-lint-issue",\n "stars": 0\n },\n {\n "name": "aboe026/data-structures",\n "stars": 0\n },\n {\n "name": "aboe026/shields.io-badge-results",\n "stars": 0\n },\n {\n "name": "aboe026/software-update-checker",\n "stars": 2\n },\n {\n "name": "katalon-labs/katalon-recorder-extension",\n "stars": 0\n },\n {\n "name": "mashafrancis/sa-jenkins",\n "stars": 0\n },\n {\n "name": "nvuillam/vscode-groovy-lint",\n "stars": 52\n },\n {\n "name": "run2cmd/dotfiles",\n "stars": 2\n }\n ],\n "public_dependents_number": 11,\n "private_dependents_number": 4,\n "total_dependents_number": 15,\n "badges": {\n "total": "[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "public": "[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "private": "[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "stars": "[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)"\n }\n }\n ],\n "total_dependents_number": 15,\n "public_dependents_number": 11,\n "private_dependents_number": 4,\n "public_dependents_stars": 56,\n "badges": {\n "total": "[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "public": "[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "private": "[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)",\n "stars": "[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)"\n }\n}\n\n```\n</details>\n\n<details>\n <summary>Markdown output for single package</summary>\n\n```markdown\n# Dependents stats for nvuillam/npm-groovy-lint\n\n## Package nvuillam/npm-groovy-lint\n\n[![](https://img.shields.io/static/v1?label=Used%20by&message=15&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(public)&message=11&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(private)&message=4&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n[![](https://img.shields.io/static/v1?label=Used%20by%20(stars)&message=56&color=informational&logo=slickpic)](https://github.com/nvuillam/npm-groovy-lint/network/dependents)\n\n| Repository | Stars |\n|:--------------------------------------------------------------------------------------------------------------|------:|\n| [CIT-SeniorDesign/CIT-SeniorDesign.github.io](https://github.com/CIT-SeniorDesign/CIT-SeniorDesign.github.io) | 0 |\n| [Moaz-Adel/Jobsity-Challenge](https://github.com/Moaz-Adel/Jobsity-Challenge) | 0 |\n| [Moaz-Adel/automation-exercise-cypress](https://github.com/Moaz-Adel/automation-exercise-cypress) | 0 |\n| [RecuencoJones/vscode-groovy-lint-issue](https://github.com/RecuencoJones/vscode-groovy-lint-issue) | 0 |\n| [aboe026/data-structures](https://github.com/aboe026/data-structures) | 0 |\n| [aboe026/shields.io-badge-results](https://github.com/aboe026/shields.io-badge-results) | 0 |\n| [aboe026/software-update-checker](https://github.com/aboe026/software-update-checker) | 2 |\n| [katalon-labs/katalon-recorder-extension](https://github.com/katalon-labs/katalon-recorder-extension) | 0 |\n| [mashafrancis/sa-jenkins](https://github.com/mashafrancis/sa-jenkins) | 0 |\n| [nvuillam/vscode-groovy-lint](https://github.com/nvuillam/vscode-groovy-lint) | 52 |\n| [run2cmd/dotfiles](https://github.com/run2cmd/dotfiles) | 2 |\n\n_Generated by [github-dependents-info](https://github.com/nvuillam/github-dependents-info)_\n```\n</details>\n\nNote: If your repository packages have millions of dependents, running github-dependent-infos could take hours, as it works by browsing and scraping HTML pages returned by GitHub. For example, [angular/angular dependents](assets/angular-package-usage.md) did run during several hours !\n_________________\n## ⚙️ Installation\n\n```bash\npip install -U github-dependents-info\n```\n\nor install with `Poetry`\n\n```bash\npoetry add github-dependents-info\n```\n\n_________________\n## 🛠️ Usage\n\n```shell\n github-dependents-info [OPTIONS]\n```\n\n| Parameter | Type | Description |\n|-----------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| --repo | String | Repository. Example: `oxsecurity/megalinter` |\n| -b<br/> --badgemarkdownfile | String | _(optional)_ Path to markdown file where to insert/update **Used by** badge <br/> (must contain tags `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`) |\n| -s<br/> --sort | String | _(optional)_ Sort order: name (default) or stars |\n| -x<br/> --minstars | String | _(optional)_ If set, filters repositories to keep only those with more than X stars |\n| -m<br/> --markdownfile | String | _(optional)_ Output markdown file file |\n| -p<br/> --mergepackages | String | _(optional)_ In case of multiple packages, merge their stats in a single one in markdown and json output |\n| -j<br/> --json | String | _(optional)_ Output in json format |\n| -v<br/> --version | Boolean | _(optional)_ Displays version of github-dependents-info |\n| --verbose | Boolean | _(optional)_ Verbose output |\n\n_________________\n## 🧪 Examples\n\n- Text output\n\n github-dependents-info --repo nvuillam/npm-groovy-lint\n\n- JSON output\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --json\n\n- Insert/Update **Used by** markdown badge within an existing markdown file containing tags `<!-- gh-dependents-info-used-by-start --><!-- gh-dependents-info-used-by-end -->`\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --badgemarkdownfile ./README.md\n\n- Build markdown file with dependent repos (single package), sorted by name\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --verbose\n\n- Build markdown file with dependent repos (single package), with minimum 10 stars\n\n github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./docs/package-usage.md --minstars 10 --verbose\n\n- Build markdown file with dependent repos (multiple package), sorted by stars\n\n github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --verbose\n\n- Build markdown file with dependent repos (multiple package), with merged list of packages in output markdown\n\n github-dependents-info --repo oxsecurity/megalinter --markdownfile ./docs/package-usage.md --sort stars --mergepackages --verbose\n\n_________________\n## 🛡 License\n\n[![License](https://img.shields.io/github/license/nvuillam/github-dependents-info)](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE)\n\nThis project is licensed under the terms of the `MIT` license. See [LICENSE](https://github.com/nvuillam/github-dependents-info/blob/master/LICENSE) for more details.\n\n_________________\n## Credits [![🚀 Your next Python package needs a bleeding-edge project structure.](https://img.shields.io/badge/python--package--template-%F0%9F%9A%80-brightgreen)](https://github.com/TezRomacH/python-package-template)\n\nThis package has been inspired by stackexchange post [How to use GitHub API to get a repository\'s dependents information in GitHub?](https://stackoverflow.com/questions/58734176/how-to-use-github-api-to-get-a-repositorys-dependents-information-in-github)\n- [Bertrand Martel](https://github.com/bertrandmartel)\n- [muvaf](https://stackoverflow.com/users/5233252/muvaf)\n- [Mo Ganji](https://www.linkedin.com/in/mohganji/) <!-- markdown-link-check-disable-line -->\n\nThis project was generated with [`python-package-template`](https://github.com/TezRomacH/python-package-template)\n',
26
- 'author': 'nvuillam',
27
- 'author_email': 'nicolas.vuillamy@gmail.com',
28
- 'maintainer': 'None',
29
- 'maintainer_email': 'None',
30
- 'url': 'https://github.com/nvuillam/github-dependents-info',
31
- 'packages': packages,
32
- 'package_data': package_data,
33
- 'install_requires': install_requires,
34
- 'entry_points': entry_points,
35
- 'python_requires': '>=3.9,<4.0',
36
- }
37
-
38
-
39
- setup(**setup_kwargs)