I have an identical contract on the Mainnet and Ropsten. Both work fine in Remix. Using a python program on my Windows machine, I find that I get an error accessing the Ropsten contract, but not the mainnet version. All I changed in my Python program was the contract address and provider URL: "https://mainnet.infura.io/v3/3e4616a1aed64da3b29e20c2970e23b7" to "https://ropsten.infura.io/v3/3e4616a1aed64da3b29e20c2970e23b7"
The flawed program generates an error on the first contract call
currDay = contract.functions.currentDay().call()
This generates a scalar output, type uint8. The error I get is:
web3.exceptions.BadFunctionCallOutput: Could not decode contract function call currentDay return data b'' for output_types ['uint8']
As mentioned, this works fine for the mainnet, and also works fine within Remix for both the Ropsten and Mainnet contracts.