52 Commits
v0.7.1 ... main

Author SHA1 Message Date
dependabot[bot]
dcd2a49037 Bump beautifulsoup4 from 4.11.2 to 4.12.3 (#150)
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.11.2 to 4.12.3.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 19:10:17 -05:00
dependabot[bot]
224680a8e1 Bump github/codeql-action from 2 to 3 (#149)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 17:10:01 -05:00
dependabot[bot]
1f4dc1ace9 Bump actions/setup-python from 4 to 5 (#148)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-11 19:12:52 -05:00
dependabot[bot]
e24b7fbaed Bump urllib3 from 1.26.17 to 1.26.18 (#147)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.17 to 1.26.18.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.17...1.26.18)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-17 21:45:53 -04:00
dependabot[bot]
16ca06ef58 Bump urllib3 from 1.26.9 to 1.26.17 (#146)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.9 to 1.26.17.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.9...1.26.17)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-03 06:59:08 -04:00
dependabot[bot]
40cd26166e Bump actions/checkout from 3 to 4 (#145)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 16:45:54 -04:00
dependabot[bot]
f4dd94cfff Bump certifi from 2022.12.7 to 2023.7.22 (#144)
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.12.7 to 2023.7.22.
- [Commits](https://github.com/certifi/python-certifi/compare/2022.12.07...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-19 16:01:45 -04:00
dependabot[bot]
c148897a00 Bump beautifulsoup4 from 4.11.1 to 4.11.2 (#141)
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.11.1 to 4.11.2.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-07 14:58:27 -05:00
dependabot[bot]
ac10720c68 Bump certifi from 2022.6.15 to 2022.12.7 (#140)
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.6.15 to 2022.12.7.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.06.15...2022.12.07)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-09 14:35:00 -05:00
Dave G
260ef74d4e Add json output flag (#139) 2022-07-05 00:11:00 -04:00
dependabot[bot]
3df07dc65e Bump colorama from 0.4.4 to 0.4.5 (#138)
Bumps [colorama](https://github.com/tartley/colorama) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/tartley/colorama/releases)
- [Changelog](https://github.com/tartley/colorama/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tartley/colorama/compare/0.4.4...0.4.5)

---
updated-dependencies:
- dependency-name: colorama
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 16:47:40 -04:00
dependabot[bot]
b96cab1638 Bump actions/setup-python from 3 to 4 (#137)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-13 20:19:53 -04:00
dependabot[bot]
67d3f2db14 Bump pre-commit from 1.21.0 to 2.1.1 (#136)
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 1.21.0 to 2.1.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v1.21.0...v2.1.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-29 11:16:21 -04:00
dependabot[bot]
b0e11ec375 Bump github/codeql-action from 1 to 2 (#133)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-29 11:16:13 -04:00
dependabot[bot]
3421e107b6 Bump actions/checkout from 2 to 3 (#134)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-29 11:16:06 -04:00
dependabot[bot]
3b3aeac80e Bump actions/setup-python from 1 to 3 (#135)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 1 to 3.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-29 11:15:59 -04:00
Dave G
a7e20b77e6 Update dependabot.yml 2022-05-29 10:56:28 -04:00
dependabot[bot]
90af78c5f2 Bump rope from 1.1.0 to 1.1.1 (#132)
Bumps [rope](https://github.com/python-rope/rope) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/compare/1.1.0...1.1.1)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-26 07:27:34 -04:00
dependabot[bot]
9e3a92d548 Bump rope from 1.0.0 to 1.1.0 (#131)
Bumps [rope](https://github.com/python-rope/rope) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/compare/1.0.0...1.1.0)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-25 08:31:14 -04:00
Dave G
9c61c419aa Bump version to 0.8.1 (#130) 2022-05-15 13:19:27 -04:00
Dave G
c38d3f256b Update dependencies (#129)
* Update dependencies

* Add python 3.10
2022-05-15 13:18:10 -04:00
dependabot[bot]
4fa889a64a Bump soupsieve from 2.3.2 to 2.3.2.post1 (#128)
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.3.2 to 2.3.2.post1.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.3.2...2.3.2.post1)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-15 07:30:11 -04:00
dependabot[bot]
aa06127990 Bump beautifulsoup4 from 4.11.0 to 4.11.1 (#127)
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.11.0 to 4.11.1.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 07:19:08 -04:00
dependabot[bot]
47b7785e42 Bump rope from 0.23.0 to 1.0.0 (#126)
Bumps [rope](https://github.com/python-rope/rope) from 0.23.0 to 1.0.0.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/compare/0.23.0...1.0.0)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave G <davegallant@gmail.com>
2022-04-08 07:41:19 -04:00
dependabot[bot]
b8a863650f Bump beautifulsoup4 from 4.10.0 to 4.11.0 (#125)
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.10.0 to 4.11.0.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-08 07:35:38 -04:00
dependabot[bot]
51b2982f28 Bump soupsieve from 2.3.1 to 2.3.2 (#124)
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-07 08:09:29 -04:00
dependabot[bot]
cca01264c6 Bump rope from 0.22.0 to 0.23.0 (#123)
Bumps [rope](https://github.com/python-rope/rope) from 0.22.0 to 0.23.0.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/compare/0.22.0...0.23.0)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-28 07:22:05 -05:00
dependabot[bot]
69ff622629 Bump click from 8.0.3 to 8.0.4 (#122)
Bumps [click](https://github.com/pallets/click) from 8.0.3 to 8.0.4.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.0.3...8.0.4)

---
updated-dependencies:
- dependency-name: click
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-21 09:42:14 -05:00
dependabot[bot]
18f37bfef4 Bump pytest from 7.0.0 to 7.0.1 (#121)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.0.0...7.0.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 07:27:05 -05:00
dependabot[bot]
8cb12bc4b5 Bump urllib3 from 1.26.4 to 1.26.5 (#117)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave G <davegallant@gmail.com>
2022-02-08 11:00:38 -05:00
dependabot[bot]
889f459437 Bump pytest from 6.2.5 to 7.0.0 (#120)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 7.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...7.0.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 07:47:57 -05:00
dependabot[bot]
6e36ddde92 Bump requests from 2.27.0 to 2.27.1 (#119)
Bumps [requests](https://github.com/psf/requests) from 2.27.0 to 2.27.1.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.27.0...v2.27.1)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-06 09:39:13 -05:00
dependabot[bot]
554a057c7f Bump requests from 2.26.0 to 2.27.0 (#118)
Bumps [requests](https://github.com/psf/requests) from 2.26.0 to 2.27.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.26.0...v2.27.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-04 07:12:01 -05:00
dependabot[bot]
aba15cf0c3 Bump rope from 0.20.1 to 0.22.0 (#115)
Bumps [rope](https://github.com/python-rope/rope) from 0.20.1 to 0.22.0.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/commits/0.22.0)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave G <davegallant@gmail.com>
2021-12-05 18:59:36 -05:00
dependabot[bot]
f422135014 Bump soupsieve from 2.2.1 to 2.3.1 (#114)
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.2.1 to 2.3.1.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.2.1...2.3.1)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-05 18:58:56 -05:00
dependabot[bot]
c8a2d8990f Bump pylint from 2.11.1 to 2.12.0 (#116)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.11.1 to 2.12.0.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.11.1...v2.12.0)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-05 18:58:47 -05:00
dependabot[bot]
e2e0323488 Bump click from 8.0.1 to 8.0.3 (#110)
Bumps [click](https://github.com/pallets/click) from 8.0.1 to 8.0.3.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/8.0.1...8.0.3)

---
updated-dependencies:
- dependency-name: click
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-11 23:27:32 -04:00
dependabot[bot]
31ff0e480f Bump pylint from 2.9.6 to 2.11.1 (#108)
* Bump pylint from 2.9.6 to 2.11.1

Bumps [pylint](https://github.com/PyCQA/pylint) from 2.9.6 to 2.11.1.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.9.6...v2.11.1)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Use f strings everywhere

* Add black.yml

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave G <davegallant@gmail.com>
2021-09-25 13:30:01 -04:00
dependabot[bot]
d0103f0733 Bump beautifulsoup4 from 4.9.3 to 4.10.0 (#107)
Bumps [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) from 4.9.3 to 4.10.0.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave G <davegallant@gmail.com>
2021-09-20 16:54:32 -04:00
dependabot[bot]
46af76750e Bump pytest from 6.2.4 to 6.2.5 (#106)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.4...6.2.5)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-20 16:53:47 -04:00
dependabot[bot]
8a9e84a30a Bump rope from 0.19.0 to 0.20.1 (#109)
Bumps [rope](https://github.com/python-rope/rope) from 0.19.0 to 0.20.1.
- [Release notes](https://github.com/python-rope/rope/releases)
- [Changelog](https://github.com/python-rope/rope/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python-rope/rope/commits)

---
updated-dependencies:
- dependency-name: rope
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-20 16:53:16 -04:00
DG
062baa7707 Update README.md (#104) 2021-08-10 00:00:02 -04:00
DG
31ed869d05 Add brew/pipx instructions (#103)
* Add easier ways to install
2021-08-09 23:54:07 -04:00
dependabot[bot]
eb349c0ff9 Bump pylint from 2.9.5 to 2.9.6 (#102)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.9.5 to 2.9.6.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.9.5...v2.9.6)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-29 09:19:13 -04:00
dependabot[bot]
f4afe538e5 Bump pylint from 2.9.3 to 2.9.5 (#101)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.9.3 to 2.9.5.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.9.3...v2.9.5)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-21 09:40:56 -04:00
dependabot[bot]
0cb97f56e7 Bump requests from 2.25.1 to 2.26.0 (#100)
Bumps [requests](https://github.com/psf/requests) from 2.25.1 to 2.26.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.25.1...v2.26.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-14 08:51:47 -04:00
dependabot[bot]
460ea6eef0 Bump click from 7.1.2 to 8.0.1 (#95)
* Bump click from 7.1.2 to 8.0.1

Bumps [click](https://github.com/pallets/click) from 7.1.2 to 8.0.1.
- [Release notes](https://github.com/pallets/click/releases)
- [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/click/compare/7.1.2...8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Get version using importlib.metdata

* Conditionally import metadata

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave Gallant <dave.gallant@rewind.io>
2021-07-11 09:27:36 -04:00
dependabot[bot]
f73fdc71b6 Bump pylint from 2.9.2 to 2.9.3 (#99)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.9.2 to 2.9.3.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.9.2...v2.9.3)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-02 09:27:06 -04:00
dependabot[bot]
398cb19161 Bump pylint from 2.9.0 to 2.9.2 (#98)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.9.0 to 2.9.2.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/main/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.9.0...v2.9.2)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-01 09:54:53 -04:00
dependabot[bot]
1c28c9875e Bump pylint from 2.8.3 to 2.9.0 (#97)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.8.3 to 2.9.0.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/master/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.8.3...v2.9.0)

---
updated-dependencies:
- dependency-name: pylint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-30 11:16:58 -04:00
dependabot[bot]
027e79739e Bump pylint from 2.8.2 to 2.8.3 (#96)
Bumps [pylint](https://github.com/PyCQA/pylint) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/PyCQA/pylint/releases)
- [Changelog](https://github.com/PyCQA/pylint/blob/master/ChangeLog)
- [Commits](https://github.com/PyCQA/pylint/compare/v2.8.2...v2.8.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-01 08:48:45 -04:00
dependabot[bot]
2d98bc54f6 Bump pytest from 6.2.3 to 6.2.4 (#93)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.3...6.2.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-05 07:40:24 -04:00
16 changed files with 691 additions and 510 deletions

View File

@@ -4,5 +4,8 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: weekly interval: weekly
time: "8:00"
open-pull-requests-limit: 10 - package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly

10
.github/workflows/black.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
name: Black
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: psf/black@stable

View File

@@ -13,7 +13,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2 uses: actions/checkout@v4
with: with:
fetch-depth: 2 fetch-depth: 2
@@ -21,7 +21,7 @@ jobs:
if: ${{ github.event_name == 'pull_request' }} if: ${{ github.event_name == 'pull_request' }}
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v3
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v3

View File

@@ -7,9 +7,9 @@ jobs:
if: startsWith(github.ref, 'refs/tags') if: startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@master - uses: actions/checkout@v4
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v1 uses: actions/setup-python@v5
with: with:
python-version: 3.9 python-version: 3.9
- name: Install pypa/build - name: Install pypa/build

View File

@@ -5,21 +5,32 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
python-version: [3.6, 3.7, 3.8, 3.9] python-version: [
"3.6",
"3.7",
"3.8",
"3.9",
"3.10",
]
fail-fast: false
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1 uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install dependencies - name: Install dependencies
run: | run: |
pip install poetry==1.1.6 pip install poetry==1.1.13
poetry install poetry install
- name: Run pre-commit - name: Run pre-commit
run: | run: |
git diff --name-only $TRAVIS_COMMIT_RANGE | xargs poetry run pre-commit run --files git diff --name-only $TRAVIS_COMMIT_RANGE | xargs poetry run pre-commit run --files
- name: Test - name: Test
run: poetry run make ci run: poetry run make ci

View File

@@ -1,4 +1,2 @@
include rfd/VERSION
recursive-exclude * __pycache__ recursive-exclude * __pycache__
recursive-include tests * recursive-include tests *

View File

@@ -12,8 +12,9 @@
- [View Hot Deals](#view-hot-deals) - [View Hot Deals](#view-hot-deals)
- [View and Sort Hot Deals](#view-and-sort-hot-deals) - [View and Sort Hot Deals](#view-and-sort-hot-deals)
- [Search](#search) - [Search](#search)
- [Advanced](#advanced) - [Regex](#regex)
- [View Posts](#view-posts) - [View Posts](#view-posts)
- [JSON Output](#json-output)
- [Shell Completion](#shell-completion) - [Shell Completion](#shell-completion)
- [bash](#bash) - [bash](#bash)
- [zsh](#zsh) - [zsh](#zsh)
@@ -31,14 +32,21 @@ It is often faster to use a CLI than to load up a web page and navigate web elem
## Installation ## Installation
> :information_source: python2 may still work but it is [no longer supported](https://www.python.org/doc/sunset-python-2/). ### pip
```bash ```sh
python3 -m pip install --user rfd pip3 install --user rfd
``` ```
After installation, if you cannot access `rfd` in your path, try `python3 -m rfd`. This can also be installed with [pipx](https://github.com/pypa/pipx).
### brew
If you have [brew](https://brew.sh):
```sh
brew install davegallant/public/rfd
```
## Usage ## Usage
@@ -85,7 +93,7 @@ rfd threads --sort-by views --pages 10
rfd search 'pizza' rfd search 'pizza'
``` ```
#### Advanced #### Regex
Regular expressions can be used for search. Regular expressions can be used for search.
@@ -103,6 +111,16 @@ rfd posts https://forums.redflagdeals.com/kobo-vs-kindle-2396227/
This allows for easy grepping and searching for desired expressions. This allows for easy grepping and searching for desired expressions.
### JSON Output
All commands support JSON output.
For example:
```sh
rfd threads --output json
```
## Shell Completion ## Shell Completion
Shell completion can be enabled if using `bash` or `zsh`. Shell completion can be enabled if using `bash` or `zsh`.

View File

@@ -1 +0,0 @@
rfd/VERSION

919
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "rfd" name = "rfd"
version = "0.7.1" version = "0.9.0"
description = "view RedFlagDeals.com from the command line" description = "view RedFlagDeals.com from the command line"
authors = ["Dave Gallant <davegallant@gmail.com>"] authors = ["Dave Gallant <davegallant@gmail.com>"]
license = "GPL-3.0-or-later" license = "GPL-3.0-or-later"
@@ -8,17 +8,17 @@ readme = "README.md"
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.6" python = "^3.6"
beautifulsoup4 = "<4.9.4" beautifulsoup4 = ">=4.10.1"
click = ">=7.0" click = ">=7.0"
colorama = ">=0.4.3" colorama = ">=0.4.3"
requests = ">=2.22.0" requests = ">=2.22.0"
soupsieve = "<3.0" soupsieve = "<3.0"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pre-commit = "1.21.0" pre-commit = "2.1.1"
pylint = "^2.8.2" pylint = "^2.12.0"
pytest = ">=4.6.6" pytest = ">=4.6.6"
rope = "0.19.0" rope = "1.1.1"
[tool.poetry.scripts] [tool.poetry.scripts]
rfd = "rfd.__main__:cli" rfd = "rfd.__main__:cli"

View File

@@ -1 +0,0 @@
0.7.1

View File

@@ -1,12 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from os.path import dirname, abspath, join
def load_version():
with open(join(dirname(abspath(__file__)), "VERSION")) as handle:
return handle.read()
version = load_version()

View File

@@ -27,7 +27,7 @@ def get_safe_per_page(limit):
def create_user_map(users): def create_user_map(users):
"""Create a map of user ids to usernames.""" """Create a map of user ids to usernames."""
m = dict() m = {}
for user in users: for user in users:
m[user.get("user_id")] = user.get("username") m[user.get("user_id")] = user.get("username")
return m return m
@@ -47,12 +47,12 @@ def get_threads(forum_id, pages):
try: try:
for page in range(1, pages + 1): for page in range(1, pages + 1):
response = requests.get( response = requests.get(
"{}/api/topics?forum_id={}&per_page=40&page={}".format( f"{API_BASE_URL}/api/topics?forum_id={forum_id}&per_page=40&page={page}"
API_BASE_URL, forum_id, page
)
) )
if response.status_code != 200: if response.status_code != 200:
raise Exception("When collecting threads, received a status code: %s" % response.status_code) raise Exception(
f"When collecting threads, received a status code: {response.status_code}"
)
threads += response.json().get("topics") threads += response.json().get("topics")
except JSONDecodeError as err: except JSONDecodeError as err:
logging.error("Unable to decode threads. %s", err) logging.error("Unable to decode threads. %s", err)
@@ -65,7 +65,7 @@ def get_posts(post):
Args: Args:
post (str): either full url or postid post (str): either full url or postid
Yields: Returns:
list(Post): Posts list(Post): Posts
""" """
if is_valid_url(post): if is_valid_url(post):
@@ -76,29 +76,33 @@ def get_posts(post):
raise ValueError() raise ValueError()
response = requests.get( response = requests.get(
"{}/api/topics/{}/posts?per_page=40&page=1".format(API_BASE_URL, post_id) f"{API_BASE_URL}/api/topics/{post_id}/posts?per_page=40&page=1"
) )
total_pages = response.json().get("pager").get("total_pages") total_pages = response.json().get("pager").get("total_pages")
posts = []
for page in range(0, total_pages + 1): for page in range(0, total_pages + 1):
response = requests.get( response = requests.get(
"{}/api/topics/{}/posts?per_page={}&page={}".format( f"{API_BASE_URL}/api/topics/{post_id}/posts?per_page=40&page={page}"
API_BASE_URL, post_id, 40, page
)
) )
users = create_user_map(response.json().get("users")) users = create_user_map(response.json().get("users"))
posts = response.json().get("posts") current_posts = response.json().get("posts")
for i in posts: for _post in current_posts:
# Sometimes votes is null # Sometimes votes is null
if i.get("votes") is not None: if _post.get("votes") is not None:
calculated_score = calculate_score(i) calculated_score = calculate_score(_post)
else: else:
calculated_score = 0 calculated_score = 0
yield Post( posts.append(
body=strip_html(i.get("body")), Post(
score=calculated_score, body=strip_html(_post.get("body")),
user=users[i.get("author_id")], score=calculated_score,
user=users[_post.get("author_id")],
)
) )
return posts

View File

@@ -3,12 +3,24 @@ from __future__ import unicode_literals
import logging import logging
import sys import sys
import json
import click import click
try:
from importlib import metadata
except ImportError: # for Python<3.8
import importlib_metadata as metadata
from colorama import init from colorama import init
from .api import get_threads, get_posts from .api import get_threads, get_posts
from .threads import parse_threads, search_threads, sort_threads, generate_thread_output from .threads import (
from .posts import generate_posts_output parse_threads,
from .__version__ import version as current_version search_threads,
sort_threads,
generate_thread_output,
ThreadEncoder,
)
from .posts import generate_posts_output, PostEncoder
init() init()
@@ -18,12 +30,13 @@ logging.getLogger().addHandler(logging.StreamHandler())
def get_version(): def get_version():
return "rfd v" + current_version return "rfd v" + metadata.version("rfd")
def print_version(ctx, value):
def print_version(ctx, _, value):
if not value or ctx.resilient_parsing: if not value or ctx.resilient_parsing:
return return
click.echo(get_version(), nl=False) click.echo(get_version(), nl=True)
ctx.exit() ctx.exit()
@@ -45,7 +58,10 @@ def cli(ctx):
@cli.command(short_help="Display all posts in a thread.") @cli.command(short_help="Display all posts in a thread.")
@click.argument("post_id") @click.argument("post_id")
def posts(post_id): @click.option(
"--output", default=None, help="Defaults to custom formatting. Other options: json"
)
def posts(post_id, output):
"""Iterate all pages and display all posts in a thread. """Iterate all pages and display all posts in a thread.
post_id can be a full url or post id only post_id can be a full url or post id only
@@ -57,12 +73,23 @@ def posts(post_id):
""" """
try: try:
click.echo_via_pager(generate_posts_output(get_posts(post=post_id))) if output == "json":
click.echo_via_pager(
json.dumps(
get_posts(post=post_id),
cls=PostEncoder,
indent=2,
sort_keys=True,
)
)
else:
click.echo_via_pager(generate_posts_output(get_posts(post=post_id)))
except ValueError: except ValueError:
click.echo("Invalid post id.") click.echo("Invalid post id.")
sys.exit(1) sys.exit(1)
except AttributeError: except AttributeError as err:
click.echo("The RFD API did not return the expected data.") click.echo("The RFD API did not return the expected data. %s", err)
sys.exit(1) sys.exit(1)
@@ -70,7 +97,10 @@ def posts(post_id):
@click.option("--forum-id", default=9, help="The forum id number") @click.option("--forum-id", default=9, help="The forum id number")
@click.option("--pages", default=1, help="Number of pages to show. Defaults to 1.") @click.option("--pages", default=1, help="Number of pages to show. Defaults to 1.")
@click.option("--sort-by", default=None, help="Sort threads by") @click.option("--sort-by", default=None, help="Sort threads by")
def threads(forum_id, pages, sort_by): @click.option(
"--output", default=None, help="Defaults to custom formatting. Other options: json"
)
def threads(forum_id, pages, sort_by, output):
"""Display threads in the specified forum id. Defaults to 9 (hot deals). """Display threads in the specified forum id. Defaults to 9 (hot deals).
Popular forum ids: Popular forum ids:
@@ -87,8 +117,21 @@ def threads(forum_id, pages, sort_by):
74 \t shopping discussion 74 \t shopping discussion
88 \t cell phones 88 \t cell phones
""" """
_threads = sort_threads(parse_threads(get_threads(forum_id, pages)), sort_by=sort_by) _threads = sort_threads(
click.echo_via_pager(generate_thread_output(_threads)) parse_threads(get_threads(forum_id, pages)), sort_by=sort_by
)
if output == "json":
click.echo_via_pager(
json.dumps(
sort_threads(_threads, sort_by=sort_by),
cls=ThreadEncoder,
indent=2,
sort_keys=True,
)
)
else:
click.echo_via_pager(generate_thread_output(_threads))
@cli.command(short_help="Search deals based on a regular expression.") @cli.command(short_help="Search deals based on a regular expression.")
@@ -97,8 +140,11 @@ def threads(forum_id, pages, sort_by):
"--forum-id", default=9, help="The forum id number. Defaults to 9 (hot deals)." "--forum-id", default=9, help="The forum id number. Defaults to 9 (hot deals)."
) )
@click.option("--sort-by", default=None, help="Sort threads by") @click.option("--sort-by", default=None, help="Sort threads by")
@click.option(
"--output", default=None, help="Defaults to custom formatting. Other options: json"
)
@click.argument("regex") @click.argument("regex")
def search(pages, forum_id, sort_by, regex): def search(pages, forum_id, sort_by, output, regex):
"""Search deals based on regex. """Search deals based on regex.
Popular forum ids: Popular forum ids:
@@ -121,6 +167,17 @@ def search(pages, forum_id, sort_by, regex):
_threads = parse_threads(get_threads(forum_id, pages=pages)) _threads = parse_threads(get_threads(forum_id, pages=pages))
for thread in search_threads(threads=_threads, regex=regex): for thread in search_threads(threads=_threads, regex=regex):
matched_threads.append(thread) matched_threads.append(thread)
click.echo_via_pager(
generate_thread_output(sort_threads(matched_threads, sort_by=sort_by)) if output == "json":
) click.echo_via_pager(
json.dumps(
sort_threads(matched_threads, sort_by=sort_by),
indent=2,
sort_keys=True,
cls=ThreadEncoder,
)
)
else:
click.echo_via_pager(
generate_thread_output(sort_threads(matched_threads, sort_by=sort_by))
)

View File

@@ -1,21 +1,36 @@
# pylint: disable=old-style-class # pylint: disable=old-style-class
import os import os
import json
from colorama import Fore, Style from colorama import Fore, Style
from .scores import get_vote_color from .scores import get_vote_color
class Post: class Post:
def __init__(self, body, score, user): def __init__(self, body, score, user):
self.body = body self.body = body
self.score = score self.score = score
self.user = user self.user = user
class PostEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, Post):
return dict(
body=o.body,
score=o.score,
user=o.user,
)
return json.JSONEncoder.default(self, o)
def get_terminal_width(): def get_terminal_width():
_, columns = os.popen("stty size", "r").read().split() _, columns = os.popen("stty size", "r").read().split()
return int(columns) return int(columns)
def generate_posts_output(posts): def generate_posts_output(posts):
output = "" output = ""
output += ("-" * get_terminal_width()) output += "-" * get_terminal_width()
for post in posts: for post in posts:
output += ( output += (
" -" " -"
@@ -23,10 +38,10 @@ def generate_posts_output(posts):
+ Fore.RESET + Fore.RESET
+ post.body + post.body
+ Fore.YELLOW + Fore.YELLOW
+ " ({})".format(post.user) + f" ({post.user})"
) )
output += (Style.RESET_ALL) output += Style.RESET_ALL
output += "\n" output += "\n"
output += ("-" * get_terminal_width()) output += "-" * get_terminal_width()
output += "\n" output += "\n"
return output return output

View File

@@ -1,9 +1,10 @@
import re import re
import json
from colorama import Fore, Style from colorama import Fore, Style
from . import API_BASE_URL from . import API_BASE_URL
from .scores import calculate_score, get_vote_color from .scores import calculate_score, get_vote_color
# pylint: disable=old-style-class
class Thread: class Thread:
def __init__(self, title, dealer_name, score, url, views): def __init__(self, title, dealer_name, score, url, views):
self.dealer_name = dealer_name self.dealer_name = dealer_name
@@ -13,11 +14,24 @@ class Thread:
self.views = views self.views = views
def __repr__(self): def __repr__(self):
return "Thread(%s)" % self.title return f"Thread({self.title})"
class ThreadEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, Thread):
return dict(
dealer_name=o.dealer_name,
score=o.score,
title=o.title,
url=o.url,
views=o.views,
)
return json.JSONEncoder.default(self, o)
def build_web_path(slug): def build_web_path(slug):
return "{}{}".format(API_BASE_URL, slug) return f"{API_BASE_URL}{slug}"
def get_dealer(topic): def get_dealer(topic):
@@ -88,12 +102,12 @@ def generate_thread_output(threads):
+ "." + "."
+ get_vote_color(thread.score) + get_vote_color(thread.score)
+ Fore.RESET + Fore.RESET
+ "%s%s" % (dealer, thread.title) + f"{dealer}{thread.title}"
+ Fore.LIGHTYELLOW_EX + Fore.LIGHTYELLOW_EX
+ " (%d views)" % thread.views + f" ({thread.views} views)"
+ Fore.RESET + Fore.RESET
) )
output += Fore.BLUE + " {}".format(thread.url) output += Fore.BLUE + f" {thread.url}"
output += Style.RESET_ALL output += Style.RESET_ALL
output += "\n\n" output += "\n\n"
yield output yield output