Coverage for sources/librovore/__/interfaces.py: 43%

15 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-09-02 00:02 +0000

1# vim: set filetype=python fileencoding=utf-8: 

2# -*- coding: utf-8 -*- 

3 

4#============================================================================# 

5# # 

6# Licensed under the Apache License, Version 2.0 (the "License"); # 

7# you may not use this file except in compliance with the License. # 

8# You may obtain a copy of the License at # 

9# # 

10# http://www.apache.org/licenses/LICENSE-2.0 # 

11# # 

12# Unless required by applicable law or agreed to in writing, software # 

13# distributed under the License is distributed on an "AS IS" BASIS, # 

14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

15# See the License for the specific language governing permissions and # 

16# limitations under the License. # 

17# # 

18#============================================================================# 

19 

20 

21''' Internal enumerations and interfaces. ''' 

22 

23 

24from . import imports as __ 

25 

26 

27class DisplayStreams( __.enum.Enum ): 

28 ''' Stream upon which to place output. ''' 

29 

30 Stderr = 'stderr' 

31 Stdout = 'stdout' 

32 

33 

34class DisplayTarget( __.immut.DataclassObject ): 

35 silence: __.typx.Annotated[ 

36 bool, 

37 __.tyro.conf.arg( 

38 aliases = ( '--quiet', '--silent', ), prefix_name = False ), 

39 ] = False 

40 file: __.typx.Annotated[ 

41 __.typx.Optional[ __.Path ], 

42 __.tyro.conf.arg( 

43 name = 'console-capture-file', prefix_name = False ), 

44 ] = None 

45 stream: __.typx.Annotated[ 

46 DisplayStreams, 

47 __.tyro.conf.arg( name = 'console-stream', prefix_name = False ), 

48 ] = DisplayStreams.Stderr 

49 

50 async def provide_stream( self ) -> __.io.TextIOWrapper: 

51 ''' Provides output stream for display. ''' 

52 if self.file: return open( self.file, 'w' ) 

53 match self.stream: 

54 case DisplayStreams.Stdout: 

55 return __.sys.stdout # pyright: ignore[reportReturnType] 

56 case DisplayStreams.Stderr: 

57 return __.sys.stderr # pyright: ignore[reportReturnType]