Multiple Transactions Converts First Account to Signer

If you add a second instruction to a transaction that has no signing accounts it will convert the first account to is_signer=True. An example below. I am curious if anyone knows where this behavior is emerging from so I can push a patch

instruction = TransactionInstruction(
    keys=[AccountMeta(SYSVAR_CLOCK_PUBKEY, is_signer=False, is_writable=False)],
    program_id=SYSVAR_CLOCK_PUBKEY,
    data=b''
)
transaction.add(instruction)
transaction.add(instruction)

print(transaction.instructions)

Output

(TransactionInstruction(keys=[AccountMeta(pubkey=SysvarC1ock11111111111111111111111111111111, is_signer=True, is_writable=False)], program_id=SysvarC1ock11111111111111111111111111111111, data=b''),
 TransactionInstruction(keys=[AccountMeta(pubkey=SysvarC1ock11111111111111111111111111111111, is_signer=True, is_writable=False)], program_id=SysvarC1ock11111111111111111111111111111111, data=b''))

What version are you using?

what happens if you .serialize() and complete the transaction?
does it fail?

I think this comes from the .instructions setter using the self.fee_payer property which assumes that the first account is the fee payer. When adding the first instruction, self.fee_payer is None, but after that self.fee_payer is the pubkey of the first account in the first instruction. This fee_payer then gets passed to Message.new_with_blockhash which causes it to be considered a signer.
I'm not sure what we should do here. Using the first account as the fee payer comes from the Rust SDK. Here's what the Message docs say about the fee payer:
/// Some constructors accept an optional `payer`, the account responsible for /// paying the cost of executing a transaction. In most cases, callers should /// specify the payer explicitly in these constructors. In some cases though, /// the caller is not _required_ to specify the payer, but is still allowed to: /// in the `Message` structure, the first account is always the fee-payer, so if /// the caller has knowledge that the first account of the constructed /// transaction's `Message` is both a signer and the expected fee-payer, then /// redundantly specifying the fee-payer is not strictly required.

I think the solution here is to require fee_payer when initializing a Transaction instead of making it optional. This is a breaking change though. Thoughts?

This would be totally fine with me but I'm not sure how much pain it would cause others. This behavior makes it hard for me to build complicated transactions with multiple instructions

Jumping here.
On my side that would be a breaking change, forcing fee payer at init.
Glad to explore possible paths with y'all!

This would be totally fine with me but I'm not sure how much pain it would cause others. This behavior makes it hard for me to build complicated transactions with multiple instructions

Might be already tried, did you tried to manually swap the book value within the transaction?
Setting the prop. Fee_payer to None?
Just dumping first thoughts to see a possible fixes here.

@benedictbrady for now if you pass the fee_payer arg when initializing Transaction it should work. Also if you're building complicated Transactions it's probably simpler to just use Solders directly as there's one less layer of indirectionc

@benedictbrady for now if you pass the fee_payer arg when initializing Transaction it should work. Also if you're building complicated Transactions it's probably simpler to just use Solders directly as there's one less layer of indirection

perfect, thanks @kevinheavey


[T4A6][W15-B1] Jazlyn Ang

Ready for review

Don't forget to add method comment and header comments even though this is just a test class!
Also make sure you set the tab as 4 spaces in Eclipse (seems like you are still using 8 spaces tab).


wstunnel quits if invalid protocol passed

If anything other than "tunnel-protocol" is requested, the server prints an error to the console, and quits. This represents at best, an instability, and at worst a vector for a DOS attack.
Any possibility the server could reject the invalid connection, and then keep running, so existing users are not dropped?

Most invalid payload should be rejected with http 400 error, but I have never tried an exhaustive random attack.  If you can post a payload that causes server to quit, then I can take a deeper look.

Can reproduce it like this:
wstunnel -s <IP_ADDRESS>:8080 -t google.com:80
Then simply type this in Chrome inspector:
var ws = new WebSocket('ws://serverip:8080/','test');
If 'test' is anything but 'tunnel-protocol', the server dies:
[Dec 23 2018 03:12:15.866 GMT+0000] Client <IP_ADDRESS> establishing ws tunnel to google.com:80
/usr/local/lib/node_modules/wstunnel/node_modules/websocket/lib/WebSocketRequest.js:289
throw new Error('Specified protocol was not requested by the client.');
^
Error: Specified protocol was not requested by the client.
at WebSocketRequest.accept (/usr/local/lib/node_modules/wstunnel/node_modules/websocket/lib/WebSocketRequest.js:289:19)
at Socket.net.connect (/usr/local/lib/node_modules/wstunnel/lib/WstServer.js:52:34)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1173:10)

Fixed in version 1.2.7.


fix: mutliple onPageLoad api call

Description
Remove multiple fetchAllPageEntityCompletion call in initAppViewer
Fixes #

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/ok-to-test sha=b2f13e2


[bug] zombie process

Describe the bug
When Ulauncher exits, all other extensions exit as expected, but calculate-anything lingers. If I start another Ulauncher, there will be two calculate-anything instances running. If I exit Ulauncher again, two calculate-anything instances are lingering.
To Reproduce
# run it for the first time
sh-5.1$ ulauncher --hide-window
# then hit ctrl-c
sh-5.1$ ps axl | grep -i ulauncher
0  1000   45551       1  20   0<PHONE_NUMBER>2 futex_ Sl   pts/1      0:00 /bin/python /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/main.py
0  1000   45609   44870  20   0   6672  2680 pipe_r S+   pts/1      0:00 grep -i ulauncher

# run again
sh-5.1$ ulauncher --hide-window
# then hit ctrl-c
sh-5.1$ ps axl | grep -i ulauncher
0  1000   45551       1  20   0<PHONE_NUMBER>4 futex_ Sl   pts/1      0:00 /bin/python /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/main.py
0  1000   46220       1  20   0<PHONE_NUMBER>6 futex_ Sl   pts/1      0:00 /bin/python /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/main.py
0  1000   46276   44870  20   0   6672  2684 pipe_r S+   pts/1      0:00 grep -i ulauncher

Same result with these alternatives:

GDK_BACKEND=wayland.
exec GDK_BACKEND=wayland ulauncher --hide-window in sway config and exit from widget menu

Expected behavior
com.github.tchar.ulauncher-albert-calculate-anything/main.py should terminate like other extensions.
Desktop (please complete the following information)

Arch Linux
sway

Hello @tsankuanglee I need to take a look into that.
So here is what I think happens. There is a thread that will run every x amount of time to update the currency. And I think this is what is causing it to linger.
Can you try setting the time to the lowest possible (or off) and try this again and tell me this happens?
If you set it to something very low, then wait for the time to pass (so the thread runs) and then check if it is killed.
If this is the case, maybe I would need to either change the thread to another mechanism or check for signals (if propagated) to see if I can catch them and kill the thread while sleeping.
Cheers

tchar

@tchar Thanks for the response.
The lowest interval provided from the UI is None, and then one day. I changed the code to add 10 seconds as an option and tested it. Still the same results (lingering processes).
This time, I tested with i3 in X11.

Hello @tsankuanglee I have been trying to identify the issue.
Are you sure it did not occur before? For example, on my computer (Ubuntu LTS) I do have a running ulauncher process on my startup even after removing my extension.
Here is an example from my system:
> ulauncher --hide-window
Ctrl-C                                                                                > ps axl | grep -i ulauncher
0  1000    5362    2949  20   0   9052   720 pipe_r S+   pts/0      0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox -i ulauncher

And here are all my extensions after removing my extension.

I want to make sure that my extension is causing the problem because I get this running process regardless of my extension.

@tsankuanglee Here is the equivalent logs after using the command ulauncher --hide-window. The logs are located in ~/.cache/com.github.tchar.calculate-anything/log.
You can see at the timestamp 2022-04-02:20:09:34.808 (4th from the end) the thread sleeps. Then after a few seconds I hit Ctrl-C and the last 3 logs actually close the database connection and stop the thread.
Then I do ps axl | grep -i ulauncher and I see nothing.
2022-04-02:20:09:34.598 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set language
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default cities
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set units conversion mode
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set currency providers
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set cache interval
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default currencies
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: LanguagePreferences: lang = en_US
2022-04-02:20:09:34.599 | INFO | [calculate_anything.utils.misc.safe_operation:186]: TimePreferences: default_cities = [('new york city', 'US'), ('london', 'GB'), ('madrid', 'ES'), ('vancouver', 'CA'), ('athens', 'GR')]
2022-04-02:20:09:34.600 | INFO | [calculate_anything.utils.loaders.sqlite._load:84]: Loaded timezone database: /home/user/.cache/com.github.tchar.calculate-anything/timezones.sqlite3
2022-04-02:20:09:34.638 | INFO | [calculate_anything.utils.misc.safe_operation:186]: UnitsPreferences: units_conversion_mode = ConversionMode.NORMAL
2022-04-02:20:09:34.741 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/currency/definitions.txt
2022-04-02:20:09:34.745 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/currency.txt
2022-04-02:20:09:34.749 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/units.txt
2022-04-02:20:09:34.750 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: add_provider = <calculate_anything.currency.providers.base._MockCurrencyProvider object at 0x7fa4b6700be0>
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.remove_provider:186]: Removing provider _MockCurrencyProvider
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.add_provider:180]: Adding provider _MockCurrencyProvider
2022-04-02:20:09:34.750 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: cache_update_frequency = 86400
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.enable_cache:154]: Enabling cache with update frequency = 86400
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.cache.enable:80]: Enabling cache every 86400s
2022-04-02:20:09:34.750 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: default_currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.set_default_currencies:194]: Updating default currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.start:240]: Currency Service is running
2022-04-02:20:09:34.750 | INFO | [calculate_anything.currency.service.UpdateThread(id=e3ad429bdeee).run:97]: Starting thread
2022-04-02:20:09:34.751 | INFO | [calculate_anything.units.service._update_callback:52]: Updating currency registry
2022-04-02:20:09:34.807 | INFO | [calculate_anything.units.service._update_callback:83]: Updated currency registry with 348 currencies
2022-04-02:20:09:34.808 | INFO | [calculate_anything.currency.service.UpdateThread(id=e3ad429bdeee).run:103]: Sleeping for 86305s
2022-04-02:20:09:50.414 | INFO | [calculate_anything.time.sqlite_cache.close_db:218]: Database closed
2022-04-02:20:09:50.415 | INFO | [calculate_anything.currency.service.UpdateThread(id=e3ad429bdeee).run:114]: Forcefully woke up after 16s
2022-04-02:20:09:50.415 | INFO | [calculate_anything.currency.service.UpdateThread(id=e3ad429bdeee).run:116]: Stopping thread

Good call, @tchar! Here you go. I waited for two more minutes so that thread keeps writing log two more times.
2022-04-02:23:24:58.963 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set language
2022-04-02:23:24:58.963 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default cities
2022-04-02:23:24:58.963 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set units conversion mode
2022-04-02:23:24:58.963 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set currency providers
2022-04-02:23:24:58.963 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set cache interval
2022-04-02:23:24:58.964 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default currencies
2022-04-02:23:24:58.964 | INFO | [calculate_anything.utils.misc.safe_operation:186]: LanguagePreferences: lang = en_US
2022-04-02:23:24:58.964 | INFO | [calculate_anything.utils.misc.safe_operation:186]: TimePreferences: default_cities = [('london', None), ('honolulu', 'US'), ('los angeles', 'US'), ('salt lake city', 'US'), ('chicago', 'US'), ('new york city', 'US')]
2022-04-02:23:24:58.964 | INFO | [calculate_anything.utils.loaders.sqlite._load:84]: Loaded timezone database: /home/user/.cache/com.github.tchar.calculate-anything/timezones.sqlite3
2022-04-02:23:24:59.003 | INFO | [calculate_anything.utils.misc.safe_operation:186]: UnitsPreferences: units_conversion_mode = ConversionMode.NORMAL
2022-04-02:23:24:59.128 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/currency/definitions.txt
2022-04-02:23:24:59.133 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/currency.txt
2022-04-02:23:24:59.139 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/units.txt
2022-04-02:23:24:59.139 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: add_provider = <calculate_anything.currency.providers.base._MockCurrencyProvider object at 0x7f0ff7322fe0>
2022-04-02:23:24:59.139 | INFO | [calculate_anything.currency.service.remove_provider:186]: Removing provider _MockCurrencyProvider
2022-04-02:23:24:59.139 | INFO | [calculate_anything.currency.service.add_provider:180]: Adding provider _MockCurrencyProvider
2022-04-02:23:24:59.139 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: cache_update_frequency = 10
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.service.enable_cache:154]: Enabling cache with update frequency = 10
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.cache.enable:80]: Enabling cache every 10s
2022-04-02:23:24:59.140 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: default_currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.service.set_default_currencies:194]: Updating default currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.service.start:240]: Currency Service is running
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:97]: Starting thread
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5)._get_currencies:68]: Will load currencies
2022-04-02:23:24:59.140 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-02:23:24:59.141 | INFO | [calculate_anything.currency.providers.european_central_bank.request_currencies:91]: Making request to: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
2022-04-02:23:24:59.142 | INFO | [calculate_anything.currency.providers.mycurrencynet.request_currencies:75]: Making request to: https://www.mycurrency.net/US.json
2022-04-02:23:24:59.142 | INFO | [calculate_anything.currency.providers.coinbase.request_currencies:94]: Making request to: https://api.coinbase.com/v2/exchange-rates?currency=EUR
2022-04-02:23:25:00.002 | INFO | [calculate_anything.currency.cache.save:141]: Writing currency data to file
2022-04-02:23:25:00.006 | INFO | [calculate_anything.units.service._update_callback:52]: Updating currency registry
2022-04-02:23:25:00.128 | INFO | [calculate_anything.units.service._update_callback:83]: Updated currency registry with 348 currencies
2022-04-02:23:25:00.128 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:103]: Sleeping for 60s
2022-04-02:23:26:00.128 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:114]: Normally woke up after 60s
2022-04-02:23:26:00.129 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5)._get_currencies:68]: Will load currencies
2022-04-02:23:26:00.129 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-02:23:26:00.130 | ERROR | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-02:23:26:00.132 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-02:23:26:00.132 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:103]: Sleeping for 60s
2022-04-02:23:27:00.133 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:114]: Normally woke up after 60s
2022-04-02:23:27:00.133 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5)._get_currencies:68]: Will load currencies
2022-04-02:23:27:00.134 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-02:23:27:00.134 | ERROR | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-02:23:27:00.135 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-02:23:27:00.135 | INFO | [calculate_anything.currency.service.UpdateThread(id=c645c5fa08f5).run:103]: Sleeping for 60s

FYI, I did not get any API keys for any service.
Thanks again for this!

@tsankuanglee Thanks for this.
I am seeing some errors, which are not normal, can you point me down to which timestamp you hit Ctrl-C?
It looks like everything happens really fast (in 3 seconds). If you check my logs I wait a bit after hitting it so there are a few seconds of waiting. Can you do the same so I can see the logs until the normal startup and then wait a few seconds and then press Ctrl-C?
Also, provide me if you can the settings you use on the extension.
Thank you.

I'm pasting two logs.
This is the log from ulauncher's console (ctrl-c at : 2022-04-03 00:43:10). Notice that at the end the other extensions exit. (I did remove other extensions' log for brevity).
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,770 | INFO | calculate_anything.utils.misc: safe_operation() | Set language
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,770 | INFO | calculate_anything.utils.misc: safe_operation() | Set default cities
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | Set units conversion mode
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | Set currency providers
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | Set cache interval
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | Set default currencies
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | LanguagePreferences: lang = en_US
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.misc: safe_operation() | TimePreferences: default_cities = [('london', None), ('honolulu', 'US'), ('los angeles', 'US'), ('salt lake city', 'US'), ('austin', 'US'), ('new york city', 'US')]
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,771 | INFO | calculate_anything.utils.loaders.sqlite: _remove() | Found new timezones, cleared database
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:36,799 | INFO | calculate_anything.utils.loaders.sqlite: _create() | Did not find sqlite db /home/user/.cache/com.github.tchar.calculate-anything/timezones.sqlite3, created from scratch
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,347 | INFO | calculate_anything.utils.misc: safe_operation() | UnitsPreferences: units_conversion_mode = ConversionMode.NORMAL
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,409 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,409 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,409 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,410 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,410 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,410 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,410 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,410 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,411 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,415 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,415 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,415 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,415 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,416 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,416 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,416 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,416 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,416 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,417 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,418 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,418 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,419 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,419 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,419 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,419 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,420 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,420 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,424 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,425 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,429 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,429 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,434 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,434 | WARNING | pint.util: get_name() | Parsing cm yield multiple results. Options are: (('centi', 'molar', ''), ('centi', 'meter', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,437 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,437 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,443 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,443 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,443 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,444 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,445 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,446 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,446 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,446 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,446 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,446 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,447 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,447 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,447 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,447 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,449 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,449 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,450 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,451 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,451 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,451 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,452 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,452 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,452 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,452 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,452 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,453 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,453 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,454 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,455 | WARNING | pint.util: get_name() | Parsing kg yield multiple results. Options are: (('kilo', 'gram', ''), ('kilo', 'gauss', ''))
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,475 | INFO | calculate_anything.units.parser: load_file() | Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/currency/definitions.txt
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,480 | INFO | calculate_anything.units.parser: load_file() | Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/currency.txt
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degree_Celsius' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining '°C' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'celsius' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degC' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degreeC' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'c' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degree_Celsius' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining '°C' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'celsius' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degC' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degreeC' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'c' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'celcius' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degree_Fahrenheit' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining '°F' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'fahrenheit' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,484 | WARNING | pint.util: _define_single_adder() | Redefining 'degF' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'degreeF' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'f' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'degree_Fahrenheit' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining '°F' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'fahrenheit' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'degF' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'degreeF' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'f' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,485 | WARNING | pint.util: _define_single_adder() | Redefining 'farenheit' (<class 'pint.definitions.UnitDefinition'>)
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.units.parser: load_file() | Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/units.txt
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.utils.misc: safe_operation() | CurrencyPreferences: add_provider = <calculate_anything.currency.providers.base._MockCurrencyProvider object at 0x7f3b904b87f0>
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.currency.service: remove_provider() | Removing provider _MockCurrencyProvider
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.currency.service: add_provider() | Adding provider _MockCurrencyProvider
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.utils.misc: safe_operation() | CurrencyPreferences: cache_update_frequency = 10
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.currency.service: enable_cache() | Enabling cache with update frequency = 10
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.currency.cache: enable() | Enabling cache every 10s
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.utils.misc: safe_operation() | CurrencyPreferences: default_currencies = ['USD', 'EUR', 'GBP', 'CAD']
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,486 | INFO | calculate_anything.currency.service: set_default_currencies() | Updating default currencies = ['USD', 'EUR', 'GBP', 'CAD']
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,487 | INFO | calculate_anything.currency.service: start() | Currency Service is running
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,487 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): run() | Starting thread
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,487 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): _get_currencies() | Will load currencies
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,487 | INFO | calculate_anything.currency.cache: clear() | Clearing cache False
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,488 | INFO | calculate_anything.currency.providers.european_central_bank: request_currencies() | Making request to: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,488 | INFO | calculate_anything.currency.providers.mycurrencynet: request_currencies() | Making request to: https://www.mycurrency.net/US.json
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:37,488 | INFO | calculate_anything.currency.providers.coinbase: request_currencies() | Making request to: https://api.coinbase.com/v2/exchange-rates?currency=EUR
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:38,386 | INFO | calculate_anything.currency.cache: save() | Writing currency data to file
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:38,390 | INFO | calculate_anything.units.service: _update_callback() | Updating currency registry
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:38,509 | INFO | calculate_anything.units.service: _update_callback() | Updated currency registry with 348 currencies
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:41:38,510 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): run() | Sleeping for 60s
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,510 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): run() | Normally woke up after 60s
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,510 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): _get_currencies() | Will load currencies
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,511 | INFO | calculate_anything.currency.cache: clear() | Clearing cache False
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,512 | INFO | calculate_anything.currency.providers.european_central_bank: request_currencies() | Making request to: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,513 | INFO | calculate_anything.currency.providers.mycurrencynet: request_currencies() | Making request to: https://www.mycurrency.net/US.json
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:38,552 | INFO | calculate_anything.currency.providers.coinbase: request_currencies() | Making request to: https://api.coinbase.com/v2/exchange-rates?currency=EUR
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:39,374 | INFO | calculate_anything.currency.cache: save() | Writing currency data to file
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:39,377 | INFO | calculate_anything.units.service: _update_callback() | Updating currency registry
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:39,481 | INFO | calculate_anything.units.service: _update_callback() | Updated currency registry with 348 currencies
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:42:39,481 | INFO | calculate_anything.currency.service.UpdateThread(id=211bdd5ef066): run() | Sleeping for 60s
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:43:10,188 | ERROR | ulauncher.api.client.Client: on_error() | WS Client error
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:43:10,204 | ERROR | websocket: error() | error from callback <function Client.connect.<locals>.<lambda> at 0x7f3b902abc70>: Client.connect.<locals>.<lambda>() takes 1 positional argument but 3 were given
com.github.tchar.ulauncher-albert-calculate-anything | 2022-04-03 00:43:10,205 | ERROR | ulauncher.api.client.Client: on_error() | WS Client error Client.connect.<locals>.<lambda>() takes 1 positional argument but 3 were given
2022-04-03 00:43:10,273 | ERROR | ulauncher.api.server.ExtensionRunner: _run_process() | Extension "com.github.rootwork.ulauncher-symbol" was terminated with code 0
2022-04-03 00:43:10,276 | ERROR | ulauncher.api.server.ExtensionRunner: _run_process() | Extension "com.github.mikebarkmin.ulauncher-snippets" was terminated with code 0

This is the extension's runtime log (notice the thread lived on and created an error per minute, until I manually killed it):
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set language
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default cities
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set units conversion mode
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set currency providers
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set cache interval
2022-04-03:00:41:36.771 | INFO | [calculate_anything.utils.misc.safe_operation:186]: Set default currencies
2022-04-03:00:41:36.772 | INFO | [calculate_anything.utils.misc.safe_operation:186]: LanguagePreferences: lang = en_US
2022-04-03:00:41:36.772 | INFO | [calculate_anything.utils.misc.safe_operation:186]: TimePreferences: default_cities = [('london', None), ('honolulu', 'US'), ('los angeles', 'US'), ('salt lake city', 'US'), ('austin', 'US'), ('new york city', 'US')]
2022-04-03:00:41:36.772 | INFO | [calculate_anything.utils.loaders.sqlite._remove:115]: Found new timezones, cleared database
2022-04-03:00:41:36.799 | INFO | [calculate_anything.utils.loaders.sqlite._create:149]: Did not find sqlite db /home/user/.cache/com.github.tchar.calculate-anything/timezones.sqlite3, created from scratch
2022-04-03:00:41:37.348 | INFO | [calculate_anything.utils.misc.safe_operation:186]: UnitsPreferences: units_conversion_mode = ConversionMode.NORMAL
2022-04-03:00:41:37.476 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/currency/definitions.txt
2022-04-03:00:41:37.481 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/currency.txt
2022-04-03:00:41:37.486 | INFO | [calculate_anything.units.parser.load_file:122]: Loaded unit definitions: /home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/data/lang/units.txt
2022-04-03:00:41:37.487 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: add_provider = <calculate_anything.currency.providers.base._MockCurrencyProvider object at 0x7f3b904b87f0>
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.remove_provider:186]: Removing provider _MockCurrencyProvider
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.add_provider:180]: Adding provider _MockCurrencyProvider
2022-04-03:00:41:37.487 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: cache_update_frequency = 10
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.enable_cache:154]: Enabling cache with update frequency = 10
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.cache.enable:80]: Enabling cache every 10s
2022-04-03:00:41:37.487 | INFO | [calculate_anything.utils.misc.safe_operation:186]: CurrencyPreferences: default_currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.set_default_currencies:194]: Updating default currencies = ['USD', 'EUR', 'GBP', 'CAD']
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.start:240]: Currency Service is running
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:97]: Starting thread
2022-04-03:00:41:37.487 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:41:37.488 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:41:37.488 | INFO | [calculate_anything.currency.providers.european_central_bank.request_currencies:91]: Making request to: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
2022-04-03:00:41:37.489 | INFO | [calculate_anything.currency.providers.mycurrencynet.request_currencies:75]: Making request to: https://www.mycurrency.net/US.json
2022-04-03:00:41:37.489 | INFO | [calculate_anything.currency.providers.coinbase.request_currencies:94]: Making request to: https://api.coinbase.com/v2/exchange-rates?currency=EUR
2022-04-03:00:41:38.386 | INFO | [calculate_anything.currency.cache.save:141]: Writing currency data to file
2022-04-03:00:41:38.391 | INFO | [calculate_anything.units.service._update_callback:52]: Updating currency registry
2022-04-03:00:41:38.510 | INFO | [calculate_anything.units.service._update_callback:83]: Updated currency registry with 348 currencies
2022-04-03:00:41:38.510 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:42:38.510 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:42:38.511 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:42:38.511 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:42:38.513 | INFO | [calculate_anything.currency.providers.european_central_bank.request_currencies:91]: Making request to: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
2022-04-03:00:42:38.514 | INFO | [calculate_anything.currency.providers.mycurrencynet.request_currencies:75]: Making request to: https://www.mycurrency.net/US.json
2022-04-03:00:42:38.552 | INFO | [calculate_anything.currency.providers.coinbase.request_currencies:94]: Making request to: https://api.coinbase.com/v2/exchange-rates?currency=EUR
2022-04-03:00:42:39.375 | INFO | [calculate_anything.currency.cache.save:141]: Writing currency data to file
2022-04-03:00:42:39.378 | INFO | [calculate_anything.units.service._update_callback:52]: Updating currency registry
2022-04-03:00:42:39.482 | INFO | [calculate_anything.units.service._update_callback:83]: Updated currency registry with 348 currencies
2022-04-03:00:42:39.482 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:43:39.482 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:43:39.483 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:43:39.483 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:43:39.484 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:43:39.486 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:43:39.486 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:44:39.487 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:44:39.487 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:44:39.487 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:44:39.488 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:44:39.489 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:44:39.489 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:45:39.490 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:45:39.490 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:45:39.491 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:45:39.491 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:45:39.492 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:45:39.492 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:46:39.493 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:46:39.493 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:46:39.493 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:46:39.494 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:46:39.495 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:46:39.495 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:47:39.496 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:47:39.496 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:47:39.497 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:47:39.498 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:47:39.499 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:47:39.500 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:48:39.500 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:48:39.501 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:48:39.501 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:48:39.502 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:48:39.503 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:48:39.503 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:49:39.504 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:49:39.504 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:49:39.505 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:49:39.505 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:49:39.506 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:49:39.506 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s
2022-04-03:00:50:39.507 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:114]: Normally woke up after 60s
2022-04-03:00:50:39.507 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._get_currencies:68]: Will load currencies
2022-04-03:00:50:39.508 | INFO | [calculate_anything.currency.cache.clear:108]: Clearing cache False
2022-04-03:00:50:39.508 | ERROR | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066)._run:86]: Could not get currencies: cannot schedule new futures after interpreter shutdown
Traceback (most recent call last):
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 84, in _run
    currency_rates = self._get_currencies(force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/service.py", line 70, in _get_currencies
    currency_rates = self._provider.request_currencies(
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/base.py", line 39, in _wrapper
    return func(self, *currencies, force=force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 140, in request_currencies
    tasks_free = self._request_free(currencies, force)
  File "/home/user/.local/share/ulauncher/extensions/com.github.tchar.ulauncher-albert-calculate-anything/calculate_anything/currency/providers/combined.py", line 106, in _request_free
    task = executor.submit(
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
2022-04-03:00:50:39.509 | WARNING | [calculate_anything.units.service._update_callback:50]: Got empty data, will not reset data
2022-04-03:00:50:39.509 | INFO | [calculate_anything.currency.service.UpdateThread(id=211bdd5ef066).run:103]: Sleeping for 60s

Is this still affecting you?


Fix typo

Hey, I noticed what looks like a small typo on the documentation.

Thank you! "sensible" = "sensitive" in french 😅

That's interesting.


[WIP] More lambda improvements

Related issues
Ref #1193

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2021-10-18T17:56:21.774+0000

Duration: 30 min 45 sec

Commit: 5e688badd5a56c8ea688dc73c062a0a7e7c76382

Test stats :test_tube:

Test
Results

Failed
0

Passed
10127

Skipped
8977

Total
19104

:green_heart: Flaky test report
Tests succeeded.
:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2021-11-02T17:14:32.832+0000

Duration: 33 min 41 sec

Commit: 65b93e76dc2b4233ce5838b5dbdc93f27846fbcd

Test stats :test_tube:

Test
Results

Failed
0

Passed
10143

Skipped
8977

Total
19120

:green_heart: Flaky test report
Tests succeeded.
:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.


Allow results from multiple countries

Utilise comma separated SHIPS_FROM env var

Done in https://github.com/jch254/discogs-market-monitor/commit/24331c13cc071a11eb20bf21113dee5c9bc26df6


SandboxMirror.kext fails to compile on macOS 10.12.4 with XCode 8.3.2

my xcode version is 8.3.2 (8E2002)，use xcodebuild to compile sandboxmirrord ok，but compile SandboxMirror generated the following error:
SandboxMirror/SandboxMirror/SandboxMirror/SandboxMirror.cpp:6574:5: error:
      no member named 'mpo_reserved31' in
      'mac_policy_ops'
    SET_HOOK_OVERRIDE_RES(system_check_sysctl, reserved31);

I just had no problem building on macOS 10.12.4 with XCode 8.0 (8A218a).  Let me try again with later versions and see what happens.  It's possible they're at fault here.

I've confirmed your report.  I installed XCode 8.3.2 (8E2002) over my previous copy of XCode 8.0, and I now get exactly the same error as you using xcodebuild (from the command line).
It will take me a while to figure out how to work around this.  In the meantime you could try installing XCode 8.0 on your system and using that.  You'll need to install it under a different name (or in a different directory).  But once you have two versions of XCode installed, you can use xcode-select to choose which is active.

thx, i'll try.

By trial and error, I've found out that XCode 8.0 is the last (most recent) version of XCode that works properly to compile SandboxMirror.kext.  I'll look for a way to work around this, but (as I said) that may take a while.
In the meantime you should use XCode 8.0 to compile SandboxMirror.kext on macOS 10.12.

This was suprisingly easy to fix.  It turns out that as of XCode 8.1, Apple renumbered the "mpo_reservedNN" members of "struct mac_policy_ops" in the macOS 10.12 SDK's mac_policy.h.  Fortunately Apple increments MAC_POLICY_OPS_VERSION whenever it changes this structure.  So we can check its value to see what kind of mpo_reservedNN numbering to expect.
Please download the current master branch and try compiling it with XCode 8.3.2.

As best I can tell, this is fixed.


add osi_is_service

Add osi_is_service so applications can check whether or not they are running as a service.

We're relying on C standard initialization for objects with static storage duration.

Thanks for the review, Bob!


dependabot + updated buf build + updated CLA build + regen protos

Bunch of stuff here:

updated actions used
added dependabot
removed duplicate actions on different events
addressed failures with buf gen & diff after moving to more recent version of grpc
now using authzed/actions for buf generation - also updated the version used
generated proto code with latest API, so it includes lookupsubjects
updated CLA job with latest centralized GH action

This is ready to go! I've commented the lookupsubjects test because it will fail, spicedb 1.12 hasn't been released yet.


Nonnegative gradients

Thanks for this great repo!
There's something that I can't figure out, though:
When using a gradient-based method, I always get nonnegative gradients.
Specifically, I put a breakpoint in line 95 of
https://github.com/jacobgil/pytorch-grad-cam/blob/master/pytorch_grad_cam/base_cam.py.
Then I employed the gradcam method, and examined this variable:  self.activations_and_gradients.gradients
No matter which input image or layer I choose, the gradients are always nonnegative.
Is there any reason it should be like that?
I know that some methods (e.g. gradcam++) truncate negative gradients, but for the original gradcam this is not the case (and it's not related to the ReLU on the final heat map).
Could it be somehow related to this issue?
Many thanks,
Boaz

Sorry, I have found the bug.
Closing the issue...


Move tests

Closes #188.
This PR does the following:

Moves tests for components into their corresponding component folders

Review:

[ ] Run npm run test in src/react-components/

@M0nica @scooooooooby does anyone have a preference of component-test.tsx vs component.test.tsx ?
I think I prefer component.test.ts and I'm not sure why it was named like this in the first place.  Since all the test files are touched, let's use this opportunity to rename the test file names?

@hokei I'm certainly fine with the latter, I do think it looks cleaner—although I couldn't tell you why. I can make the update.

Well, one neat thing I've realized... VSCode (or maybe my theme?) will update its lil'icon when you do so:

honestly the changed icon is 99% of the reason why I want to do it.

@hokei we are 3000% on the same page 😂

remember changelog update


Show an icon (recycling symbol?) on an empty stock, if redealing is possible (you could also show there the number of redeals left)

I have just noticed that this solitaire uses a nice half-circle indicator below the stock to show the number of redeals left:


Add documentation (template?) for GitHub CI/CD workflow

Similar to #4 but for GitHub CI/CD workflow
A work in progress implementation is available in this PR: https://github.com/data2health/nlp-sandbox-schemas/pull/7

@jaeddy @jb-adams Here is a working example that I created for a repository that hosts multiple OpenAPI specifications:
https://github.com/Sage-Bionetworks/nlp-sandbox-schemas/blob/develop/.github/workflows/ci.yml
Additional information are available here:
https://github.com/Sage-Bionetworks/nlp-sandbox-schemas/issues/30

Thanks @tschaffter !
Similar to #64 , I'd prefer to put this logic into the app itself to avoid replicating build/push logic across .travis.yml files for different GA4GH specs. I've started a feature branch to do this. In particular, the files gh-pages.js and git-config.js are handling similar logic as to what's in your ci.yml file.
I'm able to build, commit, and push to gh-pages all from a docker container running the app. Here is the repo containing a dummy "Hello World" API spec, that, when updated and pushed, triggers a push to gh-pages


[MM-50233] - Fix useGetLimits hook

Summary
useGetLimits hook was not reloading the limits when a product change happened. This PR attempts to fix that.
Ticket Link
https://mattermost.atlassian.net/browse/MM-50233
Release Note
NONE

E2E tests not automatically triggered, because PR has no approval yet. Please ask a developer to review and then try again to attach the QA label.


All documentation refers to the 1.0.0 API, which is not available through normal installation (Unable to load story '*' storybook)

You should maybe specify in the readme that the gem should be installed using the git url, or link the documentation to the 0.12.0 version ?
The documentation https://jonspalmer.github.io/view_component-storybook/ doesn't show a version, but one would assume it is for the most up to date available version, not the unreleased version with a different API.
The gem repository https://rubygems.org/gems/view_component_storybook only lists versions up to 0.12.0.
I think some clarity is needed to avoid headaches from the users of the gem.
The error which is displayed in the browser console is unable to load story '*' storybook when trying to use the documented API (for version 1.0.0) with the latest available version (0.12.0).
The documentation for version 0.12.0 can be found here https://github.com/jonspalmer/view_component-storybook/blob/add8d273d218c788c238580f1ac00e06d210313e/docs/guide/getting-started.md .

There was a problem with publishing the v1.0.0 with the updated name. Now fixed. Please confirm this is fixed for you and we can close this out.

Yes it works now!
Thanks !

The CHANGELOG.md still seems to think that 0.12.1 is the current version, which is not ideal when there are breaking changes. Has it moved somewhere else? (It took me long enough to notice that there was one, but it was in docs/ rather than the root :)


New version: Hitencent.JisuTodo version <IP_ADDRESS>

Created by 🥟 Dumplings in workflow run #6478.

Log
Updated: <IP_ADDRESS> → <IP_ADDRESS>
Submitting WinGet manifests
Creating manifests
Uploading manifests and making commits
Creating a pull request

Microsoft Reviewers: Open in CodeFlow

Automatic Validation ended with:

Installation failed with exit code -2145844848
2024-07-10 07:30:34.558 [CORE] DeliveryOptimization error: 0x80d02002, extended error: 0x80190190
2024-07-10 07:30:34.601 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\DODownloader.cpp(289)\WindowsPackageManager.dll!550D57EB: (caller: 550D5E1C) Exception(1) tid(1894) 80D02002
2024-07-10 07:30:41.410 [CORE] Download request failed. Returned status: 400
2024-07-10 07:30:41.412 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Downloader.cpp(148)\WindowsPackageManager.dll!550CFA75: (caller: 550D0E2B) Exception(2) tid(1894) 80190190 Bad request (400).
2024-07-10 07:30:41.423 [CLI ] Failed to download, waiting a bit and retry. Url: https://dl.jisutodo.com/jisutodo_setup_<IP_ADDRESS>.exe
2024-07-10 07:31:42.378 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\DODownloader.cpp(267)\WindowsPackageManager.dll!550D570C: (caller: 550D5E1C) Exception(3) tid(1894) 80D02002
2024-07-10 07:31:43.119 [CORE] Download request failed. Returned status: 400
2024-07-10 07:31:43.120 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Downloader.cpp(148)\WindowsPackageManager.dll!550CFA75: (caller: 550D0E2B) Exception(4) tid(1894) 80190190 Bad request (400).

Automated error analysis suggests 0x80D02002 may mean The operation timed out.
(Automated response - build 886.)

Automatic Validation ended with:

Installation failed with exit code -2145844848
2024-07-11 17:34:57.170 [CORE] DeliveryOptimization error: 0x80190190, extended error: 0x00000000
2024-07-11 17:34:57.271 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\DODownloader.cpp(289)\WindowsPackageManager.dll!556857EB: (caller: 55685E1C) Exception(1) tid(700) 80190190 Bad request (400).
2024-07-11 17:34:59.586 [CORE] Download request failed. Returned status: 400
2024-07-11 17:34:59.586 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Downloader.cpp(148)\WindowsPackageManager.dll!5567FA75: (caller: 55680E2B) Exception(2) tid(700) 80190190 Bad request (400).
2024-07-11 17:34:59.602 [CLI ] Failed to download, waiting a bit and retry. Url: https://dl.jisutodo.com/jisutodo_setup_<IP_ADDRESS>.exe
2024-07-11 17:35:05.576 [CORE] DeliveryOptimization error: 0x80190190, extended error: 0x00000000
2024-07-11 17:35:05.576 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\DODownloader.cpp(289)\WindowsPackageManager.dll!556857EB: (caller: 55685E1C) Exception(3) tid(700) 80190190 Bad request (400).
2024-07-11 17:35:05.870 [CORE] Download request failed. Returned status: 400
2024-07-11 17:35:05.870 [FAIL] D:\a_work\1\s\external\pkg\src\AppInstallerCommonCore\Downloader.cpp(148)\WindowsPackageManager.dll!5567FA75: (caller: 55680E2B) Exception(4) tid(700) 80190190 Bad request (400).

(Automated response - build 886.)

URL: https://dl.jisutodo.com/jisutodo_setup_<IP_ADDRESS>.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 911)

URL: https://dl.jisutodo.com/jisutodo_setup_<IP_ADDRESS>.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 911)


When saving a model to a folder structure give relationships files a deterministic name

All files in the folder struc have a deterministic name, except for the relationships. These are random GUIDs.

One of the great function of saving to a folder is that you can compare different models with eachother using tools like WinMerge. It also makes it possible to, on a file system level, share objects between models.
The random nature of GUIDs inhibit a lot of this functionality.

Hi Jason,
The GUIDs are generated by the TOM, but we can control the names when serializing to a folder structure. Would you prefer that the name simply reflect the FromColumn, ToColumn and filter direction of the relationship (similar to how it is displayed in the UI), or would you rather have an option to supply your own name for each relationship?
In the former case, you should be aware that changing the FromColumn, ToColumn or direction of a relationship, will cause the old relationship file to be deleted, and a new one to be created (as the file name will have been changed). Will this be ok for your diff-tool?
Best regards,
Daniel

Just humble advice no to put direction in relationship name, because it will display same relationship as different in folder diff.

Hi @jaapp . I agree with @skfd that it would probably not be a good idea to put the direction of the relationship in the file name. For the same reason, one could argue that it wouldn't be a good idea to put the from- and to- columns in the file name. The GUIDs are not changed when you change a property on a relationship, but I understand that it can be an issue when browsing the file structure, as they appear in a completely random order in the file system.
Instead of using GUIDs, we can assign sequential names: "Relationship 1", "Relationship 2", etc... and then let you manually change these names. But still, this might not be what you want. Leaving this open for now - any suggestions are highly welcome.

I was thinking: Would it make sense to allow Relationships to be serialized within the context of each table? This is similar to how Tabular Editor lets you store Perspective and Translation information within the context of each object, instead of at the model level.
This way, when using SaveToFolder, there would be a setting which would remove Relationships from the root folder, and pull them into each table from which the relationship starts. Then, as usual you can decide if the Relationships JSON should be serialized into individual files per relationship, or keep them inside the Table JSON.
Relationships would "belong" to the table on the "From" side of the relationship. So a fact table would store information about all relationships to any surrounding dimension tables.

@otykier  Am a fan of your most recent thoughts. Fact table storing information about all relationships to any surrounding dimension tables makes sense.

Thanks for the feedback. I'm going to make that an option in the next release.

I have been working on several bigger projects using Tabular Editor. Based on experience using GIT i have noticed a lot of issues with the current implementation of relationships.
At the moment i am not fan of using the relationships as individual objects. In a lot of situations you end up having multiple relationships between tables (i.e. study and reference version for comparison of data) or i.e. multiple relationships between a fact table and a calendar dimension.
My recommendation would be putting relationships into one file for a given table where the specific relationship starts. This could then give an easy overview of change to relationships and at the same time see all the changes at once.

The solution I decided upon in 2.7.4 was a new serialization option that puts relationships as annotations on their "FromTable" (typically a fact table). To make version control diffs easier to work with, I made sure that the relationships are serialized using indented multi-line JSON, instead of putting everything in a single line.


volunteer id (tz_number) should be a unique field

although unique=True should probably be added on tz_number field in models.py,
there are now some volunteer that have multiple users, which will make this migration to fail
Resolves #50

I'm taking over this review as @itay-sho won't be available.

I'm taking over this review as @itay-sho won't be available.

Great, I was actually sure we already merged this one. However, I think we should first merge the updated develop into this.

@astar26 Merged develop + everything works now, waiting for your renewed review


"Unverified breakpoint" when setting breakpoints in different file

For some reason, whenever I and my colleagues try to set a breakpoint in a Perl module that is used by some Perl script that we are debugging, the breakpoint in that module becomes a hollow circle with a grey outline instead of the red filled-in circle that usually signifies breakpoints. Hovering over the circle shows an "Unverified breakpoint" label. The debugger does not stop at this breakpoint.
However, if we set a breakpoint in the Perl script before it jumps to the module, we can then set a breakpoint in the module, and it will stop at the module.
Is this something wrong with the extension or something we are all doing wrong?

I have the same problem...
I have it for both local and remote sessions.
I have started to work around the problem (those unverified breakpoints don't work), by placing
$DB::single=1;

in the code... not ideal (and not always possible, when working with corporate/write-protected libraries)...
But I would love to see this fixed!!!


How to focus on the first invalid field

Is the api method available for this, or a dirty hack ?

There are methods available to access the first error for the given attribute, but if you don't know the attribute you could do something like:
var firstAttribute = Object.keys(validator.errors.all()).shift();
if (firstAttribute) {
   validator.errors.first(firstAttribute); // This is the first error.
}