Search GitHub for public repositories that use the skrub package.
Runs a series of GitHub Code Search queries covering:
- Python import statements (
import skrub,from skrub import ...) - Dependency manifest files (
requirements.txt,pyproject.toml,setup.py,setup.cfg,environment.yml,Pipfile)
Results are deduplicated by repository, sorted by stars, and written to both a CSV and a JSON file.
By default, forks of skrub-data/skrub itself are excluded.
python -m venv .venv
source .venv/bin/activate
pip install PyGithubA GitHub personal access token is required (the search API requires authentication). You only need public access — no extra scopes are needed.
Create one at: https://github.com/settings/tokens
Either pass it with --token or set the GITHUB_TOKEN environment variable:
export GITHUB_TOKEN=ghp_xxxxxxxxxxxx# Basic run — search all public repos
python find_skrub_users.py --token ghp_xxx
# Filter results to specific orgs or users
python find_skrub_users.py --token ghp_xxx --orgs inria,scikit-learn-contrib,probabl-ai
# Include forks of skrub-data/skrub (excluded by default)
python find_skrub_users.py --token ghp_xxx --include-skrub-forks
# Write output files to a specific directory
python find_skrub_users.py --token ghp_xxx --output-dir ./results
# Print queries without hitting the API
python find_skrub_users.py --dry-runTwo files are written to --output-dir (default: current directory):
skrub_users_YYYY-MM-DD.csvskrub_users_YYYY-MM-DD.json
Each row/entry represents one unique repository, with these fields:
| Field | Description |
|---|---|
repo_full_name |
owner/repo |
owner |
GitHub username or org |
stars |
Star count at time of scan |
url |
Repository URL |
last_pushed |
ISO 8601 timestamp of last push |
is_fork |
Whether the repo is a fork of anything |
is_skrub_fork |
Whether it is specifically a fork of skrub-data/skrub |
matched_files |
Files that matched (semicolon-separated in CSV) |
matched_queries |
Which search queries found it (semicolon-separated in CSV) |
- The GitHub Code Search API caps results at 1,000 per query. If skrub usage grows significantly, some repos may not appear.
- Only the default branch of each repository is indexed.
- Only repositories active in the last year are indexed by GitHub.
- The search rate limit is 10 requests/minute — the script sleeps between queries automatically.
- Results reflect public repositories only.