### Change Summary

Ruff is now the sole linter 👍 
Files Altered: ['Makefile', 'docs/contributing.md', 'pyproject.toml', 'pdm.lock' ]

Notes: 

For pyproject.toml file,  I removed the last element('E501') of line 180 given black's removal but I'm not totally sure what this line is for. 

### Related Issue Number

Fix #7914

## Checklist

* [x] The pull request title is a good summary of the changes - it will be used in the changelog
* [ ] Unit tests for the changes exist
* [ ] Tests pass on CI
* [x] Documentation reflects the changes where applicable
* [x] My PR is ready to review, **please add a comment including the phrase "please review" to assign reviewers**

Adopting `ruff` formatter. ### Change Summary

Ruff is now the sole linter 👍 
Files Altered: ['Makefile', 'docs/contributing.md', 'pyproject.toml', 'pdm.lock' ]

Notes: 

For pyproject.toml file,  I removed the last element('E501') of line 180 given black's removal but I'm not totally sure what this line is for. 

### Related Issue Number

Fix #7914

## Checklist

* [x] The pull request title is a good summary of the changes - it will be used in the changelog
* [ ] Unit tests for the changes exist
* [ ] Tests pass on CI
* [x] Documentation reflects the changes where applicable
* [x] My PR is ready to review, **please add a comment including the phrase "please review" to assign reviewers**

from pathlib import Path
from time import sleep

import requests
import tomli

THIS_DIR = Path(__file__).parent

session = requests.Session()


def update_lib(lib, *, retry=0):
    repo = lib['repo']
    url = f'https://api.github.com/repos/{repo}'
    resp = session.get(url)
    if resp.status_code == 403 and retry < 3:
        print(f'retrying {repo} {retry}')
        sleep(5)
        return update_lib(lib, retry=retry + 1)

    resp.raise_for_status()
    data = resp.json()
    stars = data['watchers_count']
    print(f'{repo}: {stars}')
    lib['stars'] = stars


with (THIS_DIR / 'using.toml').open('rb') as f:
    table = tomli.load(f)

libs = table['libs']
for lib in libs:
    update_lib(lib)

libs.sort(key=lambda lib: lib['stars'], reverse=True)

with (THIS_DIR / 'using.toml').open('w') as f:
    for lib in libs:
        f.write('[[libs]]\nrepo = "{repo}"\nstars = {stars}\n'.format(**lib))

from pathlib import Path
from time import sleep

import requests
import tomli

THIS_DIR = Path(__file__).parent

session = requests.Session()


def update_lib(lib, *, retry=0):
    repo = lib['repo']
    url = f'https://api.github.com/repos/{repo}'
    resp = session.get(url)
    if resp.status_code == 403 and retry < 3:
        print(f'retrying {repo} {retry}')
        sleep(5)
        return update_lib(lib, retry=retry + 1)

    resp.raise_for_status()
    data = resp.json()
    stars = data['watchers_count']
    print(f'{repo}: {stars}')
    lib['stars'] = stars


with (THIS_DIR / 'using.toml').open('rb') as f:
    table = tomli.load(f)

libs = table['libs']
for lib in libs:
    update_lib(lib)

libs.sort(key=lambda lib: lib['stars'], reverse=True)

with (THIS_DIR / 'using.toml').open('w') as f:
    for lib in libs:
        f.write('[[libs]]\nrepo = "{repo}"\nstars = {stars}\n'.format(**lib))
