Merge pull request #63355 from twangboy/update_pythonnet

Update pythonnet to 3.0.1 to support Python 3.10
This commit is contained in:
Gareth J. Greenaway 2023-01-03 21:56:29 -08:00 committed by GitHub
commit 689882d2d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 124 additions and 37 deletions

View file

@ -46,6 +46,7 @@ cffi==1.14.6
# via
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# clr-loader
# cryptography
# pygit2
chardet==3.0.4
@ -62,6 +63,8 @@ cherrypy==18.6.1
# -r requirements/windows.txt
click==7.1.2
# via geomet
clr-loader==0.2.4
# via pythonnet
clustershell==1.8.3
# via -r requirements/static/ci/common.in
colorama==0.4.1
@ -222,7 +225,6 @@ pycparser==2.21 ; python_version >= "3.9"
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pygit2==1.9.1 ; python_version >= "3.7"
@ -289,7 +291,7 @@ python-etcd==0.4.5
# via -r requirements/static/ci/common.in
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via

View file

@ -52,6 +52,7 @@ cffi==1.14.6
# via
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# clr-loader
# cryptography
# pygit2
chardet==3.0.4
@ -68,6 +69,8 @@ cherrypy==18.6.1
# -r requirements/windows.txt
click==7.1.2
# via geomet
clr-loader==0.2.4
# via pythonnet
clustershell==1.8.3
# via -r requirements/static/ci/common.in
colorama==0.4.1
@ -236,7 +239,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pygit2==1.9.1 ; python_version >= "3.7"
@ -303,7 +305,7 @@ python-etcd==0.4.5
# via -r requirements/static/ci/common.in
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via

View file

@ -48,6 +48,7 @@ cffi==1.14.6
# via
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# clr-loader
# cryptography
# pygit2
chardet==3.0.4
@ -64,6 +65,8 @@ cherrypy==18.6.1
# -r requirements/windows.txt
click==7.1.2
# via geomet
clr-loader==0.2.4
# via pythonnet
clustershell==1.8.3
# via -r requirements/static/ci/common.in
colorama==0.4.1
@ -224,7 +227,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pygit2==1.9.1 ; python_version >= "3.7"
@ -291,7 +293,7 @@ python-etcd==0.4.5
# via -r requirements/static/ci/common.in
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via

View file

@ -48,6 +48,7 @@ cffi==1.14.6
# via
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# clr-loader
# cryptography
# pygit2
chardet==3.0.4
@ -64,6 +65,8 @@ cherrypy==18.6.1
# -r requirements/windows.txt
click==7.1.2
# via geomet
clr-loader==0.2.4
# via pythonnet
clustershell==1.8.3
# via -r requirements/static/ci/common.in
colorama==0.4.1
@ -225,7 +228,6 @@ pycparser==2.21 ; python_version >= "3.9"
# -r requirements/static/ci/common.in
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pygit2==1.9.1 ; python_version >= "3.7"
@ -292,7 +294,7 @@ python-etcd==0.4.5
# via -r requirements/static/ci/common.in
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via

View file

@ -11,6 +11,7 @@ certifi==2022.12.7
cffi==1.14.6
# via
# -r requirements/windows.txt
# clr-loader
# cryptography
chardet==3.0.4
# via requests
@ -18,6 +19,8 @@ cheroot==8.5.2
# via cherrypy
cherrypy==18.6.1
# via -r requirements/windows.txt
clr-loader==0.2.4
# via pythonnet
contextvars==2.4
# via -r requirements/base.txt
cryptography==3.4.7
@ -78,7 +81,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pymssql==2.2.7
@ -91,7 +93,7 @@ python-dateutil==2.8.1
# via -r requirements/windows.txt
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via tempora

View file

@ -11,6 +11,7 @@ certifi==2022.12.7
cffi==1.14.6
# via
# -r requirements/windows.txt
# clr-loader
# cryptography
chardet==3.0.4
# via requests
@ -18,6 +19,8 @@ cheroot==8.5.2
# via cherrypy
cherrypy==18.6.1
# via -r requirements/windows.txt
clr-loader==0.2.4
# via pythonnet
contextvars==2.4
# via -r requirements/base.txt
cryptography==3.4.7
@ -82,7 +85,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pymssql==2.2.1
@ -95,7 +97,7 @@ python-dateutil==2.8.1
# via -r requirements/windows.txt
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via tempora

View file

@ -11,6 +11,7 @@ certifi==2022.12.7
cffi==1.14.6
# via
# -r requirements/windows.txt
# clr-loader
# cryptography
chardet==3.0.4
# via requests
@ -18,6 +19,8 @@ cheroot==8.5.2
# via cherrypy
cherrypy==18.6.1
# via -r requirements/windows.txt
clr-loader==0.2.4
# via pythonnet
contextvars==2.4
# via -r requirements/base.txt
cryptography==3.4.7
@ -80,7 +83,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pymssql==2.2.1
@ -93,7 +95,7 @@ python-dateutil==2.8.1
# via -r requirements/windows.txt
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via tempora

View file

@ -11,6 +11,7 @@ certifi==2022.12.7
cffi==1.14.6
# via
# -r requirements/windows.txt
# clr-loader
# cryptography
chardet==3.0.4
# via requests
@ -18,6 +19,8 @@ cheroot==8.5.2
# via cherrypy
cherrypy==18.6.1
# via -r requirements/windows.txt
clr-loader==0.2.4
# via pythonnet
contextvars==2.4
# via -r requirements/base.txt
cryptography==3.4.7
@ -80,7 +83,6 @@ pycparser==2.21
# via
# -r requirements/windows.txt
# cffi
# pythonnet
pycryptodomex==3.10.1
# via -r requirements/crypto.txt
pymssql==2.2.1
@ -93,7 +95,7 @@ python-dateutil==2.8.1
# via -r requirements/windows.txt
python-gnupg==0.4.8
# via -r requirements/windows.txt
pythonnet==2.5.2
pythonnet==3.0.1
# via -r requirements/windows.txt
pytz==2022.1
# via tempora

View file

@ -4,7 +4,7 @@
pywin32>=305
wmi>=1.5.1
pythonnet>=2.5.2
pythonnet>=3.0.1
backports.ssl-match-hostname>=3.7.0.1; python_version < '3.7'
certifi>=2022.12.07

View file

@ -39,6 +39,8 @@ if IS_WINDOWS:
import clr
from System.Net import NetworkInformation
# TODO: Should we deprecate support for pythonnet 2.5.2, these enumerations can
# TODO: be deleted
enum_adapter_types = {
1: "Unknown",
6: "Ethernet",
@ -107,18 +109,29 @@ def __virtual__():
def _get_base_properties(i_face):
raw_mac = i_face.GetPhysicalAddress().ToString()
try:
i_face_type = enum_adapter_types[i_face.NetworkInterfaceType]
except KeyError:
i_face_type = i_face.Description
return {
# pythonnet 3.0.1
i_face_type = i_face.NetworkInterfaceType.ToString()
except AttributeError:
# pythonnet 2.5.2
try:
i_face_type = enum_adapter_types[i_face.NetworkInterfaceType]
except KeyError:
i_face_type = i_face.Description
ret = {
"alias": i_face.Name,
"description": i_face.Description,
"id": i_face.Id,
"receive_only": i_face.IsReceiveOnly,
"type": i_face_type,
"status": enum_operational_status[i_face.OperationalStatus],
"physical_address": ":".join(raw_mac[i : i + 2] for i in range(0, 12, 2)),
}
try:
# pythonnet 3.0.1
ret["status"] = i_face.OperationalStatus.ToString()
except AttributeError:
# pythonnet 2.5.2
ret["status"] = enum_operational_status[i_face.OperationalStatus]
return ret
def _get_ip_base_properties(i_face):
@ -136,7 +149,17 @@ def _get_ip_unicast_info(i_face):
if ip_properties.UnicastAddresses.Count > 0:
names = {af_inet: "ip_addresses", af_inet6: "ipv6_addresses"}
for addrs in ip_properties.UnicastAddresses:
if addrs.Address.AddressFamily == af_inet:
try:
# pythonnet 3.0.1
if addrs.Address.AddressFamily.ToString() == "InterNetwork":
family = 2
else:
family = 23
except AttributeError:
# pythonnet 2.5.2
family = addrs.Address.AddressFamily
if family == af_inet:
ip = addrs.Address.ToString()
mask = addrs.IPv4Mask.ToString()
net = ipaddress.IPv4Network(ip + "/" + mask, False)
@ -155,14 +178,28 @@ def _get_ip_unicast_info(i_face):
# for feature parity with Linux
"interface_index": int(addrs.Address.ScopeId),
}
ip_info.update(
{
"prefix_length": addrs.PrefixLength,
"prefix_origin": enum_prefix_suffix[addrs.PrefixOrigin],
"suffix_origin": enum_prefix_suffix[addrs.SuffixOrigin],
}
)
int_dict.setdefault(names[addrs.Address.AddressFamily], []).append(ip_info)
ip_info.update({"prefix_length": addrs.PrefixLength})
try:
# pythonnet 3.0.1
ip_info.update(
{"prefix_origin": addrs.PrefixOrigin.ToString()},
)
except AttributeError:
# pythonnet 2.5.2
ip_info.update(
{"prefix_origin": enum_prefix_suffix[addrs.PrefixOrigin]},
)
try:
# pythonnet 3.0.1
ip_info.update(
{"suffix_origin": addrs.SuffixOrigin.ToString()},
)
except AttributeError:
# pythonnet 2.5.2
ip_info.update(
{"suffix_origin": enum_prefix_suffix[addrs.SuffixOrigin]},
)
int_dict.setdefault(names[family], []).append(ip_info)
return int_dict
@ -172,7 +209,16 @@ def _get_ip_gateway_info(i_face):
if ip_properties.GatewayAddresses.Count > 0:
names = {af_inet: "ip_gateways", af_inet6: "ipv6_gateways"}
for addrs in ip_properties.GatewayAddresses:
int_dict.setdefault(names[addrs.Address.AddressFamily], []).append(
try:
# pythonnet 3.0.1
if addrs.Address.AddressFamily.ToString() == "InterNetwork":
family = 2
else:
family = 23
except AttributeError:
# pythonnet 2.5.2
family = addrs.Address.AddressFamily
int_dict.setdefault(names[family], []).append(
addrs.Address.ToString().split("%")[0]
)
return int_dict
@ -184,7 +230,16 @@ def _get_ip_dns_info(i_face):
if ip_properties.DnsAddresses.Count > 0:
names = {af_inet: "ip_dns", af_inet6: "ipv6_dns"}
for addrs in ip_properties.DnsAddresses:
int_dict.setdefault(names[addrs.AddressFamily], []).append(
try:
# pythonnet 3.0.1
if addrs.AddressFamily.ToString() == "InterNetwork":
family = 2
else:
family = 23
except AttributeError:
# pythonnet 2.5.2
family = addrs.AddressFamily
int_dict.setdefault(names[family], []).append(
addrs.ToString().split("%")[0]
)
return int_dict
@ -196,7 +251,16 @@ def _get_ip_multicast_info(i_face):
if ip_properties.MulticastAddresses.Count > 0:
names = {af_inet: "ip_multicast", af_inet6: "ipv6_multicast"}
for addrs in ip_properties.MulticastAddresses:
int_dict.setdefault(names[addrs.Address.AddressFamily], []).append(
try:
# pythonnet 3.0.1
if addrs.Address.AddressFamily.ToString() == "InterNetwork":
family = 2
else:
family = 23
except AttributeError:
# pythonnet 2.5.2
family = addrs.Address.AddressFamily
int_dict.setdefault(names[family], []).append(
addrs.Address.ToString().split("%")[0]
)
return int_dict
@ -208,9 +272,16 @@ def _get_ip_anycast_info(i_face):
if ip_properties.AnycastAddresses.Count > 0:
names = {af_inet: "ip_anycast", af_inet6: "ipv6_anycast"}
for addrs in ip_properties.AnycastAddresses:
int_dict.setdefault(names[addrs.Address.AddressFamily], []).append(
addrs.Address.ToString()
)
try:
# pythonnet 3.0.1
if addrs.Address.AddressFamily.ToString() == "InterNetwork":
family = 2
else:
family = 23
except AttributeError:
# pythonnet 2.5.2
family = addrs.Address.AddressFamily
int_dict.setdefault(names[family], []).append(addrs.Address.ToString())
return int_dict