Skip to content

Commit 8ef4246

Browse files
authored
Merge pull request #73 from ushiboy/release/1.4.0
Preparation for 1.4.0 release
2 parents 52f26f7 + 8eee277 commit 8ef4246

File tree

6 files changed

+37
-36
lines changed

6 files changed

+37
-36
lines changed

.github/workflows/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ jobs:
99
matrix:
1010
python-version: ['3.7', '3.8', '3.9', '3.10']
1111
steps:
12-
- uses: actions/checkout@v2
13-
- uses: actions/setup-python@v2
12+
- uses: actions/checkout@v4
13+
- uses: actions/setup-python@v5
1414
with:
1515
python-version: ${{ matrix.python-version }}
1616
- name: Install dependencies

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,11 @@ nmcli.set_lang(lang: str) -> None
459459

460460
## Change Log
461461

462+
### 1.4.0
463+
464+
- Supported unsupported cases of `DeviceWifi.parse`.
465+
- Fixed the problem that `nmcli.general` does not work on nmcli client after version 1.48.x.
466+
462467
### 1.3.0
463468

464469
- Added rescan parameter to `nmcli.device.wifi`.

nmcli/data/general.py

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,34 +39,26 @@ def to_json(self):
3939

4040
@classmethod
4141
def parse(cls, text: str) -> General:
42-
#pattern = r'^([\S\s]+)\s{2}(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*'
43-
44-
state_r = r'(?P<state>.+)'
45-
connectivity_r = r'(?P<connectivity>\S+)'
46-
wifi_hw_r = r'(?P<wifi_hw>\S+)'
47-
wifi_r = r'(?P<wifi>\S+)'
48-
wwan_hw_r = r'(?P<wwan_hw>\S+)'
49-
wwan_r = r'(?P<wwan>\S+)'
50-
metered_r = r'(?: (?P<metered>.+)?)?'
51-
5242
pattern = (
53-
r'^'
54-
+ state_r
55-
+ r' '
56-
+ connectivity_r
57-
+ r'\s+'
58-
+ wifi_hw_r
59-
+ r' '
60-
+ wifi_r
61-
+ r' '
62-
+ wwan_hw_r
63-
+ r' '
64-
+ wwan_r
65-
+ metered_r
66-
+ r'$'
43+
r'^'
44+
+ r'(?P<state>.+)'
45+
+ r' '
46+
+ r'(?P<connectivity>\S+)'
47+
+ r'\s+'
48+
+ r'(?P<wifi_hw>\S+)'
49+
+ r' '
50+
+ r'(?P<wifi>\S+)'
51+
+ r' '
52+
+ r'(?P<wwan_hw>\S+)'
53+
+ r' '
54+
+ r'(?P<wwan>\S+)'
55+
+ r'(?: (?P<metered>.+)?)?'
56+
+ r'$'
6757
)
6858

69-
m = re.search(pattern, text)
59+
# The execution result will have a trailing space,
60+
# so trim it and then match it to the pattern.
61+
m = re.search(pattern, text.rstrip())
7062

7163
if m:
7264
state, connectivity, wifi_hw, wifi, wwan_hw, wwan, _metered = m.groups()

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def run_tests(self):
1313

1414
setup(
1515
name='nmcli',
16-
version='1.3.0',
16+
version='1.4.0',
1717
author='ushiboy',
1818
license='MIT',
1919
license_files = ('LICENSE.txt',),

tests/data/test_device.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ def test_device_wifi_parse():
7575
assert DeviceWifi.parse(d4) == \
7676
DeviceWifi(False, 'AAAAAA BBBBBBBBB CCC 9999', '00:00:00:00:00:03',
7777
'Infra', 1, 2403, 130, 82, 'WPA1 WPA2')
78+
d5 = '*:AP1:00\\:00\\:00\\:00\\:00\\:00:Infra:1:2400 MHz:130 Mb/s:82:WPA1 WPA2'
79+
assert DeviceWifi.parse(d5) == \
80+
DeviceWifi(True, 'AP1', '00:00:00:00:00:00',
81+
'Infra', 1, 2400, 130, 82, 'WPA1 WPA2')
7882

7983

8084
def test_device_wifi_parse_when_failed():

tests/data/test_general.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,42 +23,42 @@ def test_to_json():
2323

2424

2525
def test_parse():
26-
d1 = 'unknown none enabled enabled enabled disabled'
26+
d1 = 'unknown none enabled enabled enabled disabled '
2727
assert General.parse(d1) == General(NetworkManagerState.UNKNOWN,
2828
NetworkConnectivity.NONE,
2929
True, True, True, False)
3030

31-
d2 = 'asleep portal enabled enabled disabled enabled'
31+
d2 = 'asleep portal enabled enabled disabled enabled '
3232
assert General.parse(d2) == General(NetworkManagerState.ASLEEP,
3333
NetworkConnectivity.PORTAL,
3434
True, True, False, True)
3535

36-
d3 = 'connecting limited enabled disabled enabled enabled'
36+
d3 = 'connecting limited enabled disabled enabled enabled '
3737
assert General.parse(d3) == General(NetworkManagerState.CONNECTING,
3838
NetworkConnectivity.LIMITED,
3939
True, False, True, True)
4040

41-
d4 = 'connected (local only) full disabled enabled enabled enabled'
41+
d4 = 'connected (local only) full disabled enabled enabled enabled '
4242
assert General.parse(d4) == General(NetworkManagerState.CONNECTED_LOCAL,
4343
NetworkConnectivity.FULL,
4444
False, True, True, True)
4545

46-
d5 = 'connected (site only) full enabled enabled enabled enabled'
46+
d5 = 'connected (site only) full enabled enabled enabled enabled '
4747
assert General.parse(d5) == General(NetworkManagerState.CONNECTED_SITE,
4848
NetworkConnectivity.FULL,
4949
True, True, True, True)
5050

51-
d6 = 'disconnecting full enabled enabled enabled enabled'
51+
d6 = 'disconnecting full enabled enabled enabled enabled '
5252
assert General.parse(d6) == General(NetworkManagerState.DISCONNECTING,
5353
NetworkConnectivity.FULL,
5454
True, True, True, True)
5555

56-
d7 = 'disconnected full enabled enabled enabled enabled'
56+
d7 = 'disconnected full enabled enabled enabled enabled '
5757
assert General.parse(d7) == General(NetworkManagerState.DISCONNECTED,
5858
NetworkConnectivity.FULL,
5959
True, True, True, True)
6060

61-
d8 = 'connected full enabled enabled missing enabled no (guessed)'
61+
d8 = 'connected full enabled enabled missing enabled no (guessed) '
6262
assert General.parse(d8) == General(NetworkManagerState.CONNECTED_GLOBAL,
6363
NetworkConnectivity.FULL,
6464
True, True, False, True)

0 commit comments

Comments
 (0)