regscale-cli 6.19.0.1__py3-none-any.whl → 6.19.2.0__py3-none-any.whl
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.
Potentially problematic release.
This version of regscale-cli might be problematic. Click here for more details.
- regscale/__init__.py +1 -1
- regscale/core/app/utils/app_utils.py +1 -1
- regscale/integrations/commercial/amazon/common.py +5 -4
- regscale/integrations/commercial/aws/scanner.py +3 -2
- regscale/integrations/commercial/synqly/assets.py +10 -0
- regscale/integrations/commercial/synqly/ticketing.py +25 -0
- regscale/integrations/commercial/tenablev2/commands.py +34 -4
- regscale/integrations/commercial/tenablev2/sync_compliance.py +550 -0
- regscale/integrations/commercial/wizv2/click.py +3 -3
- regscale/integrations/scanner_integration.py +3 -2
- regscale/models/app_models/import_validater.py +2 -0
- regscale/models/integration_models/cisa_kev_data.json +188 -10
- regscale/models/integration_models/flat_file_importer/__init__.py +26 -9
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/regscale_models/assessment_plan.py +1 -1
- regscale/models/regscale_models/assessment_result.py +39 -0
- regscale/models/regscale_models/line_of_inquiry.py +2 -2
- regscale/models/regscale_models/regscale_model.py +16 -15
- regscale/models/regscale_models/software_inventory.py +1 -1
- regscale/models/regscale_models/supply_chain.py +4 -4
- regscale/models/regscale_models/user.py +11 -0
- regscale/utils/graphql_client.py +2 -1
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/METADATA +45 -45
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/RECORD +28 -26
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.19.0.1.dist-info → regscale_cli-6.19.2.0.dist-info}/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ from typing import Optional, Union
|
|
|
4
4
|
from pydantic import Field, ConfigDict
|
|
5
5
|
|
|
6
6
|
from regscale.core.app.utils.app_utils import get_current_datetime
|
|
7
|
-
from regscale.models.regscale_models import RegScaleModel
|
|
7
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AssesmentPlanArea(str, Enum):
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Optional, Union
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from pydantic import Field, ConfigDict
|
|
6
|
+
|
|
7
|
+
from regscale.core.app.utils.app_utils import get_current_datetime
|
|
8
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AssessmentResult(RegScaleModel):
|
|
12
|
+
"""Assessment Results Model"""
|
|
13
|
+
|
|
14
|
+
_module_slug = "assessmentresults"
|
|
15
|
+
_unique_fields = ["id"]
|
|
16
|
+
|
|
17
|
+
id: int = 0
|
|
18
|
+
isPublic: bool = True
|
|
19
|
+
uuid: Optional[str] = None
|
|
20
|
+
status: Optional[str] = None
|
|
21
|
+
loqId: Optional[int] = 0
|
|
22
|
+
lineOfInquiry: Optional[str] = None
|
|
23
|
+
requirement: Optional[str] = None
|
|
24
|
+
citation: Optional[str] = None
|
|
25
|
+
weight: Optional[int] = 0
|
|
26
|
+
responsibility: Optional[str] = None
|
|
27
|
+
guidance: Optional[str] = None
|
|
28
|
+
observations: Optional[str] = None
|
|
29
|
+
recommendations: Optional[str] = None
|
|
30
|
+
issuesIdentified: Optional[str] = None
|
|
31
|
+
riskAssessment: Optional[str] = None
|
|
32
|
+
samplingMethodology: Optional[str] = None
|
|
33
|
+
fixedDuringAssessment: bool = False
|
|
34
|
+
bComplete: bool = False
|
|
35
|
+
parentAssessmentId: Optional[int] = 0
|
|
36
|
+
dataDate: Optional[str] = Field(default_factory=get_current_datetime)
|
|
37
|
+
dataString: Optional[datetime] = None
|
|
38
|
+
dataDecimal: Optional[float] = 0.0
|
|
39
|
+
dataBoolean: Optional[bool] = False
|
|
@@ -4,7 +4,7 @@ from typing import Optional, Union
|
|
|
4
4
|
from pydantic import Field, ConfigDict
|
|
5
5
|
|
|
6
6
|
from regscale.core.app.utils.app_utils import get_current_datetime
|
|
7
|
-
from regscale.models.regscale_models import RegScaleModel
|
|
7
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class LoIType(str, Enum):
|
|
@@ -48,5 +48,5 @@ class LinesOfInquiry(RegScaleModel):
|
|
|
48
48
|
:rtype: ConfigDict
|
|
49
49
|
"""
|
|
50
50
|
return ConfigDict( # type: ignore
|
|
51
|
-
get_all_by_parent="/api/{model_slug}/getAllByParent/{
|
|
51
|
+
get_all_by_parent="/api/{model_slug}/getAllByParent/{intParentID}",
|
|
52
52
|
)
|
|
@@ -32,6 +32,8 @@ T = TypeVar("T", bound="RegScaleModel")
|
|
|
32
32
|
|
|
33
33
|
logger = logging.getLogger("regscale")
|
|
34
34
|
|
|
35
|
+
IS_DISABLE_CACHE = False # flag to disable caching
|
|
36
|
+
|
|
35
37
|
|
|
36
38
|
class RegScaleModel(BaseModel, ABC):
|
|
37
39
|
"""Mixin class for RegScale Models to add functionality to interact with RegScale API"""
|
|
@@ -52,8 +54,6 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
52
54
|
_exclude_graphql_fields: ClassVar[List[str]] = ["extra_data", "tenantsId"]
|
|
53
55
|
_original_data: Optional[Dict[str, Any]] = None
|
|
54
56
|
|
|
55
|
-
# Caching
|
|
56
|
-
_disable_cache: bool = False # flag to disable caching
|
|
57
57
|
_object_cache: ClassVar[Cache] = Cache(maxsize=100000)
|
|
58
58
|
_parent_cache: ClassVar[Cache] = Cache(maxsize=50000)
|
|
59
59
|
_lock_registry: ClassVar[ThreadSafeDict] = ThreadSafeDict()
|
|
@@ -78,11 +78,12 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
78
78
|
:rtype: None
|
|
79
79
|
"""
|
|
80
80
|
try:
|
|
81
|
+
global IS_DISABLE_CACHE
|
|
81
82
|
super().__init__(*args, **data)
|
|
82
83
|
# Capture initial state after initialization
|
|
83
84
|
self._original_data = self.dict(exclude_unset=True)
|
|
84
|
-
|
|
85
|
-
if
|
|
85
|
+
IS_DISABLE_CACHE = self._fetch_disabled_cache_setting()
|
|
86
|
+
if IS_DISABLE_CACHE:
|
|
86
87
|
logger.debug("cache is disabled")
|
|
87
88
|
except Exception as e:
|
|
88
89
|
logger.error(f"Error creating {self.__class__.__name__}: {e} {data}", exc_info=True)
|
|
@@ -107,8 +108,9 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
107
108
|
:return: True if caching is disabled, False otherwise
|
|
108
109
|
:rtype: bool
|
|
109
110
|
"""
|
|
110
|
-
|
|
111
|
-
|
|
111
|
+
global IS_DISABLE_CACHE
|
|
112
|
+
IS_DISABLE_CACHE = True
|
|
113
|
+
return IS_DISABLE_CACHE
|
|
112
114
|
|
|
113
115
|
@classmethod
|
|
114
116
|
def enable_cache(cls) -> bool:
|
|
@@ -118,8 +120,9 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
118
120
|
:return: True if caching is enabled, False otherwise
|
|
119
121
|
:rtype: bool
|
|
120
122
|
"""
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
global IS_DISABLE_CACHE
|
|
124
|
+
IS_DISABLE_CACHE = False
|
|
125
|
+
return IS_DISABLE_CACHE
|
|
123
126
|
|
|
124
127
|
@classmethod
|
|
125
128
|
def _get_api_handler(cls) -> APIHandler:
|
|
@@ -207,7 +210,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
207
210
|
:return: The cached object if found, None otherwise
|
|
208
211
|
:rtype: Optional[T]
|
|
209
212
|
"""
|
|
210
|
-
if
|
|
213
|
+
if IS_DISABLE_CACHE:
|
|
211
214
|
return None
|
|
212
215
|
with cls._get_lock(cache_key):
|
|
213
216
|
return cls._object_cache.get(cache_key)
|
|
@@ -221,7 +224,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
221
224
|
:return: None
|
|
222
225
|
:rtype: None
|
|
223
226
|
"""
|
|
224
|
-
if
|
|
227
|
+
if IS_DISABLE_CACHE:
|
|
225
228
|
return
|
|
226
229
|
try:
|
|
227
230
|
if not obj:
|
|
@@ -271,7 +274,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
271
274
|
:return: None
|
|
272
275
|
:rtype: None
|
|
273
276
|
"""
|
|
274
|
-
if
|
|
277
|
+
if IS_DISABLE_CACHE:
|
|
275
278
|
return
|
|
276
279
|
parent_id = getattr(obj, cls._parent_id_field, None)
|
|
277
280
|
parent_module = getattr(obj, "parentModule", getattr(obj, "parent_module", ""))
|
|
@@ -296,7 +299,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
296
299
|
:return: None
|
|
297
300
|
:rtype: None
|
|
298
301
|
"""
|
|
299
|
-
if
|
|
302
|
+
if IS_DISABLE_CACHE:
|
|
300
303
|
return
|
|
301
304
|
with cls._get_lock(cache_key):
|
|
302
305
|
for obj in objects:
|
|
@@ -311,8 +314,6 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
311
314
|
:return: None
|
|
312
315
|
:rtype: None
|
|
313
316
|
"""
|
|
314
|
-
if cls._disable_cache:
|
|
315
|
-
return
|
|
316
317
|
cls._object_cache.clear()
|
|
317
318
|
|
|
318
319
|
@classmethod
|
|
@@ -324,7 +325,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
324
325
|
:return: None
|
|
325
326
|
:rtype: None
|
|
326
327
|
"""
|
|
327
|
-
if
|
|
328
|
+
if IS_DISABLE_CACHE:
|
|
328
329
|
return
|
|
329
330
|
cache_key = cls._get_cache_key(obj)
|
|
330
331
|
with cls._get_lock(cache_key):
|
|
@@ -9,7 +9,7 @@ from pydantic import ConfigDict, Field
|
|
|
9
9
|
from regscale.core.app.api import Api
|
|
10
10
|
from regscale.core.app.application import Application
|
|
11
11
|
from regscale.core.app.utils.app_utils import get_current_datetime
|
|
12
|
-
from regscale.models.regscale_models import RegScaleModel
|
|
12
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class SoftwareInventory(RegScaleModel):
|
|
@@ -6,7 +6,7 @@ from typing import Optional, Union
|
|
|
6
6
|
|
|
7
7
|
from pydantic import ConfigDict, Field
|
|
8
8
|
|
|
9
|
-
from .regscale_model import RegScaleModel
|
|
9
|
+
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
10
10
|
|
|
11
11
|
logger = logging.getLogger("regscale")
|
|
12
12
|
|
|
@@ -103,9 +103,9 @@ class SupplyChain(RegScaleModel):
|
|
|
103
103
|
parentModule: Optional[str] = None
|
|
104
104
|
orgId: Optional[int] = None
|
|
105
105
|
facilityId: Optional[int] = None
|
|
106
|
-
contractValue: Optional[
|
|
107
|
-
fundedAmount: Optional[
|
|
108
|
-
actualCosts: Optional[
|
|
106
|
+
contractValue: Optional[float] = 0.0
|
|
107
|
+
fundedAmount: Optional[float] = 0.0
|
|
108
|
+
actualCosts: Optional[float] = 0.0
|
|
109
109
|
scope: Optional[str] = None
|
|
110
110
|
startDate: Optional[str] = None
|
|
111
111
|
endDate: Optional[str] = None
|
|
@@ -175,6 +175,17 @@ class User(RegScaleModel):
|
|
|
175
175
|
response = cls._get_api_handler().get(endpoint=cls.get_endpoint("get_all"))
|
|
176
176
|
return cast(List[T], cls._handle_list_response(response))
|
|
177
177
|
|
|
178
|
+
@classmethod
|
|
179
|
+
def get_roles(cls) -> List["User"]:
|
|
180
|
+
"""
|
|
181
|
+
Get all roles from RegScale
|
|
182
|
+
|
|
183
|
+
:return: List of RegScale roles
|
|
184
|
+
:rtype: dict
|
|
185
|
+
"""
|
|
186
|
+
response = cls._get_api_handler().get(endpoint=cls.get_endpoint("get_roles"))
|
|
187
|
+
return cast(List[T], cls._handle_list_response(response))
|
|
188
|
+
|
|
178
189
|
def assign_role(self, role_id: str) -> bool:
|
|
179
190
|
"""
|
|
180
191
|
Assign a role to a user
|
regscale/utils/graphql_client.py
CHANGED
|
@@ -27,6 +27,7 @@ class PaginatedGraphQLClient:
|
|
|
27
27
|
headers: Optional[Dict[str, str]] = None,
|
|
28
28
|
logging_level: str = logging.CRITICAL,
|
|
29
29
|
) -> None:
|
|
30
|
+
from regscale.integrations.variables import ScannerVariables
|
|
30
31
|
from gql import gql, Client # Optimize import performance
|
|
31
32
|
from gql.transport.requests import RequestsHTTPTransport
|
|
32
33
|
from gql.transport.requests import log as requests_logger
|
|
@@ -35,7 +36,7 @@ class PaginatedGraphQLClient:
|
|
|
35
36
|
self.endpoint = endpoint
|
|
36
37
|
self.query = gql(query)
|
|
37
38
|
self.headers = headers or {} # Ensure headers are a dictionary
|
|
38
|
-
self.transport = RequestsHTTPTransport(url=endpoint, headers=self.headers)
|
|
39
|
+
self.transport = RequestsHTTPTransport(url=endpoint, headers=self.headers, verify=ScannerVariables.sslVerify)
|
|
39
40
|
self.client = Client(transport=self.transport)
|
|
40
41
|
self.job_progress = create_progress_object()
|
|
41
42
|
requests_logger.setLevel(level=self.log_level)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: regscale-cli
|
|
3
|
-
Version: 6.19.0
|
|
3
|
+
Version: 6.19.2.0
|
|
4
4
|
Summary: Command Line Interface (CLI) for bulk processing/loading data into RegScale
|
|
5
5
|
Home-page: https://github.com/RegScale/regscale-cli
|
|
6
6
|
Author: Travis Howerton
|
|
@@ -22,10 +22,10 @@ Requires-Dist: boto3 ==1.35.10
|
|
|
22
22
|
Requires-Dist: botocore ==1.35.10
|
|
23
23
|
Requires-Dist: bs4
|
|
24
24
|
Requires-Dist: cacheout
|
|
25
|
-
Requires-Dist: click
|
|
25
|
+
Requires-Dist: click >=8.1.3
|
|
26
26
|
Requires-Dist: colorama ==0.4.5
|
|
27
27
|
Requires-Dist: crowdstrike-falconpy ==1.4.5
|
|
28
|
-
Requires-Dist: cryptography >=
|
|
28
|
+
Requires-Dist: cryptography >=44.0.1
|
|
29
29
|
Requires-Dist: distro ==1.8.0
|
|
30
30
|
Requires-Dist: docx ==0.2.4
|
|
31
31
|
Requires-Dist: filelock ~=3.13.1
|
|
@@ -43,16 +43,16 @@ Requires-Dist: markdown
|
|
|
43
43
|
Requires-Dist: matplotlib
|
|
44
44
|
Requires-Dist: msal ~=1.30.0
|
|
45
45
|
Requires-Dist: nessus-file-reader
|
|
46
|
-
Requires-Dist: numpy
|
|
46
|
+
Requires-Dist: numpy ~=2.0.0
|
|
47
47
|
Requires-Dist: openpyxl
|
|
48
48
|
Requires-Dist: packaging ~=23.1
|
|
49
49
|
Requires-Dist: pandas
|
|
50
50
|
Requires-Dist: pathlib ~=1.0.1
|
|
51
51
|
Requires-Dist: pdfplumber ==0.7.6
|
|
52
52
|
Requires-Dist: pre-commit
|
|
53
|
-
Requires-Dist: psutil
|
|
53
|
+
Requires-Dist: psutil ~=6.1.0
|
|
54
54
|
Requires-Dist: pyTenable
|
|
55
|
-
Requires-Dist: pydantic ~=2.
|
|
55
|
+
Requires-Dist: pydantic ~=2.11.0
|
|
56
56
|
Requires-Dist: pypandoc
|
|
57
57
|
Requires-Dist: pypandoc-binary
|
|
58
58
|
Requires-Dist: pytest
|
|
@@ -78,16 +78,16 @@ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'airflow'
|
|
|
78
78
|
Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow'
|
|
79
79
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow'
|
|
80
80
|
Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow'
|
|
81
|
-
Requires-Dist: apache-airflow
|
|
81
|
+
Requires-Dist: apache-airflow ==2.10.3 ; extra == 'airflow'
|
|
82
82
|
Requires-Dist: beautifulsoup4 ; extra == 'airflow'
|
|
83
83
|
Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow'
|
|
84
84
|
Requires-Dist: botocore ==1.35.10 ; extra == 'airflow'
|
|
85
85
|
Requires-Dist: bs4 ; extra == 'airflow'
|
|
86
86
|
Requires-Dist: cacheout ; extra == 'airflow'
|
|
87
|
-
Requires-Dist: click
|
|
87
|
+
Requires-Dist: click >=8.1.3 ; extra == 'airflow'
|
|
88
88
|
Requires-Dist: colorama ==0.4.5 ; extra == 'airflow'
|
|
89
89
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow'
|
|
90
|
-
Requires-Dist: cryptography >=
|
|
90
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'airflow'
|
|
91
91
|
Requires-Dist: distro ==1.8.0 ; extra == 'airflow'
|
|
92
92
|
Requires-Dist: docx ==0.2.4 ; extra == 'airflow'
|
|
93
93
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow'
|
|
@@ -109,17 +109,17 @@ Requires-Dist: matplotlib ; extra == 'airflow'
|
|
|
109
109
|
Requires-Dist: msal ~=1.30.0 ; extra == 'airflow'
|
|
110
110
|
Requires-Dist: nessus-file-reader ; extra == 'airflow'
|
|
111
111
|
Requires-Dist: networkx ; extra == 'airflow'
|
|
112
|
-
Requires-Dist: numpy
|
|
112
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'airflow'
|
|
113
113
|
Requires-Dist: openpyxl ; extra == 'airflow'
|
|
114
114
|
Requires-Dist: packaging ~=23.1 ; extra == 'airflow'
|
|
115
115
|
Requires-Dist: pandas ; extra == 'airflow'
|
|
116
116
|
Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow'
|
|
117
117
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow'
|
|
118
118
|
Requires-Dist: pre-commit ; extra == 'airflow'
|
|
119
|
-
Requires-Dist: psutil
|
|
119
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow'
|
|
120
120
|
Requires-Dist: psycopg2-binary ; extra == 'airflow'
|
|
121
121
|
Requires-Dist: pyTenable ; extra == 'airflow'
|
|
122
|
-
Requires-Dist: pydantic ~=2.
|
|
122
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow'
|
|
123
123
|
Requires-Dist: pypandoc ; extra == 'airflow'
|
|
124
124
|
Requires-Dist: pypandoc-binary ; extra == 'airflow'
|
|
125
125
|
Requires-Dist: pytest ; extra == 'airflow'
|
|
@@ -146,17 +146,17 @@ Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow-azure'
|
|
|
146
146
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow-azure'
|
|
147
147
|
Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == 'airflow-azure'
|
|
148
148
|
Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow-azure'
|
|
149
|
-
Requires-Dist: apache-airflow
|
|
149
|
+
Requires-Dist: apache-airflow ==2.10.3 ; extra == 'airflow-azure'
|
|
150
150
|
Requires-Dist: azure-storage-blob ; extra == 'airflow-azure'
|
|
151
151
|
Requires-Dist: beautifulsoup4 ; extra == 'airflow-azure'
|
|
152
152
|
Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow-azure'
|
|
153
153
|
Requires-Dist: botocore ==1.35.10 ; extra == 'airflow-azure'
|
|
154
154
|
Requires-Dist: bs4 ; extra == 'airflow-azure'
|
|
155
155
|
Requires-Dist: cacheout ; extra == 'airflow-azure'
|
|
156
|
-
Requires-Dist: click
|
|
156
|
+
Requires-Dist: click >=8.1.3 ; extra == 'airflow-azure'
|
|
157
157
|
Requires-Dist: colorama ==0.4.5 ; extra == 'airflow-azure'
|
|
158
158
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow-azure'
|
|
159
|
-
Requires-Dist: cryptography >=
|
|
159
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'airflow-azure'
|
|
160
160
|
Requires-Dist: distro ==1.8.0 ; extra == 'airflow-azure'
|
|
161
161
|
Requires-Dist: docx ==0.2.4 ; extra == 'airflow-azure'
|
|
162
162
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-azure'
|
|
@@ -178,7 +178,7 @@ Requires-Dist: matplotlib ; extra == 'airflow-azure'
|
|
|
178
178
|
Requires-Dist: msal ~=1.30.0 ; extra == 'airflow-azure'
|
|
179
179
|
Requires-Dist: nessus-file-reader ; extra == 'airflow-azure'
|
|
180
180
|
Requires-Dist: networkx ; extra == 'airflow-azure'
|
|
181
|
-
Requires-Dist: numpy
|
|
181
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'airflow-azure'
|
|
182
182
|
Requires-Dist: openpyxl ; extra == 'airflow-azure'
|
|
183
183
|
Requires-Dist: packaging ~=23.1 ; extra == 'airflow-azure'
|
|
184
184
|
Requires-Dist: pandas ; extra == 'airflow-azure'
|
|
@@ -186,10 +186,10 @@ Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow-azure'
|
|
|
186
186
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow-azure'
|
|
187
187
|
Requires-Dist: pendulum ==2.1.2 ; extra == 'airflow-azure'
|
|
188
188
|
Requires-Dist: pre-commit ; extra == 'airflow-azure'
|
|
189
|
-
Requires-Dist: psutil
|
|
189
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow-azure'
|
|
190
190
|
Requires-Dist: psycopg2-binary ; extra == 'airflow-azure'
|
|
191
191
|
Requires-Dist: pyTenable ; extra == 'airflow-azure'
|
|
192
|
-
Requires-Dist: pydantic ~=2.
|
|
192
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow-azure'
|
|
193
193
|
Requires-Dist: pypandoc ; extra == 'airflow-azure'
|
|
194
194
|
Requires-Dist: pypandoc-binary ; extra == 'airflow-azure'
|
|
195
195
|
Requires-Dist: pytest ; extra == 'airflow-azure'
|
|
@@ -216,16 +216,16 @@ Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow-sqlserver'
|
|
|
216
216
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow-sqlserver'
|
|
217
217
|
Requires-Dist: apache-airflow-providers-microsoft-mssql ; extra == 'airflow-sqlserver'
|
|
218
218
|
Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow-sqlserver'
|
|
219
|
-
Requires-Dist: apache-airflow
|
|
219
|
+
Requires-Dist: apache-airflow ==2.10.3 ; extra == 'airflow-sqlserver'
|
|
220
220
|
Requires-Dist: beautifulsoup4 ; extra == 'airflow-sqlserver'
|
|
221
221
|
Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow-sqlserver'
|
|
222
222
|
Requires-Dist: botocore ==1.35.10 ; extra == 'airflow-sqlserver'
|
|
223
223
|
Requires-Dist: bs4 ; extra == 'airflow-sqlserver'
|
|
224
224
|
Requires-Dist: cacheout ; extra == 'airflow-sqlserver'
|
|
225
|
-
Requires-Dist: click
|
|
225
|
+
Requires-Dist: click >=8.1.3 ; extra == 'airflow-sqlserver'
|
|
226
226
|
Requires-Dist: colorama ==0.4.5 ; extra == 'airflow-sqlserver'
|
|
227
227
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow-sqlserver'
|
|
228
|
-
Requires-Dist: cryptography >=
|
|
228
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'airflow-sqlserver'
|
|
229
229
|
Requires-Dist: distro ==1.8.0 ; extra == 'airflow-sqlserver'
|
|
230
230
|
Requires-Dist: docx ==0.2.4 ; extra == 'airflow-sqlserver'
|
|
231
231
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-sqlserver'
|
|
@@ -247,17 +247,17 @@ Requires-Dist: matplotlib ; extra == 'airflow-sqlserver'
|
|
|
247
247
|
Requires-Dist: msal ~=1.30.0 ; extra == 'airflow-sqlserver'
|
|
248
248
|
Requires-Dist: nessus-file-reader ; extra == 'airflow-sqlserver'
|
|
249
249
|
Requires-Dist: networkx ; extra == 'airflow-sqlserver'
|
|
250
|
-
Requires-Dist: numpy
|
|
250
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'airflow-sqlserver'
|
|
251
251
|
Requires-Dist: openpyxl ; extra == 'airflow-sqlserver'
|
|
252
252
|
Requires-Dist: packaging ~=23.1 ; extra == 'airflow-sqlserver'
|
|
253
253
|
Requires-Dist: pandas ; extra == 'airflow-sqlserver'
|
|
254
254
|
Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow-sqlserver'
|
|
255
255
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow-sqlserver'
|
|
256
256
|
Requires-Dist: pre-commit ; extra == 'airflow-sqlserver'
|
|
257
|
-
Requires-Dist: psutil
|
|
257
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow-sqlserver'
|
|
258
258
|
Requires-Dist: psycopg2-binary ; extra == 'airflow-sqlserver'
|
|
259
259
|
Requires-Dist: pyTenable ; extra == 'airflow-sqlserver'
|
|
260
|
-
Requires-Dist: pydantic ~=2.
|
|
260
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow-sqlserver'
|
|
261
261
|
Requires-Dist: pymssql ; extra == 'airflow-sqlserver'
|
|
262
262
|
Requires-Dist: pyodbc ; extra == 'airflow-sqlserver'
|
|
263
263
|
Requires-Dist: pypandoc ; extra == 'airflow-sqlserver'
|
|
@@ -286,16 +286,16 @@ Requires-Dist: PyYAML ==6.0.1 ; extra == 'all'
|
|
|
286
286
|
Requires-Dist: ansible ; extra == 'all'
|
|
287
287
|
Requires-Dist: apache-airflow-providers-common-sql ; extra == 'all'
|
|
288
288
|
Requires-Dist: apache-airflow-providers-postgres ; extra == 'all'
|
|
289
|
-
Requires-Dist: apache-airflow
|
|
289
|
+
Requires-Dist: apache-airflow ==2.10.3 ; extra == 'all'
|
|
290
290
|
Requires-Dist: beautifulsoup4 ; extra == 'all'
|
|
291
291
|
Requires-Dist: boto3 ==1.35.10 ; extra == 'all'
|
|
292
292
|
Requires-Dist: botocore ==1.35.10 ; extra == 'all'
|
|
293
293
|
Requires-Dist: bs4 ; extra == 'all'
|
|
294
294
|
Requires-Dist: cacheout ; extra == 'all'
|
|
295
|
-
Requires-Dist: click
|
|
295
|
+
Requires-Dist: click >=8.1.3 ; extra == 'all'
|
|
296
296
|
Requires-Dist: colorama ==0.4.5 ; extra == 'all'
|
|
297
297
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'all'
|
|
298
|
-
Requires-Dist: cryptography >=
|
|
298
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'all'
|
|
299
299
|
Requires-Dist: distro ==1.8.0 ; extra == 'all'
|
|
300
300
|
Requires-Dist: docx ==0.2.4 ; extra == 'all'
|
|
301
301
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'all'
|
|
@@ -321,17 +321,17 @@ Requires-Dist: matplotlib ; extra == 'all'
|
|
|
321
321
|
Requires-Dist: msal ~=1.30.0 ; extra == 'all'
|
|
322
322
|
Requires-Dist: nessus-file-reader ; extra == 'all'
|
|
323
323
|
Requires-Dist: networkx ; extra == 'all'
|
|
324
|
-
Requires-Dist: numpy
|
|
324
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'all'
|
|
325
325
|
Requires-Dist: openpyxl ; extra == 'all'
|
|
326
326
|
Requires-Dist: packaging ~=23.1 ; extra == 'all'
|
|
327
327
|
Requires-Dist: pandas ; extra == 'all'
|
|
328
328
|
Requires-Dist: pathlib ~=1.0.1 ; extra == 'all'
|
|
329
329
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'all'
|
|
330
330
|
Requires-Dist: pre-commit ; extra == 'all'
|
|
331
|
-
Requires-Dist: psutil
|
|
331
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'all'
|
|
332
332
|
Requires-Dist: psycopg2-binary ; extra == 'all'
|
|
333
333
|
Requires-Dist: pyTenable ; extra == 'all'
|
|
334
|
-
Requires-Dist: pydantic ~=2.
|
|
334
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'all'
|
|
335
335
|
Requires-Dist: pypandoc ; extra == 'all'
|
|
336
336
|
Requires-Dist: pypandoc-binary ; extra == 'all'
|
|
337
337
|
Requires-Dist: pytest ; extra == 'all'
|
|
@@ -362,10 +362,10 @@ Requires-Dist: boto3 ==1.35.10 ; extra == 'ansible'
|
|
|
362
362
|
Requires-Dist: botocore ==1.35.10 ; extra == 'ansible'
|
|
363
363
|
Requires-Dist: bs4 ; extra == 'ansible'
|
|
364
364
|
Requires-Dist: cacheout ; extra == 'ansible'
|
|
365
|
-
Requires-Dist: click
|
|
365
|
+
Requires-Dist: click >=8.1.3 ; extra == 'ansible'
|
|
366
366
|
Requires-Dist: colorama ==0.4.5 ; extra == 'ansible'
|
|
367
367
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'ansible'
|
|
368
|
-
Requires-Dist: cryptography >=
|
|
368
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'ansible'
|
|
369
369
|
Requires-Dist: distro ==1.8.0 ; extra == 'ansible'
|
|
370
370
|
Requires-Dist: docx ==0.2.4 ; extra == 'ansible'
|
|
371
371
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'ansible'
|
|
@@ -384,16 +384,16 @@ Requires-Dist: markdown ; extra == 'ansible'
|
|
|
384
384
|
Requires-Dist: matplotlib ; extra == 'ansible'
|
|
385
385
|
Requires-Dist: msal ~=1.30.0 ; extra == 'ansible'
|
|
386
386
|
Requires-Dist: nessus-file-reader ; extra == 'ansible'
|
|
387
|
-
Requires-Dist: numpy
|
|
387
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'ansible'
|
|
388
388
|
Requires-Dist: openpyxl ; extra == 'ansible'
|
|
389
389
|
Requires-Dist: packaging ~=23.1 ; extra == 'ansible'
|
|
390
390
|
Requires-Dist: pandas ; extra == 'ansible'
|
|
391
391
|
Requires-Dist: pathlib ~=1.0.1 ; extra == 'ansible'
|
|
392
392
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'ansible'
|
|
393
393
|
Requires-Dist: pre-commit ; extra == 'ansible'
|
|
394
|
-
Requires-Dist: psutil
|
|
394
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'ansible'
|
|
395
395
|
Requires-Dist: pyTenable ; extra == 'ansible'
|
|
396
|
-
Requires-Dist: pydantic ~=2.
|
|
396
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'ansible'
|
|
397
397
|
Requires-Dist: pypandoc ; extra == 'ansible'
|
|
398
398
|
Requires-Dist: pypandoc-binary ; extra == 'ansible'
|
|
399
399
|
Requires-Dist: pytest ; extra == 'ansible'
|
|
@@ -424,11 +424,11 @@ Requires-Dist: boto3 ==1.35.10 ; extra == 'dev'
|
|
|
424
424
|
Requires-Dist: botocore ==1.35.10 ; extra == 'dev'
|
|
425
425
|
Requires-Dist: bs4 ; extra == 'dev'
|
|
426
426
|
Requires-Dist: cacheout ; extra == 'dev'
|
|
427
|
-
Requires-Dist: click
|
|
427
|
+
Requires-Dist: click >=8.1.3 ; extra == 'dev'
|
|
428
428
|
Requires-Dist: colorama ==0.4.5 ; extra == 'dev'
|
|
429
429
|
Requires-Dist: coveralls ; extra == 'dev'
|
|
430
430
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'dev'
|
|
431
|
-
Requires-Dist: cryptography >=
|
|
431
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'dev'
|
|
432
432
|
Requires-Dist: darglint ; extra == 'dev'
|
|
433
433
|
Requires-Dist: distro ==1.8.0 ; extra == 'dev'
|
|
434
434
|
Requires-Dist: docx ==0.2.4 ; extra == 'dev'
|
|
@@ -453,7 +453,7 @@ Requires-Dist: moto ; extra == 'dev'
|
|
|
453
453
|
Requires-Dist: msal ~=1.30.0 ; extra == 'dev'
|
|
454
454
|
Requires-Dist: mypy ; extra == 'dev'
|
|
455
455
|
Requires-Dist: nessus-file-reader ; extra == 'dev'
|
|
456
|
-
Requires-Dist: numpy
|
|
456
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'dev'
|
|
457
457
|
Requires-Dist: openpyxl ; extra == 'dev'
|
|
458
458
|
Requires-Dist: packaging ~=23.1 ; extra == 'dev'
|
|
459
459
|
Requires-Dist: pandas ; extra == 'dev'
|
|
@@ -462,9 +462,9 @@ Requires-Dist: pathlib ~=1.0.1 ; extra == 'dev'
|
|
|
462
462
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'dev'
|
|
463
463
|
Requires-Dist: pipenv ; extra == 'dev'
|
|
464
464
|
Requires-Dist: pre-commit ; extra == 'dev'
|
|
465
|
-
Requires-Dist: psutil
|
|
465
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'dev'
|
|
466
466
|
Requires-Dist: pyTenable ; extra == 'dev'
|
|
467
|
-
Requires-Dist: pydantic ~=2.
|
|
467
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'dev'
|
|
468
468
|
Requires-Dist: pylint ; extra == 'dev'
|
|
469
469
|
Requires-Dist: pypandoc ; extra == 'dev'
|
|
470
470
|
Requires-Dist: pypandoc-binary ; extra == 'dev'
|
|
@@ -509,10 +509,10 @@ Requires-Dist: boto3 ==1.35.10 ; extra == 'server'
|
|
|
509
509
|
Requires-Dist: botocore ==1.35.10 ; extra == 'server'
|
|
510
510
|
Requires-Dist: bs4 ; extra == 'server'
|
|
511
511
|
Requires-Dist: cacheout ; extra == 'server'
|
|
512
|
-
Requires-Dist: click
|
|
512
|
+
Requires-Dist: click >=8.1.3 ; extra == 'server'
|
|
513
513
|
Requires-Dist: colorama ==0.4.5 ; extra == 'server'
|
|
514
514
|
Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'server'
|
|
515
|
-
Requires-Dist: cryptography >=
|
|
515
|
+
Requires-Dist: cryptography >=44.0.1 ; extra == 'server'
|
|
516
516
|
Requires-Dist: distro ==1.8.0 ; extra == 'server'
|
|
517
517
|
Requires-Dist: docx ==0.2.4 ; extra == 'server'
|
|
518
518
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'server'
|
|
@@ -536,16 +536,16 @@ Requires-Dist: markdown ; extra == 'server'
|
|
|
536
536
|
Requires-Dist: matplotlib ; extra == 'server'
|
|
537
537
|
Requires-Dist: msal ~=1.30.0 ; extra == 'server'
|
|
538
538
|
Requires-Dist: nessus-file-reader ; extra == 'server'
|
|
539
|
-
Requires-Dist: numpy
|
|
539
|
+
Requires-Dist: numpy ~=2.0.0 ; extra == 'server'
|
|
540
540
|
Requires-Dist: openpyxl ; extra == 'server'
|
|
541
541
|
Requires-Dist: packaging ~=23.1 ; extra == 'server'
|
|
542
542
|
Requires-Dist: pandas ; extra == 'server'
|
|
543
543
|
Requires-Dist: pathlib ~=1.0.1 ; extra == 'server'
|
|
544
544
|
Requires-Dist: pdfplumber ==0.7.6 ; extra == 'server'
|
|
545
545
|
Requires-Dist: pre-commit ; extra == 'server'
|
|
546
|
-
Requires-Dist: psutil
|
|
546
|
+
Requires-Dist: psutil ~=6.1.0 ; extra == 'server'
|
|
547
547
|
Requires-Dist: pyTenable ; extra == 'server'
|
|
548
|
-
Requires-Dist: pydantic ~=2.
|
|
548
|
+
Requires-Dist: pydantic ~=2.11.0 ; extra == 'server'
|
|
549
549
|
Requires-Dist: pypandoc ; extra == 'server'
|
|
550
550
|
Requires-Dist: pypandoc-binary ; extra == 'server'
|
|
551
551
|
Requires-Dist: pytest ; extra == 'server'
|