greynoise 2.3.0__tar.gz → 3.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. greynoise-3.0.1/.bumpversion.cfg +29 -0
  2. greynoise-3.0.1/.circleci/config.yml +188 -0
  3. greynoise-3.0.1/.dockerignore +10 -0
  4. greynoise-3.0.1/.editorconfig +19 -0
  5. greynoise-3.0.1/.github/CODEOWNERS +5 -0
  6. greynoise-3.0.1/.github/dependabot.yml +13 -0
  7. greynoise-3.0.1/.github/workflows/slack_release_notice.yml +59 -0
  8. greynoise-3.0.1/.gitignore +113 -0
  9. greynoise-3.0.1/.pre-commit-config.yaml +34 -0
  10. greynoise-3.0.1/.readthedocs.yml +17 -0
  11. greynoise-3.0.1/.yamllint +9 -0
  12. {greynoise-2.3.0 → greynoise-3.0.1}/CHANGELOG.rst +47 -1
  13. greynoise-3.0.1/Dockerfile +9 -0
  14. greynoise-3.0.1/Makefile +0 -0
  15. greynoise-3.0.1/PKG-INFO +132 -0
  16. greynoise-3.0.1/docs/Makefile +20 -0
  17. greynoise-3.0.1/docs/source/changelog.rst +1 -0
  18. greynoise-3.0.1/docs/source/conf.py +62 -0
  19. greynoise-3.0.1/docs/source/index.rst +29 -0
  20. greynoise-3.0.1/docs/source/introduction.rst +20 -0
  21. greynoise-3.0.1/docs/source/reference.rst +59 -0
  22. greynoise-3.0.1/docs/source/sample.py +26 -0
  23. greynoise-3.0.1/docs/source/tutorial.rst +1164 -0
  24. greynoise-3.0.1/pyproject.toml +56 -0
  25. greynoise-3.0.1/pytest.ini +3 -0
  26. greynoise-3.0.1/release.md +92 -0
  27. greynoise-3.0.1/requirements/common.txt +11 -0
  28. greynoise-3.0.1/requirements/dev.txt +5 -0
  29. greynoise-3.0.1/requirements/docs.txt +5 -0
  30. greynoise-3.0.1/requirements/test.txt +16 -0
  31. greynoise-3.0.1/reset_changelog.py +53 -0
  32. {greynoise-2.3.0 → greynoise-3.0.1}/setup.cfg +0 -4
  33. greynoise-3.0.1/sonar-project.properties +13 -0
  34. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/__version__.py +2 -2
  35. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/api/__init__.py +441 -348
  36. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/decorator.py +9 -4
  37. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/formatter.py +24 -25
  38. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/subcommand.py +20 -44
  39. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/analyze.txt.j2 +2 -2
  40. greynoise-3.0.1/src/greynoise/cli/templates/gnql_query.txt.j2 +24 -0
  41. greynoise-3.0.1/src/greynoise/cli/templates/ip_context_result.txt.j2 +112 -0
  42. greynoise-3.0.1/src/greynoise/cli/templates/ip_multi_context.txt.j2 +6 -0
  43. greynoise-3.0.1/src/greynoise/cli/templates/ip_quick_check.txt.j2 +14 -0
  44. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/macros.txt.j2 +23 -2
  45. greynoise-3.0.1/src/greynoise/cli/templates/riot.txt.j2 +32 -0
  46. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/util.py +89 -19
  47. greynoise-3.0.1/tests/cli/test_formatter.py +558 -0
  48. greynoise-3.0.1/tests/cli/test_init.py +21 -0
  49. greynoise-3.0.1/tests/cli/test_subcommand.py +2362 -0
  50. greynoise-3.0.1/tests/test_api.py +1202 -0
  51. {greynoise-2.3.0 → greynoise-3.0.1}/tests/test_util.py +152 -2
  52. greynoise-3.0.1/tox.ini +12 -0
  53. greynoise-2.3.0/PKG-INFO +0 -554
  54. greynoise-2.3.0/setup.py +0 -60
  55. greynoise-2.3.0/src/greynoise/cli/templates/gnql_query.txt.j2 +0 -24
  56. greynoise-2.3.0/src/greynoise/cli/templates/interesting.txt.j2 +0 -4
  57. greynoise-2.3.0/src/greynoise/cli/templates/ip_context_result.txt.j2 +0 -84
  58. greynoise-2.3.0/src/greynoise/cli/templates/ip_multi_context.txt.j2 +0 -70
  59. greynoise-2.3.0/src/greynoise/cli/templates/ip_quick_check.txt.j2 +0 -13
  60. greynoise-2.3.0/src/greynoise/cli/templates/riot.txt.j2 +0 -32
  61. greynoise-2.3.0/src/greynoise.egg-info/PKG-INFO +0 -554
  62. greynoise-2.3.0/src/greynoise.egg-info/SOURCES.txt +0 -46
  63. greynoise-2.3.0/src/greynoise.egg-info/dependency_links.txt +0 -1
  64. greynoise-2.3.0/src/greynoise.egg-info/entry_points.txt +0 -2
  65. greynoise-2.3.0/src/greynoise.egg-info/not-zip-safe +0 -1
  66. greynoise-2.3.0/src/greynoise.egg-info/requires.txt +0 -11
  67. greynoise-2.3.0/src/greynoise.egg-info/top_level.txt +0 -1
  68. greynoise-2.3.0/tests/test_api.py +0 -819
  69. {greynoise-2.3.0 → greynoise-3.0.1}/LICENSE +0 -0
  70. {greynoise-2.3.0 → greynoise-3.0.1}/MANIFEST.in +0 -0
  71. {greynoise-2.3.0 → greynoise-3.0.1}/README.rst +0 -0
  72. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/__init__.py +0 -0
  73. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/api/filter.py +0 -0
  74. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/__init__.py +0 -0
  75. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/helper.py +0 -0
  76. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/parameter.py +0 -0
  77. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/cvedetails.txt.j2 +0 -0
  78. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/gnql_stats.txt.j2 +0 -0
  79. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/ip_community.txt.j2 +0 -0
  80. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/ip_context.txt.j2 +0 -0
  81. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/personadetails.txt.j2 +0 -0
  82. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/sensoractivity.txt.j2 +0 -0
  83. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/sensorlist.txt.j2 +0 -0
  84. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/similarity.txt.j2 +0 -0
  85. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/stats.txt.j2 +0 -0
  86. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/timeline.txt.j2 +0 -0
  87. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/cli/templates/timelinehourly.txt.j2 +0 -0
  88. {greynoise-2.3.0 → greynoise-3.0.1}/src/greynoise/exceptions.py +0 -0
@@ -0,0 +1,29 @@
1
+ [bumpversion]
2
+ current_version = 3.0.1
3
+ tag = False
4
+ commit = False
5
+
6
+ [bumpversion:file:pyproject.toml]
7
+ search = version="{current_version}"
8
+ replace = version="{new_version}"
9
+
10
+ [bumpversion:file:src/greynoise/__version__.py]
11
+ search = __version__ = "{current_version}"
12
+ replace = __version__ = "{new_version}"
13
+
14
+ [bumpversion:file:docs/source/conf.py]
15
+ search = release = "{current_version}"
16
+ replace = release = "{new_version}"
17
+
18
+ [bumpversion:file:CHANGELOG.rst:date]
19
+ search = **Date**: unreleased
20
+ replace = **Date**: {now:%B %d, %Y}
21
+
22
+ [bumpversion:file:CHANGELOG.rst:version]
23
+ search = `dev`
24
+ replace = `{new_version}`
25
+
26
+ [bumpversion:file:CHANGELOG.rst:version_range]
27
+ search = {current_version}...HEAD
28
+ replace = {current_version}...{new_version}
29
+
@@ -0,0 +1,188 @@
1
+ ---
2
+ version: 2.1
3
+
4
+ TAGS_FILTER: &TAGS_FILTER
5
+ tags:
6
+ only: /v.*/
7
+
8
+ workflows:
9
+ version: 2
10
+ build:
11
+ jobs:
12
+ - py38:
13
+ filters:
14
+ <<: *TAGS_FILTER
15
+ - py39:
16
+ filters:
17
+ <<: *TAGS_FILTER
18
+ - py310:
19
+ filters:
20
+ <<: *TAGS_FILTER
21
+ - py311:
22
+ filters:
23
+ <<: *TAGS_FILTER
24
+ - py312:
25
+ filters:
26
+ <<: *TAGS_FILTER
27
+ - sonarcloud:
28
+ requires:
29
+ # generate static analysis and coverage reports in py37 job
30
+ # and upload them to sonarcloud.io in sonarcloud job
31
+ - py39
32
+ - pypi:
33
+ requires:
34
+ # release to pypi only when test cases pass in all python versions
35
+ - py38
36
+ - py39
37
+ - py310
38
+ - py311
39
+ - py312
40
+ filters:
41
+ <<: *TAGS_FILTER
42
+ branches:
43
+ ignore: /.*/
44
+
45
+ DEFAULT_STEPS: &DEFAULT_STEPS
46
+ - checkout
47
+ - run: &CREATE_VIRTUALENV_STEP
48
+ name: Create virtualenv
49
+ command: |
50
+ virtualenv venv
51
+ echo ". venv/bin/activate" >> $BASH_ENV
52
+ - run: &INSTALL_DEPENDENCIES_STEP
53
+ name: Install dependencies
54
+ command: |
55
+ pip install --upgrade pip
56
+ pip install -r requirements/test.txt -e .
57
+ - run:
58
+ name: Test cases
59
+ command: pytest --junitxml=workspace/test_results/pytest.xml tests
60
+ - store_test_results:
61
+ path: workspace/test_results
62
+
63
+ jobs:
64
+ py310:
65
+ docker:
66
+ - image: cimg/python:3.10
67
+ steps:
68
+ - checkout
69
+ - run: *CREATE_VIRTUALENV_STEP
70
+ - run: *INSTALL_DEPENDENCIES_STEP
71
+ - run:
72
+ name: Style check (yamllint)
73
+ command: yamllint .
74
+ - run:
75
+ name: Style check (black)
76
+ command: black --check src tests docs
77
+ - run:
78
+ name: Style check (isort)
79
+ command: isort --check-only src/**/*.py tests/**/*.py docs/**/*.py
80
+ - run:
81
+ name: Style check (rst)
82
+ command: rst-lint *.rst
83
+ - run:
84
+ name: Static analysis (flake8)
85
+ command: flake8 src tests docs
86
+ - run:
87
+ name: Static analysis (pylint)
88
+ command: |
89
+ mkdir workspace
90
+ pylint \
91
+ --exit-zero \
92
+ --reports no \
93
+ --msg-template='{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}' \
94
+ src > workspace/pylint.txt
95
+ - run:
96
+ name: Test cases
97
+ command: |
98
+ . venv/bin/activate
99
+ pytest \
100
+ --cov=greynoise \
101
+ --cov-report=xml:workspace/coverage/report.xml \
102
+ --junitxml=workspace/test_results/pytest.xml \
103
+ tests
104
+ - persist_to_workspace:
105
+ root: workspace
106
+ paths:
107
+ - pylint.txt
108
+ - coverage/report.xml
109
+ - test_results/pytest.xml
110
+ - store_test_results:
111
+ path: workspace/test_results
112
+
113
+ py38:
114
+ docker:
115
+ - image: cimg/python:3.8
116
+ steps: *DEFAULT_STEPS
117
+
118
+ py39:
119
+ docker:
120
+ - image: cimg/python:3.9
121
+ steps: *DEFAULT_STEPS
122
+
123
+ py311:
124
+ docker:
125
+ - image: cimg/python:3.11
126
+ steps: *DEFAULT_STEPS
127
+
128
+ py312:
129
+ docker:
130
+ - image: cimg/python:3.12
131
+ steps: *DEFAULT_STEPS
132
+
133
+ sonarcloud:
134
+ docker:
135
+ - image: cimg/openjdk:21.0
136
+ steps:
137
+ - checkout
138
+ - attach_workspace:
139
+ at: workspace
140
+ - run:
141
+ name: Setup environment variables
142
+ command: |
143
+ echo "SONAR_SCANNER_VERSION=4.5.0.2216" >> $BASH_ENV
144
+ echo \
145
+ 'SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION' \
146
+ >> $BASH_ENV
147
+ - run:
148
+ name: Install sonar scanner
149
+ command: |
150
+ rm -rf $SONAR_SCANNER_HOME
151
+ mkdir -p $SONAR_SCANNER_HOME
152
+ curl \
153
+ -sSLo \
154
+ $HOME/.sonar/sonar-scanner.zip \
155
+ https://repo1.maven.org/maven2/org/sonarsource/scanner/cli/sonar-scanner-cli/$SONAR_SCANNER_VERSION/sonar-scanner-cli-$SONAR_SCANNER_VERSION.zip
156
+ unzip $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
157
+ rm $HOME/.sonar/sonar-scanner.zip
158
+ - run:
159
+ name: Run sonar scanner
160
+ command: |
161
+ export PATH=$SONAR_SCANNER_HOME/bin:$PATH
162
+ export SONAR_SCANNER_OPTS="-server"
163
+ sonar-scanner \
164
+ -Dsonar.login=$SONAR_AUTH_TOKEN \
165
+ -Dsonar.branch.name=$CIRCLE_BRANCH
166
+
167
+ pypi:
168
+ docker:
169
+ - image: cimg/python:3.10
170
+ steps:
171
+ - checkout
172
+ - run: *CREATE_VIRTUALENV_STEP
173
+ - run: *INSTALL_DEPENDENCIES_STEP
174
+ - run:
175
+ name: Install build dependencies
176
+ command: |
177
+ . venv/bin/activate
178
+ pip install build twine
179
+ - run:
180
+ name: Build packages
181
+ command: |
182
+ . venv/bin/activate
183
+ python -m build
184
+ - run:
185
+ name: Upload package to pypi
186
+ command: |
187
+ . venv/bin/activate
188
+ twine upload --username __token__ --disable-progress-bar dist/*
@@ -0,0 +1,10 @@
1
+ # Version control
2
+ .git
3
+
4
+ # Documentation
5
+ docs
6
+
7
+ # Unit test / coverage reports
8
+ .pytest_cache
9
+ .tox
10
+ htmlcov
@@ -0,0 +1,19 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ trim_trailing_whitespace = true
8
+ max_line_length = 100
9
+
10
+ [{*.py,*.rst,tox.ini}]
11
+ indent_style = space
12
+ indent_size = 4
13
+
14
+ [{*.yml,*.yaml,.yamllint}]
15
+ indent_style = space
16
+ indent_size = 2
17
+
18
+ [Makefile]
19
+ indent_style = tab
@@ -0,0 +1,5 @@
1
+ # Github codeowners file to improve our lives when selecting users for PR's
2
+
3
+ * @bradchiappetta @elliottminns @Obsecurus @superducktoes @nathanqthai @ianling
4
+
5
+ /requirements/ @bradchiappetta
@@ -0,0 +1,13 @@
1
+ ---
2
+ # To get started with Dependabot version updates, you'll need to specify which
3
+ # package ecosystems to update and where the package manifests are located.
4
+ # Please see the documentation for all configuration options:
5
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
6
+
7
+ version: 2
8
+ updates:
9
+ - package-ecosystem: "pip" # See documentation for possible values
10
+ directory: "/requirements/" # Location of package manifests
11
+ target-branch: next-release
12
+ schedule:
13
+ interval: "weekly"
@@ -0,0 +1,59 @@
1
+ name: ReleaseNotice
2
+ on:
3
+ release:
4
+ types: [published]
5
+ workflow_dispatch:
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ # To check the github context
11
+ - name: Dump Github context
12
+ env:
13
+ GITHUB_CONTEXT: ${{ toJSON(github) }}
14
+ run: echo "$GITHUB_CONTEXT"
15
+ - name: Slack Notification on SUCCESS
16
+ if: success()
17
+ uses: tokorom/action-slack-incoming-webhook@main
18
+ env:
19
+ INCOMING_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
20
+ with:
21
+ text: A release is published.
22
+ blocks: |
23
+ [
24
+ {
25
+ "type": "header",
26
+ "text": {
27
+ "type": "plain_text",
28
+ "text": "GreyNoise SDK ${{ github.event.release.tag_name}} is published!"
29
+ }
30
+ },
31
+ {
32
+ "type": "section",
33
+ "text": {
34
+ "type": "mrkdwn",
35
+ "text": "*Author:*\n${{ github.actor }}"
36
+ }
37
+ },
38
+ {
39
+ "type": "section",
40
+ "text": {
41
+ "type": "mrkdwn",
42
+ "text": "*Information:*"
43
+ }
44
+ },
45
+ {
46
+ "type": "section",
47
+ "text": {
48
+ "type": "mrkdwn",
49
+ "text": ${{ toJSON(github.event.release.body) }}
50
+ }
51
+ },
52
+ {
53
+ "type": "section",
54
+ "text": {
55
+ "type": "mrkdwn",
56
+ "text": "${{ github.event.release.html_url }}"
57
+ }
58
+ }
59
+ ]
@@ -0,0 +1,113 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ *.swp
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ env/
14
+ build/
15
+ develop-eggs/
16
+ dist/
17
+ downloads/
18
+ eggs/
19
+ .eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ .hypothesis/
50
+
51
+ # Translations
52
+ *.mo
53
+ *.pot
54
+
55
+ # Django stuff:
56
+ *.log
57
+ local_settings.py
58
+
59
+ # Flask stuff:
60
+ instance/
61
+ .webassets-cache
62
+
63
+ # Scrapy stuff:
64
+ .scrapy
65
+
66
+ # Sphinx documentation
67
+ docs/_build/
68
+
69
+ # PyBuilder
70
+ target/
71
+
72
+ # Jupyter Notebook
73
+ .ipynb_checkpoints
74
+
75
+ # pyenv
76
+ .python-version
77
+
78
+ # celery beat schedule file
79
+ celerybeat-schedule
80
+
81
+ # SageMath parsed files
82
+ *.sage.py
83
+
84
+ # dotenv
85
+ .env
86
+
87
+ # virtualenv
88
+ .venv
89
+ venv/
90
+ venv_py2/
91
+ venv3/
92
+ ENV/
93
+ bin/
94
+ pyvenv.cfg
95
+
96
+ # Spyder project settings
97
+ .spyderproject
98
+ .spyproject
99
+
100
+ # Rope project settings
101
+ .ropeproject
102
+
103
+ # mkdocs documentation
104
+ /site
105
+
106
+ # mypy
107
+ .mypy_cache/
108
+
109
+ # idea
110
+ .idea/
111
+ workspace/
112
+
113
+ .DS_Store
@@ -0,0 +1,34 @@
1
+ ---
2
+ repos:
3
+ - repo: local
4
+ hooks:
5
+ - id: yamllint
6
+ name: Style check (yamllint)
7
+ entry: yamllint
8
+ language: system
9
+ types:
10
+ - yaml
11
+ - id: black
12
+ name: Style check (black)
13
+ entry: black
14
+ language: system
15
+ types:
16
+ - python
17
+ - id: isort
18
+ name: Style check (isort)
19
+ entry: isort
20
+ language: system
21
+ types:
22
+ - python
23
+ - id: flake8
24
+ name: Static analysis (flake8)
25
+ entry: flake8
26
+ language: system
27
+ types:
28
+ - python
29
+ - repo: https://github.com/adrienverge/yamllint.git
30
+ rev: v1.17.0
31
+ hooks:
32
+ - id: yamllint
33
+ language: system
34
+ args: [-c=.yamllint]
@@ -0,0 +1,17 @@
1
+ ---
2
+ version: 2
3
+
4
+ build:
5
+ os: ubuntu-22.04
6
+ tools:
7
+ python: "3.12"
8
+
9
+ sphinx:
10
+ builder: html
11
+ configuration: docs/source/conf.py
12
+
13
+ python:
14
+ install:
15
+ - requirements: requirements/docs.txt
16
+ - method: pip
17
+ path: .
@@ -0,0 +1,9 @@
1
+ ---
2
+
3
+ extends: default
4
+
5
+ rules:
6
+ line-length:
7
+ max: 100
8
+
9
+ ignore-from-file: .gitignore
@@ -2,6 +2,50 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version `3.0.1`_
6
+ ================
7
+ **Date**: June 18, 2025
8
+
9
+ * API client:
10
+ * Updated `query` command to use GNQL Metadata endpoint when `exclude_raw` is True
11
+
12
+ Version `3.0.0`_
13
+ ================
14
+ **Date**: June 02, 2025
15
+
16
+ * BREAKING CHANGES:
17
+
18
+ * The `riot` command is deprecated and will be removed in a future version.
19
+ Please use `ip` command instead.
20
+ * Removed support for Python 3.6 and 3.7
21
+ * Many schema changes to the API responses for the `ip`, `ip-multi`, and
22
+ `query` commands
23
+ * Updated API endpoints to v3 for `ip`, `ip-multi`, `quick`, and `query` commands
24
+ * Updated Python version requirements to support Python 3.8 through 3.12
25
+ * SDK now uses `api_config` object to initialize the API client
26
+ * Use modern packaging metadata with pyproject.toml instead of setup.cfg
27
+
28
+ * API client:
29
+
30
+ * Update `ip`, `ip-multi`, `quick`, and `query` commands to use new v3 endpoints
31
+ * Update `ip`, `ip-multi`, `quick`, and `query` commands to return `business_service_intelligence` and
32
+ `internet_scanner_intelligence` attributes
33
+ * Added thread support for multi-lookup requests
34
+ * Added `api_config` object to initialize the API client
35
+
36
+ * CLI:
37
+
38
+ * Update `ip`, `ip-multi`, `quick`, and `query` commands to support new attributes
39
+
40
+ * Dependencies:
41
+
42
+ * Updated `Click` to version 8.1.8
43
+ * Updated `cachetools` to version 5.5.2
44
+ * Updated `dict2xml` to version 1.7.6
45
+ * Updated `jinja2` to version 3.1.6
46
+ * Updated `more-itertools` to version 10.7.0
47
+ * Updated `six` to version 1.17.0
48
+
5
49
  Version `2.3.0`_
6
50
  ================
7
51
  **Date**: July 30, 2024
@@ -429,4 +473,6 @@ Version `0.2.0`_
429
473
  .. _`2.0.1`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.0.0...2.0.1
430
474
  .. _`2.1.0`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.0.1...2.1.0
431
475
  .. _`2.2.0`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.1.0...2.2.0
432
- .. _`2.3.0`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.2.0...HEAD
476
+ .. _`2.3.0`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.2.0...2.3.0
477
+ .. _`3.0.0`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v2.3.0...v3.0.0
478
+ .. _`3.0.1`: https://github.com/GreyNoise-Intelligence/pygreynoise/compare/v3.0.0...HEAD
@@ -0,0 +1,9 @@
1
+ FROM python:3.7-alpine as builder
2
+ COPY . /app
3
+ WORKDIR /app
4
+ RUN pip install -r requirements/common.txt && python3 setup.py bdist_wheel
5
+
6
+ FROM python:3.7-alpine
7
+ COPY --from=builder /app/dist/*.whl /app/
8
+ WORKDIR /app
9
+ RUN pip install /app/*.whl
File without changes