Skip to content

Workaround for issue experienced with mktime on Micropython #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 28, 2018

Conversation

cefn
Copy link
Contributor

@cefn cefn commented Feb 26, 2018

This change fixes an issue I experienced when using the adafruit_gps module from micropython using a CircuitPython-compatibility wrapper. Where the time value provided is a floating point number, then the secs value is also a float after the remainder operation.

The implementation of struct_time in the compatibility layer fails when the struct_time is used to call micropython's mktime, which operates with a stricter interpretation of https://docs.python.org/3.1/library/time.html

The time value as returned by gmtime(), localtime(), and strptime(), and accepted by asctime(), mktime() and strftime(), is a sequence of 9 integers.

...hence requires the secs argument to be an integer when constructing the timestamp.

Wrapping the secs calculation in int() resolves the issue. The issue I experienced may be specific to the GPS module which returns the value in this form, and to the library downstream which tries to use it and dies, so feel free to ignore if there are reasons not to merge.

Copy link
Member

@tannewt tannewt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hours will have the same problem I believe. Mind converting time_utc to an int instead?

@cefn
Copy link
Contributor Author

cefn commented Feb 27, 2018

Ah yes, python floor division not integer division, so still a float. I'd pulled that int() out as I thought I'd been too conservative :)

@cefn
Copy link
Contributor Author

cefn commented Feb 27, 2018

It's quite a performance for me to get the full testing scenario for GPS set up again (reconfigure hardware, reconfigure software, go wandering outdoors and get a fix). Hopefully this new commit works but is untested for now.

@tannewt
Copy link
Member

tannewt commented Feb 27, 2018

@jerryneedell Do you have a GPS set up and can test?

@jerryneedell
Copy link

I should be able to test it this evening.

@tannewt
Copy link
Member

tannewt commented Feb 27, 2018 via email

@jerryneedell
Copy link

Tested GPS acces with this PR on Metro_M4_Express_Revb - with CP 3.0 - seems to run as expected. No problems encountered.

Copy link
Member

@tannewt tannewt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@tannewt tannewt merged commit b44f53a into adafruit:master Feb 28, 2018
tannewt pushed a commit to adafruit/Adafruit_CircuitPython_Bundle that referenced this pull request Mar 5, 2018
Updating https://github.com/adafruit/Adafruit_CircuitPython_ADS1x15 to 0.3.0 from 0.2.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_ADS1x15#9 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_APDS to 1.1.0 from 1.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_APDS#4 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_APDS#3 from brentru/readthedocs-badge

Updating https://github.com/adafruit/Adafruit_CircuitPython_BME280 to 2.0.1 from 2.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_BME280#6 from sommersoft/new_docs
  > Update README.rst
  > Update README.rst
  > Merge pull request adafruit/Adafruit_CircuitPython_BME280#4 from chickadee-tech/lint
  > Merge pull request adafruit/Adafruit_CircuitPython_BME280#5 from jerryneedell/patch-1
  > Merge pull request adafruit/Adafruit_CircuitPython_BME280#3 from chickadee-tech/lint

Updating https://github.com/adafruit/Adafruit_CircuitPython_BME680 to 3.0.1 from 3.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_BME680#4 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_BMP280 to 3.0.3 from 3.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_BMP280#6 from dhalbert/chip_id_error
  > Merge pull request adafruit/Adafruit_CircuitPython_BMP280#5 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_BNO055 to 3.0.2 from 3.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_BNO055#7 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_CCS811 to 1.0.2 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_CCS811#10 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_CharLCD to 2.2.1 from 2.2:
  > Merge pull request adafruit/Adafruit_CircuitPython_CharLCD#7 from brentru/fix-autodoc

Updating https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground to 1.2.1 from 1.2.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_CircuitPlayground#29 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_DHT to 3.0.1 from 3.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_DHT#4 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_DotStar to 1.1.4 from 1.1.3:
  > Merge pull request adafruit/Adafruit_CircuitPython_DotStar#13 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_DotStar#12 from mattytrentini/master
  > Merge pull request adafruit/Adafruit_CircuitPython_DotStar#11 from mrmcwethy/examples
  > Add RTD.yaml and requirements as cookiecutter would generate them.
  > Merge pull request adafruit/Adafruit_CircuitPython_DotStar#8 from chickadee-tech/master
  > Don't use requirements.txt with RTD
  > Tweak the doc badge

Updating https://github.com/adafruit/Adafruit_CircuitPython_DRV2605 to 0.8.2 from 0.8.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_DRV2605#4 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_DS1307 to 1.2.1 from 1.2.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_DS1307#4 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_DS2413 to 1.0.2 from 1.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_DS2413#5 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_DS2413#4 from brentru/fix-autodoc
  > Merge pull request adafruit/Adafruit_CircuitPython_DS2413#3 from brentru/readthedocs-badge

Updating https://github.com/adafruit/Adafruit_CircuitPython_DS3231 to 2.0.4 from 2.0.2:
  > Merge pull request adafruit/Adafruit_CircuitPython_DS3231#6 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_DS3231#5 from brentru/fix-autodoc

Updating https://github.com/adafruit/Adafruit_CircuitPython_Fingerp to 1.0.2 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_Fingerp#6 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_FXAS21002C to 1.0.2 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_FXAS21002C#4 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_FXOS8700 to 1.0.2 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_FXOS8700#6 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_GPS to 3.0.2 from 3.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_GPS#3 from cefn/master
  > Merge pull request adafruit/Adafruit_CircuitPython_GPS#2 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_HT16K33 to 2.0.2 from 2.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_HT16K33#5 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_INA219 to 3.0.2 from 3.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_INA219#3 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_INA219#2 from brentru/fix-autodoc

Updating https://github.com/adafruit/Adafruit_CircuitPython_IRRemote to 3.0.2 from 3.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_IRRemote#7 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_IS31FL3731 to 2.1.2 from 2.1.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_IS31FL3731#9 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_LIS3DH to 4.0.2 from 4.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_LIS3DH#25 from sommersoft/new_docs

Updating https://github.com/adafruit/Adafruit_CircuitPython_LSM303 to 1.1.0 from 1.0.2:
  > Merge pull request adafruit/Adafruit_CircuitPython_LSM303#3 from kattni/property-name-update

Updating https://github.com/adafruit/Adafruit_CircuitPython_MAX31855 to 3.0.1 from 3.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_MAX31855#5 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_MAX31855#4 from mrmcwethy/examples

Updating https://github.com/adafruit/Adafruit_CircuitPython_MAX7219 to 1.0.1 from 1.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_MAX7219#10 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_MAX7219#9 from mrmcwethy/addexamples

Updating https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel to 3.2.0 from 3.1.2:
  > Merge pull request adafruit/Adafruit_CircuitPython_NeoPixel#24 from caternuson/master

Updating https://github.com/adafruit/Adafruit_CircuitPython_RFM69 to 1.1.0 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_RFM69#4 from sommersoft/new_docs
  > Merge pull request adafruit/Adafruit_CircuitPython_RFM69#3 from jerryneedell/jerryn_baudrate

Updating https://github.com/adafruit/Adafruit_CircuitPython_SI5351 to 1.0.1 from 1.0.0:
  > Fix enable logic to invert control state.

Updating https://github.com/adafruit/Adafruit_CircuitPython_SSD1306 to 2.3.0 from 2.2.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_SSD1306#10 from mrmcwethy/redmerst
  > Merge pull request adafruit/Adafruit_CircuitPython_SSD1306#9 from raidancampbell/feature/expose_functions

Updating https://github.com/adafruit/Adafruit_CircuitPython_FeatherWing to 0.9.0 from 0.8.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_FeatherWing#3 from kattni/joy-featherwing

Updating https://github.com/adafruit/Adafruit_CircuitPython_RTTTL to 2.0.1 from 2.0.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_RTTTL#3 from brentru/fix-autodoc

Updating https://github.com/adafruit/Adafruit_CircuitPython_SimpleIO to 1.0.2 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_SimpleIO#27 from brentru/fix-autodoc
  > Merge pull request adafruit/Adafruit_CircuitPython_SimpleIO#25 from brentru/example-codes
  > Merge pull request adafruit/Adafruit_CircuitPython_SimpleIO#26 from inventhouse/inventhouse-servo-patch-1
kattni pushed a commit that referenced this pull request May 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants