Re: How to find any documentation for smbus?

2023-10-30 Thread km via Python-list
Il Sat, 28 Oct 2023 17:08:00 +0100, Chris Green ha scritto:

> I am using the python3 smbus module, but it's hard work because of the
> lack of documentation.  Web searches confirm that the documentation is
> somewhat thin!
> 
> If you do the obvious this is what you get:-
> 
> >>> import smbus dir (smbus)
> ['SMBus', '__doc__', '__file__', '__loader__', '__name__',
> '__package__', '__spec__']
> >>> help(smbus)
> 
> 
> Help on module SMBus:
> 
> NAME
> SMBus
> 
> DESCRIPTION
> This module defines an object type that allows SMBus
> transactions on hosts running the Linux kernel.  The host kernel
> must have I2C support, I2C device interface support, and a bus
> adapter driver.
> All of these can be either built-in to the kernel, or loaded
> from modules.
> 
> Because the I2C device interface is opened R/W, users of this
> module usually must have root permissions.
> 
> FILE
> /usr/lib/python3/dist-packages/smbus.cpython-39-arm-linux-
gnueabihf.so
> 
> 
> Even a list of available methods would be handy! :-)
> 
> 
> Presumably python3's smbus is just a wrapper so if I could find the
> underlying C/C++
> documentation it might help.

https://pypi.org/project/smbus2/

smbus2 is designed to be a "drop-in replacement of smbus". SO you can look 
at its documentation for or use it instead of smbus.

Disclaimer: I haven't any experience on this library
-- 
https://mail.python.org/mailman/listinfo/python-list


is input from a pipe?

2025-01-17 Thread km via Python-list
Not a question, but a quick note about a problem that sometimes pops up in 
forums, that is how to detect on Linux if standard input (or any I/O 
stream) is via pipe. My suggestion is to check if the stream is a FIFO, if 
True it is a pipe, otherwise not a pipe 

The solution that sometimes is proposed, that is

if not sys.stdin.isatty()

simply checks if the input is not from a terminal, but it may be from a 
file, not only from a pipe.


import os
import sys
import stat 
def check_if_stream_is_pipe(ifile):
return stat.S_ISFIFO(os.fstat(ifile.fileno()).st_mode)

print(check_if_stream_is_pipe(sys.stdin))
-- 
https://mail.python.org/mailman/listinfo/python-list