Teemu R. 
							
						 
					 
					
						
						
							
						
						883d52209e 
					 
					
						
						
							
							Fix incorrect obd src echo ( #1412 )  
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						
					 
					
						2025-01-03 18:07:46 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						296af3192e 
					 
					
						
						
							
							Handle KeyboardInterrupts in the cli better ( #1391 )  
						
						... 
						
						
						
						Addresses an issue with how `asyncclick` deals with `KeyboardInterrupt`
errors. Instead of the `click.main` receiving `KeyboardInterrupt` it
receives `CancelledError` because it's a task running inside the loop.
Also ensures that discovery catches the `CancelledError` and closes the
http clients. 
						
						
					 
					
						2024-12-20 14:21:38 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						37ef7b0463 
					 
					
						
						
							
							cli: print model, https, and lv for discover list ( #1339 )  
						
						... 
						
						
						
						```
kasa --target 192.168.xx.xx discover list
HOST            MODEL     DEVICE FAMILY        ENCRYPT HTTPS LV  ALIAS
192.168.xxx.xxx KP115(EU) IOT.SMARTPLUGSWITCH  XOR     0     -   Fridge
192.168.xxx.xxx L900-5    SMART.TAPOBULB       KLAP    0     2   L900
192.168.xxx.xxx P115      SMART.TAPOPLUG       AES     0     2   Nightdesk
192.168.xxx.xxx TC65      SMART.IPCAMERA       AES     1     2   Tapo_TC65_B593
```
Also handles `TimeoutError` and `Exception` during `update()`
---------
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-12-17 21:09:17 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						223f3318ea 
					 
					
						
						
							
							Use DeviceInfo consistently across devices ( #1338 )  
						
						... 
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						- Make model exclude region for `iot` devices. This is consistent with `smart` and `smartcam` devices.
- Make region it's own attribute on `Device`.
- Ensure that devices consistently use `_get_device_info` static methods for all information relating to device models.
- Fix issue with firmware and hardware being the wrong way round for `smartcam` devices. 
						
						
					 
					
						2024-12-13 12:37:13 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7709bb967f 
					 
					
						
						
							
							Update cli, light modules, and docs to use FeatureAttributes ( #1364 )  
						
						
	
		
			
	 
	
	
		
	
	
		
			
				
	CI / Perform linting checks (3.13) (push) Waiting to run 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Blocked by required conditions 
				
			 
		
			
				
	CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Blocked by required conditions 
				
			 
		
			
				
	CodeQL checks / Analyze (python) (push) Waiting to run 
				
			 
		
		
	 
 
	 
						
						
					 
					
						2024-12-11 15:53:35 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						bf8f0adabe 
					 
					
						
						
							
							Return raw discovery result in cli discover raw ( #1342 )  
						
						... 
						
						
						
						Add `on_discovered_raw` callback to Discover and adds a cli command `discover raw` which returns the raw json before serializing to a `DiscoveryResult` and attempting to create a device class. 
						
						
					 
					
						2024-12-10 22:42:14 +00:00 
						 
				 
			
				
					
						
							
							
								Puxtril 
							
						 
					 
					
						
						
							
						
						cb89342be1 
					 
					
						
						
							
							Add LinkieTransportV2 and basic IOT.IPCAMERA support ( #1270 )  
						
						... 
						
						
						
						Add LinkieTransportV2 transport used by kasa cameras and a basic
implementation for IOT.IPCAMERA (kasacam) devices.
---------
Co-authored-by: Zach Price <pricezt@ornl.gov >
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com >
Co-authored-by: Teemu Rytilahti <tpr@iki.fi > 
						
						
					 
					
						2024-12-07 00:06:58 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						9966c6094a 
					 
					
						
						
							
							Add ssltransport for robovacs ( #943 )  
						
						... 
						
						
						
						This PR implements a clear-text, token-based transport protocol seen on
RV30 Plus (#937 ).
- Client sends `{"username": "email@example.com ", "password":
md5(password)}` and gets back a token in the response
- Rest of the communications are done with POST at `/app?token=<token>`
---------
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-12-01 18:06:48 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						5ef8f21b4d 
					 
					
						
						
							
							Handle missing mgt_encryption_schm in discovery ( #1318 )  
						
						
						
						
					 
					
						2024-11-29 15:23:16 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						69e08c2385 
					 
					
						
						
							
							Expose energy command to cli ( #1307 )  
						
						... 
						
						
						
						Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-11-26 09:42:55 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						cae9decb02 
					 
					
						
						
							
							Exclude __getattr__ for deprecated attributes from type checkers ( #1294 )  
						
						
						
						
					 
					
						2024-11-21 18:40:13 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						879aca77d1 
					 
					
						
						
							
							Update cli modify presets to support smart devices ( #1295 )  
						
						
						
						
					 
					
						2024-11-21 19:10:18 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						0058ad9f2e 
					 
					
						
						
							
							Remove pydantic dependency ( #1289 )  
						
						... 
						
						
						
						Remove pydantic dependency in favor of mashumaro. 
						
						
					 
					
						2024-11-20 15:19:12 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						a01247d48f 
					 
					
						
						
							
							Remove support for python <3.11 ( #1273 )  
						
						... 
						
						
						
						Python 3.11 ships with latest Debian Bookworm. 
pypy is not that widely used with this library based on statistics. It could be added back when pypy supports python 3.11. 
						
						
					 
					
						2024-11-18 18:46:36 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						fd5258c28b 
					 
					
						
						
							
							Fix discovery by alias for smart devices ( #1260 )  
						
						... 
						
						
						
						Fixes  #1259  
					
						2024-11-18 13:03:13 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						0d1193ac71 
					 
					
						
						
							
							Update cli feature command for actions not to require a value ( #1264 )  
						
						
						
						
					 
					
						2024-11-15 14:38:41 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						b8f6651d9b 
					 
					
						
						
							
							Remove experimental support ( #1256 )  
						
						
						
						
					 
					
						2024-11-14 15:55:02 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						157ad8e807 
					 
					
						
						
							
							Update cli energy command to use energy module ( #1252 )  
						
						
						
						
					 
					
						2024-11-13 15:57:42 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						254a9af5c1 
					 
					
						
						
							
							Update DiscoveryResult to use Mashumaro instead of pydantic ( #1231 )  
						
						... 
						
						
						
						Mashumaro is faster and doesn't come with all versioning problems that
pydantic does.
A basic perf test deserializing all of our discovery results fixtures
shows mashumaro as being about 6 times faster deserializing dicts than
pydantic. It's much faster parsing from a json string but that's likely
because it uses orjson under the hood although that's not really our use
case at the moment.
```
PYDANTIC - ms
=================
json       dict
-----------------
4.7665     1.3268
3.1548     1.5922
3.1130     1.8039
4.2834     2.7606
2.0669     1.3757
2.0163     1.6377
3.1667     1.3561
4.1296     2.7297
2.0132     1.3471
4.0648     1.4105
MASHUMARO - ms
=================
json       dict
-----------------
0.5977     0.5543
0.5336     0.2983
0.3955     0.2549
0.6516     0.2742
0.5386     0.2706
0.6678     0.2580
0.4120     0.2511
0.3836     0.2472
0.4020     0.2465
0.4268     0.2487
``` 
						
						
					 
					
						2024-11-12 22:00:04 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						66eb17057e 
					 
					
						
						
							
							Enable ruff check for ANN ( #1139 )  
						
						
						
						
					 
					
						2024-11-10 18:55:13 +00:00 
						 
				 
			
				
					
						
							
							
								Puxtril 
							
						 
					 
					
						
						
							
						
						4e9a3e6b02 
					 
					
						
						
							
							Print formatting for IotLightPreset ( #1216 )  
						
						... 
						
						
						
						Now prints presets as such:
```
[0] Hue:   0  Saturation:   0  Brightness/Value: 100  Temp: 6000  Custom: None  Mode: None  Id: None
[1] Hue:   0  Saturation:   0  Brightness/Value: 100  Temp: 2500  Custom: None  Mode: None  Id: None
[2] Hue:   0  Saturation:   0  Brightness/Value:  60  Temp: 2500  Custom: None  Mode: None  Id: None
[3] Hue: 240  Saturation: 100  Brightness/Value: 100  Temp:    0  Custom: None  Mode: None  Id: None
``` 
						
						
					 
					
						2024-11-09 18:03:06 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						77b654a9aa 
					 
					
						
						
							
							Update try_connect_all to be more efficient and report attempts ( #1222 )  
						
						
						
						
					 
					
						2024-11-01 18:17:18 +00:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						70c96b5a5d 
					 
					
						
						
							
							Initial trigger logs implementation ( #900 )  
						
						... 
						
						
						
						Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com > 
						
						
					 
					
						2024-11-01 15:36:09 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						4aec9d302f 
					 
					
						
						
							
							Allow enabling experimental devices from environment variable ( #1194 )  
						
						
						
						
					 
					
						2024-10-29 09:30:30 +00:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						048c84d72c 
					 
					
						
						
							
							Add https parameter to device class factory ( #1184 )  
						
						... 
						
						
						
						`SMART.TAPOHUB` resolves to different device classes based on the https value 
						
						
					 
					
						2024-10-22 18:09:35 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						3c865b5fb6 
					 
					
						
						
							
							Add try_connect_all to allow initialisation without udp broadcast ( #1171 )  
						
						... 
						
						
						
						- Try all valid combinations of protocol/transport/device class and attempt to connect. 
- Add cli command `discover config` to return the connection options after connecting via `try_connect_all`.
- The cli command does not return the actual device for processing as this is not a recommended way to regularly connect to devices. 
						
						
					 
					
						2024-10-22 14:33:46 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						852116795c 
					 
					
						
						
							
							Add discovery list command to cli ( #1183 )  
						
						... 
						
						
						
						Report discovered devices in a concise table format. 
						
						
					 
					
						2024-10-22 12:15:08 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						dcc36e1dfe 
					 
					
						
						
							
							Initial TapoCamera support ( #1165 )  
						
						... 
						
						
						
						Adds experimental support for the Tapo Camera protocol also used by the H200 hub.
Creates a new SslAesTransport and a derived SmartCamera and SmartCameraProtocol. 
						
						
					 
					
						2024-10-16 16:53:52 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						380fbb93c3 
					 
					
						
						
							
							Enable newer encrypted discovery protocol ( #1168 )  
						
						
						
						
					 
					
						2024-10-16 15:28:27 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						7fd8c14c1f 
					 
					
						
						
							
							Create common Time module and add time set cli command ( #1157 )  
						
						
						
						
					 
					
						2024-10-15 08:59:25 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						9641edcbc0 
					 
					
						
						
							
							Make iot time timezone aware ( #1147 )  
						
						... 
						
						
						
						Also makes on_since for iot devices use device time.
Changes the return value for device.timezone to be tzinfo instead of a dict. 
						
						
					 
					
						2024-10-08 08:16:51 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						d1b43f5408 
					 
					
						
						
							
							Fix cli command for device off ( #1121 )  
						
						... 
						
						
						
						Was previously missed when using the full `kasa device off` command as
opposed to the shortcut. 
						
						
					 
					
						2024-09-27 17:36:45 +01:00 
						 
				 
			
				
					
						
							
							
								Teemu R. 
							
						 
					 
					
						
						
							
						
						b7fa0d2040 
					 
					
						
						
							
							Add factory-reset command to cli ( #1108 )  
						
						... 
						
						
						
						Allow reseting devices to factory settings using the cli: `kasa device factory-reset`. 
						
						
					 
					
						2024-09-21 16:52:52 +02:00 
						 
				 
			
				
					
						
							
							
								Steven B. 
							
						 
					 
					
						
						
							
						
						ed033679e5 
					 
					
						
						
							
							Split out main cli module into lazily loaded submodules ( #1039 )  
						
						
						
						
					 
					
						2024-07-23 19:13:52 +01:00 
						 
				 
			
				
					
						
							
							
								Steven B 
							
						 
					 
					
						
						
							
						
						983aacbc24 
					 
					
						
						
							
							Structure cli into a package ( #1038 )  
						
						... 
						
						
						
						PR with just the initial structural changes for the cli to be a package.
Subsequent PR will break out `main.py` into modules. Doing it in two
stages ensure that the commit history will be continuous for `cli.py` >
`cli/main.py` 
						
						
					 
					
						2024-07-04 14:52:01 +02:00