import sys import platform import datetime from enum import Enum # If this is not a Raspberry Pi if platform.machine() != 'armv7l': import fake_rpi from fake_rpi import toggle_print sys.modules['RPi'] = fake_rpi.RPi # Fake RPi sys.modules['RPi.GPIO'] = fake_rpi.RPi.GPIO # Fake GPIO sys.modules['smbus'] = fake_rpi.smbus # Fake smbus (I2C) toggle_print(False) fake_rpi.RPi.GPIO.set_input(15, 0) fake_rpi.RPi.GPIO.set_input(14, 0) import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library GPIO.setwarnings(False) # Ignore warning for now GPIO.setmode(GPIO.BOARD) # Use physical pin numbering class CoffeeMachine: """Coffee machine class""" class State(Enum): """Enumerable class representing the different states of the coffee machine""" OFF = 0
import os import warnings from flask import Flask # Import fake rpi libraries if we're not on a raspberry pi try: import smbus import RPi except ImportError: import sys import fake_rpi # by default it prints everything to std.error fake_rpi.toggle_print(False) # turn off printing sys.modules["RPi"] = fake_rpi.RPi # Fake RPi (GPIO) sys.modules["smbus"] = fake_rpi.smbus # Fake smbus (I2C) import RPi import smbus from therm.models import Sample, State, db from therm import settings, relay, buttons # Flask-sqlalchemy has some deprecationwarnings; squish em https://github.com/pallets/flask-sqlalchemy/issues/671 from sqlalchemy import exc warnings.filterwarnings("ignore", category=exc.SADeprecationWarning) warnings.filterwarnings("ignore", message="The psycopg2 wheel package will be renamed from release 2.8")
# -*- coding: utf-8 -*- # conftest.py import pytest # Replace libraries by fake RPi ones import sys import fake_rpi sys.modules["RPi"] = fake_rpi.RPi # Fake RPi sys.modules["RPi.GPIO"] = fake_rpi.RPi.GPIO # Fake GPIO sys.modules["smbus"] = fake_rpi.smbus # Fake smbus (I2C) fake_rpi.toggle_print(False)
def toggle_fake_print(p): fake_rpi.toggle_print(p)
def setup_plugin(ow: "OpenWater", config: dict): toggle_print(False) ow.add_job(gpio.setmode, gpio.BCM) ow.data[DATA_GPIO] = OWGpio(ow)
from PyQt5 import QtWidgets, QtCore from F3FChrono.Utils import is_running_on_pi import os.path if not is_running_on_pi(): # Replace libraries by fake ones import sys import fake_rpi sys.modules['RPi'] = fake_rpi.RPi # Fake RPi (GPIO) sys.modules['RPi.GPIO'] = fake_rpi.RPi.GPIO # Fake GPIO sys.modules['smbus'] = fake_rpi.smbus # Fake smbus (I2C) from fake_rpi import toggle_print # by default it prints everything to std.error toggle_print(False) # turn on/off printing from F3FChrono.chrono import ConfigReader from F3FChrono.gui.MainUiController import MainUiCtrl from F3FChrono.data.Chrono import Chrono from F3FChrono.data.dao.EventDAO import EventDAO from F3FChrono.gui.Simulate_base import SimulateBase from F3FChrono.data.web.Utils import Utils def main(): #logging.basicConfig (filename="runchrono.log", level=logging.DEBUG, format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') if is_running_on_pi(): print("warm-up 2 seconds...") time.sleep(2.0)
from fake_rpi import printf from fake_rpi import toggle_print # Replace libraries by fake ones import sys import fake_rpi sys.modules['RPi'] = fake_rpi.RPi sys.modules['smbus'] = fake_rpi.smbus # Then keep the transparent import everywhere in the application and dependencies import RPi.GPIO as GPIO import smbus toggle_print(True) # turn on/off printing pwm = GPIO.PWM() pwm.start(5) i2c = smbus.SMBus(1) i2c.write_byte_data(1, 2, 3) i2c.read_byte_data(1, 2) i2c.close() class MyBus(smbus.SMBus): """ Here I want to over ride how this behaves for testing """ @printf