Lsp setup error

This line produces the error.
It's a quote issue. The following code is allowed while I'm not sure why rustic-lsp-server doesn't express the quote.
(gethash 'rls lsp-clients)

Backtrace:
Debugger entered--Lisp error: (wrong-type-argument lsp--client nil)
  signal(wrong-type-argument (lsp--client nil))
  #f(compiled-function () #<bytecode 0x20e5d4d>)()
  apply(#f(compiled-function () #<bytecode 0x20e5d4d>) nil)
  rustic-lsp-mode-setup()
  rustic-setup-lsp()
  rustic-mode()
  set-auto-mode-0(rustic-mode nil)
  #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>)()
  apply(#f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>) nil)
  #f(advice-wrapper :after #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>) auto-minor-mode-set)()
  apply(#f(advice-wrapper :after #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>) auto-minor-mode-set) nil)
  so-long--set-auto-mode(#f(advice-wrapper :after #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>) auto-minor-mode-set))
  apply(so-long--set-auto-mode #f(advice-wrapper :after #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x1b425b>) auto-minor-mode-set) nil)
  set-auto-mode()
  normal-mode(t)
  #f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x1b3a7f>)(nil t)
  apply(#f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x1b3a7f>) (nil t))
  (if (setq doom-large-file-p (and buffer-file-name (not doom-large-file-p) (file-exists-p buffer-file-name) (condition-case nil (progn (> (nth 7 (file-attributes buffer-file-name)) (* 1024 1024 (assoc-default buffer-file-name doom-large-file-size-alist ...)))) (error nil)))) (prog1 (apply orig-fn args) (if (memq major-mode doom-large-file-excluded-modes) (setq doom-large-file-p nil) (if (fboundp (quote so-long-minor-mode)) (progn (so-long-minor-mode 1))) (message "Large file detected! Cutting a few corners to improve performance..."))) (apply orig-fn args))
  doom--optimize-for-large-files-a(#f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x1b3a7f>) nil t)
  apply(doom--optimize-for-large-files-a #f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x1b3a7f>) (nil t))
  after-find-file(nil t)
  find-file-noselect-1(#<buffer main.rs> "~/Developer/rust-guessing-game/src/main.rs" nil nil "~/Developer/rust-guessing-game/src/main.rs" (23727617 66306))
  find-file-noselect("/home/ztlevi/Developer/rust-guessing-game/src/main.rs" nil nil nil)
  find-file("/home/ztlevi/Developer/rust-guessing-game/src/main.rs")
  (let ((f buffer-file-name)) (kill-this-buffer) (find-file f))
  reload-buffer-no-confirm()
  funcall-interactively(reload-buffer-no-confirm)
  call-interactively(reload-buffer-no-confirm nil nil)
  command-execute(reload-buffer-no-confirm)

Are you on latest rustic and lsp-mode ?

The line I'm trying to point is https://github.com/brotzeit/rustic/blob/master/rustic-util.el#L229
rustic version: 99396915c78556f4ad0da8caf9cb2a269582c39f
lsp-mode version: 2fc0963a50488c47a5be3836ad042380b71d1cfb

You are doom user right ?

Yes. It seems the PR brings up another error. No sure if it's something caused by Doom.
Debugger entered--Lisp error: (wrong-number-of-arguments (0 . 0) 1)
  lsp-rust-switch-server(nil)
  #f(compiled-function () #<bytecode 0x24052f5>)()
  apply(#f(compiled-function () #<bytecode 0x24052f5>) nil)
  rustic-lsp-mode-setup()
  rustic-setup-lsp()
  rustic-mode()
  set-auto-mode-0(rustic-mode nil)
  #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>)()
  apply(#f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>) nil)
  so-long--set-auto-mode(#f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>))
  apply(so-long--set-auto-mode #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>) nil)
  #f(advice-wrapper :around #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>) so-long--set-auto-mode)()
  apply(#f(advice-wrapper :around #f(compiled-function (&optional keep-mode-if-same) "Select major mode appropriate for current buffer.\n\nTo find the right major mode, this function checks for a -*- mode tag\nchecks for a `mode:' entry in the Local Variables section of the file,\nchecks if it uses an interpreter listed in `interpreter-mode-alist',\nmatches the buffer beginning against `magic-mode-alist',\ncompares the filename against the entries in `auto-mode-alist',\nthen matches the buffer beginning against `magic-fallback-mode-alist'.\n\nIf `enable-local-variables' is nil, or if the file name matches\n`inhibit-local-variables-regexps', this function does not check\nfor any mode: tag anywhere in the file.  If `local-enable-local-variables'\nis nil, then the only mode: tag that can be relevant is a -*- one.\n\nIf the optional argument KEEP-MODE-IF-SAME is non-nil, then we\nset the major mode only if that would change it.  In other words\nwe don't actually set it to the same mode the buffer already has." #<bytecode 0x23460b>) so-long--set-auto-mode) nil)
  set-auto-mode()
  normal-mode(t)
  #f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x233e2f>)(nil nil t nil nil)
  apply(#f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x233e2f>) (nil nil t nil nil))
  (if (setq doom-large-file-p (and buffer-file-name (not doom-large-file-p) (file-exists-p buffer-file-name) (condition-case nil (progn (> (nth 7 (file-attributes buffer-file-name)) (* 1024 1024 (assoc-default buffer-file-name doom-large-file-size-alist ...)))) (error nil)))) (prog1 (apply orig-fn args) (if (memq major-mode doom-large-file-excluded-modes) (setq doom-large-file-p nil) (if (fboundp (quote so-long-minor-mode)) (progn (so-long-minor-mode 1))) (message "Large file detected! Cutting a few corners to improve performance..."))) (apply orig-fn args))
  doom--optimize-for-large-files-a(#f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x233e2f>) nil nil t nil nil)
  apply(doom--optimize-for-large-files-a #f(compiled-function (&optional error warn noauto after-find-file-from-revert-buffer nomodes) "Called after finding a file and by the default revert function.\nSets buffer mode, parses file-local and directory-local variables.\nOptional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an\nerror in reading the file.  WARN non-nil means warn if there\nexists an auto-save file more recent than the visited file.\nNOAUTO means don't mess with auto-save mode.\nFourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER is ignored\n(see `revert-buffer-in-progress-p' for similar functionality).\nFifth arg NOMODES non-nil means don't alter the file's modes.\nFinishes by calling the functions in `find-file-hook'\nunless NOMODES is non-nil." #<bytecode 0x233e2f>) (nil nil t nil nil))
  after-find-file(nil nil t nil nil)
  revert-buffer--default(:ignore-auto :noconfirm)
  revert-buffer(:ignore-auto :noconfirm)
  revert-buffer-no-confirm()
  funcall-interactively(revert-buffer-no-confirm)
  call-interactively(revert-buffer-no-confirm nil nil)
  command-execute(revert-buffer-no-confirm)

Yeah rustic AND lsp-mode have to be updated for this to work. I already pushed the changes to lsp-mode.

Ok, something is still not right...


Fix version comparison issue when using binary_local_dir

As I was using prometheus_binary_local_dir to copy version 2.24.1, I didn't overwrite the default prometheus_version variable. For some bizarre reason, the "2.24.1" was being interpreted as an int in the version comparison in templates/prometheus.service.j2 and triggering a '<' not supported between instances of 'str' and 'int'.

misdiagnosed, still getting the issue


fix: inconsistencies in tick to price and price to tick conversions

Background
If we have tick X and call TickTiSqrtPrice and get Y. Then, by calling PriceToTick(Y.Power(2)), we should be able to get X back.
Currently, this is not the case. Probably because of the ApproxSqrt function here:
https://github.com/osmosis-labs/osmosis/blob/97c9be10dbcc2ba4c1d8a90bfa43e945a3cdf00e/x/concentrated-liquidity/math/tick.go#L86-L90
Suggested Design
Add the call to PriceToTick at the end of this test:
https://github.com/osmosis-labs/osmosis/blob/97c9be10dbcc2ba4c1d8a90bfa43e945a3cdf00e/x/concentrated-liquidity/math/tick_test.go#L162-L171
Then, you will be able to reproduce the problem
Acceptance Criteria

modify TestTickToSqrtPricePriceToTick_InverseRelationship to call PriceToTick second time
test passes
confirm mapping in both directions works correctly

Conclusion on this from the call to pursue in #4965:

Improve test to better understand the magnitude of the problem
Increase the number of iterations
Compare against sage / sympy / Wolfram
If does not help, use Chebyshev approximation exp2 tricks to compute power^(1/2)
If doesn't help, implement square root with a better method

Improve test to better understand the magnitude of the problem

Added a variety of test cases at our default exponent of price 6, going from the smallest possible price upwards.
The steps followed:

Compute tick from price
Compute price from tick inversePrice
Confirm inversePrice matches original price
Internally get sqrt price from inversePrice inverseSqrtPrice
Take inverseSqrtPrice^2 to get priceFromSqrtPrice
Compute tick from inversePrice and get the same tick
Compute tick from priceFromSqrtPrice and get a different tick

Consider these 3 cases:

Smallest price

price: 0.000000000000000001
tick expected: -162000000
actual match expected with inverse relationship

Smallest price * 2

price: 0.000000000000000002
tick expected: -161000000
actual matches expected

Smallest price * 10

price: 0.000000000000000010
tick expected: -153000000
actual tick: -154000000

Smallest price * 10 - 1

price: 0.000000000000000009
tick expected: -154000000
actual matches expected

Note from test case 3 that the magnitude of the difference is quite large. However, this is only because of our tick spacing model. The core of the problem is that when we compute the inverse, we end up getting a smaller price and a lower tick due to losing precision.
To be continued / draft section
For test case 3, when we compute priceFromSqrtPrice, we end up getting price 0.000000000000000009 when it should be 0.000000000000000010
>>> price = Decimal("0.000000000000000010")
>>> price.sqrt()
Decimal('3.162277660168379331998893544E-9')
>>> math.pow(price.sqrt(), 2)
1e-17

The scope of this work keeps chaging and increasing.

As a result, I'm going to start splitting the investigations into separate PRs and document them here.
My initial investigations that lead to the discovery of this problem: https://github.com/osmosis-labs/osmosis/pull/4965
After #4965, ApproxSqrt was under suspicion, upon more investigations, I realized that the major problems where stemming from varying exponents at price one that were limited to just 6, ref: #4957
Additionally, there were off-by-one errors stemming from rounding: https://github.com/osmosis-labs/osmosis/pull/4998
As a drive-by change, I removed the use of a broken Power function here: https://github.com/osmosis-labs/osmosis/pull/5000

Latest state on this.
Price to tick conversion summary.
We have: price to tick conversion and dynamic tick spacing at human readable increments.
Pros:

human readable, ability to place limit orders at values that make sense
dynamic (there is a con of thj)
Cons:
losing capital efficiency at large price ranges
Some edge cases around rounding.

Uniswap:
Pros:

Can have a function between tick and sqrt price because human readability is not a concern, removing the requirement on price to tick conversion.
Greater precision: The logarithmic scale allows for greater precision at both low and high prices, which enables more accurate representation of price changes across a wide range.
Uniform distribution/simplicity: The logarithmic scale allows for a uniform distribution of ticks across the entire price range, which means that the same percentage change in price is represented by the same number of ticks, regardless of the price level.
Cons:
Cannot place limit orders at human readable increments

The core of our problem is that the conversion occurs between price and tick, and not square root price and tick.
At the same time, internal calculations in swap and LP logic are performed in terms of square root price. We end
up having to convert from sqrt price to price and then to tick to get the current tick corresponding to the
current square root price. In these conversions, we lose some precision. However, the latest soft conclusion is that
the precision loss is negligeble and is mitigated by performing rounding in the right places.
For context, the reason why we track square root price and not price is because it allows us to have a simple math relationship
between liquidity, token amounts and price. Operating in the price space would require us to perform a lot of complex math.
Since we want to support dynamic price granularity, we ended up breaking
up the price range into ticks as opposed to breaking up square root price range into ticks.
To show the consequences, let's take an extreme example where at price 10_000_000, our price increments are in the order of magnitude of 1.
That is, the only possible prices are 10_000_000, 10_000_010, 10_000_020 etc.
So, say that I end up on current square root price 3162.2784507376955 as I perform the swap.
Note, that squaring this yields 10_000_005.
At the end of the swap, I must translate this to a current tick.
The problem that there is no price that corresponds to this square root price.
As a result, I must truncate the price to the nearest one that can be mapped to a tick. Using banker's rounding,
this would be 10_000_000.
However, what do I do with the excess amounts? Do I swap them back?
It seems that I should not be able to reach the square root price corresponding to
10_000_005. However, that's not how it works right now.
There are a few solutions:

Refactor swap logic to disallow square root price from reaching a point where it cannot be translated to a tick. Decrease exponent at price one to -8.
At this exponent at price one, at price level of 100_000_000, our price increments are in the order of magnitude of 0.

Pros:

We keep our dynamic tick spacing. We have solid price granularity at large price levels with buffer.

Risks:

Additional complexity in swaps that needs to be refactored
Need to make sure that decreaseing exponent at price one does not cause any rounding errors in other parts of the system.

Always perform math in terms of prices

Pros

Works wih the dynamic granular tick spacing

Risks:

We will end up with complex math operations in swaps and LP logic, potentially leading to rounding errors in other
parts of the system.
A lot of logic and tests to refactor.

Always perform math in terms of square root prices while removing dynamic tick spacing.

Pros:

Capital efficiency at every price level due to uniform logarithmic tick spacing

Problems:

Cannot make tick spacing human-readable
Going back to Uniswap
Large refactor that might lead to other problems.

Had some more discussions after writing up the above. To summarize the next 3 actions:

Refactor swap logic to disallow square root price from reaching a point where it cannot be translated to a tick.
Handle tick spacing during the above refactor
Remove banker's rounding of ticks and make it more deterministic
Ensure that we do not repeatedly do square root price to tick conversions during low-level swap calculations as we lose precision. It should be fine to square the square root price to determine if we reached the right tick or not
Keep exponent at price one of -6, we should not need granularity of -8.

This is closed by the latest change: https://github.com/osmosis-labs/osmosis/pull/5019


Naming of DiskEncryptionSettings properties

Currently VM's disk encryption settings is defined as below:
"DiskEncryptionSettings": {
      "properties": {
        "diskEncryptionKey": {
          "$ref": "#/definitions/KeyVaultSecretReference",
          ...
        },
        "keyEncryptionKey": {
          "$ref": "#/definitions/KeyVaultKeyReference",
          ...
        },
        ...
      },
      "description": "Describes a Encryption Settings for a Disk"
}

DiskEncryptionSettings:
The naming of properties are bit confusing - diskEncryptionKey,  keyEncryptionKey. names such as keyVaultSecretReference and keyVaultKeyReference will be better. Similar to imageReference
I know we cannot introduce breaking changes in server, but we could use x-ms-client-name so that atleast generated code will have better variable name.
@huangpf @devigned @amarzavery

@hyonholee This is initially requested by the disk encryption team. Could you please help involve them? Thanks.

I was not involved with the initial design or selection of these property names, but what I do know is that the disk encryption key is different from the key encryption key.  It would be valuable to preserve some distinction in the property name that would indicate which one is for the disk encryption key and which one is for the key encryption key.
https://docs.microsoft.com/en-us/azure/security/azure-security-disk-encryption#terminology

Closing due to inactivity. Anu please reopen if this is still an issue


Ginkgo test for karmor recommend

added basic test for karmor recommend using ginkgo framework

Signed-off-by: Vishnu Soman<EMAIL_ADDRESS>

Also can you please check why the CI tests are failing?

Also can you please check why the CI tests are failing?

Thanks for the review @Ankurk99. I'll check why CI failed.

@vishnusomank please create an issue for the tests to verify generated policies.


Main or Release branch?

I want to download the raw Installomator.sh
In the read me it states "Note: The main repo is a beta version".
Should I download the script from the "release" branch?
https://raw.githubusercontent.com/Installomator/Installomator/release/Installomator.sh
or "main" branch?
https://raw.githubusercontent.com/Installomator/Installomator/main/Installomator.sh
Today they are the same. Tomorrow they may be different?

Yes, the main branch is the one with the next version that we are actively working on. It should only contain new application labels, updated application labels, and minor fixes to the code, so the main branch should be mostly safe.
We reserve more significant changes to the code to the dev branch and there will be beta releases of those for testing.
You can also get the latest release from the release branch or from the zip you can download from the 'Releases' page.

more detail here https://github.com/Installomator/Installomator/wiki/Branches-and-Betas


Active: activating (auto-restart)

root@iZwz9d1rjhrzzxa4lsoi93Z:~/build/dns-over-https-2.0.1# systemctl restart doh-server
root@iZwz9d1rjhrzzxa4lsoi93Z:~/build/dns-over-https-2.0.1# systemctl status doh-server
● doh-server.service - DNS-over-HTTPS Server
   Loaded: loaded (/usr/lib/systemd/system/doh-server.service; disabled; vendor preset: enabled)
   Active: activating (auto-restart) since Wed 2019-10-02 12:23:42 CST; 2s ago
     Docs: https://github.com/m13253/dns-over-https
  Process: 25954 ExecStart=/usr/local/bin/doh-server -conf /etc/dns-over-https/doh-server.conf (code=exited, status=0/SUC
 Main PID: 25954 (code=exited, status=0/SUCCESS)
lines 1-6/6 (END)

Unable to start the program, how can I solve it?

May I have a look at the output of
sudo journalctl -u doh-server

``https://github.com/m13253/dns-over-https/issues/56#issuecomment-537340149

It might be a problem at systemd side, would you please try to execute
sudo /usr/local/bin/doh-server -conf /etc/dns-over-https/doh-server.conf

by yourself, to distinguish whether it's a systemd problem or my problem?

The server is China Alibaba ECS
root@iZwz9d1rjhrzzxa4lsoi93Z:~/build/dns-over-https-2.0.1# sudo /usr/local/bin/doh-server -conf /etc/dns-over-https/doh-server.conf
2019/10/02 13:34:59 listen tcp [::1]:8053: bind: cannot assign requested address

这可能是系统方面的问题，请您尝试执行
sudo /usr/local/bin/doh-server -conf /etc/dns-over-https/doh-server.conf

自己辨别是系统问题还是我的问题？

https://github.com/m13253/dns-over-https/issues/56#issuecomment-537342766

The server is China Alibaba ECS

Alibaba has disabled IPv6 on the server. You may try one of the following solutions:

Enable IPv6.
The configuration file my be located at /etc/sysctl.conf or /etc/sysctl.d. There you may find anything similar to net.ipv6.conf.all.disable_ipv6 = 1. Delete it.

Disable IPv6 and use IPv4 only.
You will need to replace [::1] to <IP_ADDRESS> in /etc/dns-over-https/doh-server.conf.

阿里云默认关闭 IPv6。您可以尝试以下解决方法其中的一个：

启用 IPv6。
配置文件在 /etc/sysctl.conf 或者 /etc/sysctl.d。你应该能找到一行 net.ipv6.conf.all.disable_ipv6 = 1，删除它。

禁用 IPv6，只使用 IPv4。
这样的话请修改 /etc/dns-over-https/doh-server.conf，将 [::1] 替换成 <IP_ADDRESS>。

root@iZwz9d1rjhrzzxa4lsoi93Z:~/build/dns-over-https-2.0.1# systemctl status doh-server
● doh-server.service - DNS-over-HTTPS Server
   Loaded: loaded (/usr/lib/systemd/system/doh-server.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-10-02 13:48:53 CST; 8s ago
     Docs: https://github.com/m13253/dns-over-https
 Main PID: 1458 (doh-server)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/doh-server.service
           └─1458 /usr/local/bin/doh-server -conf /etc/dns-over-https/doh-server.conf

Oct 02 13:48:53 iZwz9d1rjhrzzxa4lsoi93Z systemd[1]: Stopped DNS-over-HTTPS Server.
Oct 02 13:48:53 iZwz9d1rjhrzzxa4lsoi93Z systemd[1]: Started DNS-over-HTTPS Server.
root@iZwz9d1rjhrzzxa4lsoi93Z:~/build/dns-over-https-2.0.1#

Thank you, already ok


month-cell-events-template-url property not working

Hi there,
I am a new developer so forgive me for the ugly code and potential obviousness of the question. I am trying to emulate your demo of event labels appearing in the month view (https://github.com/mattlewis92/angular-bootstrap-calendar/issues/177), but it's not grabbing the custom template for some reason. Here's what I have:
HTML:
<div>
  <script type="text/ng-template" id="test.html">
    Hello World
  </script>
  <mwl-calendar
    events="eventData"
    view="view"
    view-date="viewDate"
    view-title="viewTitle"
    month-cell-events-template-url="test.html">
  </mwl-calendar>
</div>

Controller:
app.controller('userCal', ['$scope','moment',function($scope, moment){

  var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
    'July', 'August', 'September', 'October', 'November', 'December'
  ];

  $scope.eventData = [
    {
      title: 'Test',
      type: 'info',
      startsAt: new Date(2016, 1, 12, 15),
      endsAt: new Date(2016, 1, 12, 16)
    }
  ];

  $scope.view = 'month';

  $scope.viewDate = new Date(2016, 1, 1, 0);

  $scope.viewTitle = monthNames[$scope.viewDate.getMonth()];

}]);

The calendar is displaying, but only with the default view. I am not using some of the default features (as my app does not need them) and think that may be part of the problem, but would like to hear your thoughts.

That option was removed in 0.18.0 in favour of a more generic way of using custom templates. See here for an example of what to do in 0.18.0+


Better install

Hey I've created this extension pack, to make the installation a bit easier.
You only need to run in terminal "code --install-extension synthwave-installer-0.0.1.vsix" and it will install the theme + custom CSS and JS Loader.
Then all you need to do is to change the settings.json and the theme.
Installer.zip

Hey, sounds great. Unfortunately I don't see any code changes from you?
What exactly are you going to do with the zip file? Creating the *.vsix file is part of the build process.
I suggest you best check in your code changes in a new pool request, then I can look at the code in general. We are in the open source world here 😁

Hey so there arent any code changes in your file. The only difference is, the extension pack I've created. If you download it and run it (code --install-extension synthwave-installer-0.0.1.vsix). It is installing both of the needed extensions. So it is kind of merging two steps into one. Hope this explains a bit more :D

Yes, I understand the benefit of your suggestion. The installation is currently not optimal and your solution should bring an improvement.
What I don't understand is how your solution should be adapted to the installation process:

how exactly the file "synthwave-installer-0.0.1.vsix was created" ?
how exactly should the installation process look like from the user's point of view?

Usually it works like this:

the *.vsix file is created as an artifact during the build process.
this file is uploaded to the VS Code Marketplace and can be found there
the user finds the theme in the marketplace (browser or VS Code) and clicks on the install button.
optionally the user can download the theme in the browser and install it manually. This is done by max. 2 to 3 % of all users, the majority is more than 97% of all users install the theme directly from VS Code by clicking on the install button.


Update side nav items

Design

[ ] Specify page header background color and pictogram for Libraries and Design kits catalogs, if those are to not be black with no pictogram

Dev

[ ] Move Accessibility and Content into a Guidelines item beneath Elements

[ ] Move Libraries into the Catalogs section and put Components, Functions, Patterns, Templates under Assets

[ ] Update the page header to "Data visualization" (no capital V)

[ ] Move FAQ and Content as the last two items in About Carbon section

[ ] Update "Asset catalog" to "Asset catalogs" (plural) on the home page

@kingtraceyj @aubrey-oneal do we need to update that second "Data visualization" to "Charts" in the side nav? I see how that works for this example, but what about the generic pattern where we have more collections that have their own pages?
The pattern of duplicating the collection name in both the parent and first item seems to hold up better. If we go with this approach renaming the first item to "Charts", does that mean we'd have to have two names for every collection going forward?

@kingtraceyj please review.

Design issue for library and catalog headers: https://github.com/carbon-design-system/carbon-platform/issues/1056
Redline (Not currently finished): https://www.figma.com/file/1HS6qRdl4GVY27iiBJWLnU/Banner_Specs?node-id=0%3A1

Hey team! Please add your planning poker estimate with ZenHub @andreancardona @francinelucca @jdharvey-ibm

@mattrosno I kind of agree with this... the idea being, that we want to see the name of the collection on that leadspace.
If we go with Data Viz > Charts... there's no scalable naming formula there. So say, Cloud components is a Collection... what would the name of the first child item be then in that instance? @aubrey-oneal makes a good point that we need to look at other Collections, but I think here we have two clear choices.

to get the name of the Collection in the leadspace

to follow the current convention and just have that first category be called something more generic like "Catalog"

Notice on the current site, we never have the name "Data Viz" in the leadspace


Upgrade to builtin Task

This PR

upgrades to builtin Task
upgrades the examples to use latest basic-webserver

NOTE -- replace platforms with latest release when available

Thanks @lukewilliamboswell !


eliminated downstream channel manipulation

Handle all channel manipulation via sox

LGTM

tested this with one 55 minute recording for 2 channels, and a 55 and a 30 for 1 channel capture without any detectable problems or drops.  Next step will be to try to see how far I can safely step back the buffering to improve latency! (With the more efficient channel manipulation there now is about a 5 second buffer when only capturing one channel- seems like this could be shortened).


"UnBoundLocalError : local variable 'inp'referenced before assignment " while pressing the button in GPIO 18

File "main.py", line 135 ,in start
l,data = inp.read()

This seems to happen when the button is not connected properly. You get this error when Pin 18 is "floating". Make sure you have it connected correctly to the button. Refer to this diagram to make sure you connected the pins to the correct pins on the button itself.

This also seems to happen if you have the speaker connected to the Audio out of the sound card rather then the jack on the Pi

I've found it happens if you press the button before "Alexa's ready" :-)
seriously though, when it says "hello", it's not quite ready for input.  In my experience, waiting for about 3-5 secs before pressing the button and you don't get this error

Not sure why it would occur using the sound card output instead of the audio jack, I've tested with both and not had and issue.
@doubledrat is right the Hello does trigger a little early, there's also 3 flashes of the green LED whcih is just after the hello and is the better indication that its ready.
@SoorajKrishna does this happen all the time for you or just occasionally?


Manually update task-fbc-validation digest

Identical with https://github.com/openshift/cli-manager-operator/pull/301 to test the Konflux CI.

/close


[BUG] 3.0.0.rc2 PyInterpreterState_GetID undefined symbol pypy 3.9

Describe the bug
pygame doesn't compile with pypy 3.9 when using cython 3.0.0.rc2
  src_c/_sdl2/sdl2.c:2933:29: warning: implicit declaration of function ‘PyInterpreterState_GetID’; did you mean ‘PyInterpreterState_Next’? [-Wimplicit-function-declaration]
     2933 |     PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
          |                             ^~~~~~~~~~~~~~~~~~~~~~~~
          |                             PyInterpreterState_Next

ImportError: /tmp/tmp.gCm2VEnAmb/venv/lib/pypy3.9/site-packages/pygame/_sdl2/sdl2.pypy39-pp73-x86_64-linux-gnu.so:
undefined symbol: PyInterpreterState_GetID

Code to reproduce the behaviour:
See this PR https://github.com/pygame/pygame/pull/3957
git clone https://github.com/pygame/pygame.git
cd pygame
git checkout cython-updates
python -m pip install .

Expected behaviour
It compiles.
OS
manylinux
Python version
pypy 3.9
Cython version
3.0.0.rc2
Additional context
No response

This is not a problem with Cython. The build is using an older version of PyPy3.9. I will comment on the pygame issue, but I think this should be closed here.

Ok, thanks for the info!

Edit: see also https://foss.heptapod.net/pypy/pypy/-/issues/3955

Link is dead, see https://github.com/pypy/pypy/issues/3733 and https://github.com/pypy/pypy/issues/3950. TL;DR: fixed in pypy 7.3.10.


added upper case level for warn and error

This change is needed for some users, using a special format of log levels in the upper case.
WARN and ERROR was added to be recognized.
This is a change for non-standard usage of log levels.
See Ticket:
https://support.instana.com/hc/en-us/requests/13370

probably not needed, closed, therefore.


Add support for GIF file format

Sharp 0.30 added support for the GIF file format. I updated sharp and allowed gif options.
This still needs an update to the docs and tests, but I'm having trouble getting my environment set up completely. Husky is breaking on my machine for some reason and I couldn't seem to figure out the image snapshots in the test suite, they would change on every run even with no code changes. But it's at least a starting point/PoC.

Thank you! Husky is breaking because your commit messages aren't in the conventional commits format. I'll clean it up and merge 👍🏼 . This might take a few days, it seems like sharp's output image is now nondeterministic and I'll have to rewrite my tests.


Carry sourceID when moving an Initializing shard

Fix an edge case caused by:
1, add a node, so it will be assigned with some shards in Initializing state, with sourceID to reference where these shards come from.
2, remove this node before it finish bootstrapping it's shards
3, the Initializing shard will be moved to another node but the sourceID got lost.
@robskillington

Coverage increased (+0.2%) to 82.888% when pulling 3a638145bc1cc5bfee6a4de2d59d564a96cdea4f on chao-move-shard into cbfa2803530fc045a00b40984d1a321506eeb988 on master.

Coverage increased (+0.2%) to 82.837% when pulling 09c04884e078bfaa0f3a205daf1c4c4e1d89fc94 on chao-move-shard into cbfa2803530fc045a00b40984d1a321506eeb988 on master.

Coverage increased (+0.3%) to 82.964% when pulling 08d8d7902870af41322d3ec413df7d3b2e7911a9 on chao-move-shard into cbfa2803530fc045a00b40984d1a321506eeb988 on master.


Play get called twice?

After fixing a replay issue, I found that maybePlay get called twice after a state change in the parent component.
Repro:

run the example and click the Play/Stop button on top-left
Edit maybePlay with console.log

const maybePlay = () => {
    const space = spaceRef.current
    if (!space) return
    if (play) {
      if (space.isPlaying) {
        space.resume()
        console.log('resume!')
      } else {
        space.replay() // if space has stopped, replay
        console.log('replay')
      }
    } else {
      space.pause(true)
      console.log('pause!')
    }
  }

See that console.log get 'pause!' and 'resume!' on a single click

Do you have time to take a look, @prkirby ? :)

@williamngan which example sorry?

Sorry for the confusion - I meant the example in the example folder.

Interesting. I'm looking through it now @williamngan. One thing I found is that if instead of using the button, I simply change the props value using the react dev tools, maybePlay does only fire once.

@williamngan Ahh, ok. So since the state is in the App component, its triggering a re-render for all child components when the state updates. This was a good read: https://felixgerschau.com/react-rerender-components/
So the fix would be to include the button in the actual example component, or a wrapper component around it, rather than in the Parent where its going to trigger a re-render for both examples.

Wow this is really nuanced. Thanks for looking into it, @prkirby !


Package features

The core desired effect is the polymorphic composition of interpreters. That is, given mtl-style classes, arrows between them that can choose how to interpret a class.
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}

import qualified Control.Category as C
import qualified Prelude as P
import           Prelude hiding (id, (.))

newtype Interpreter a b = MkInterpreter
  { interpret :: forall n x. b n => (forall m. a m => m x) -> n x }

instance Category Interpreter where
  id = MkInterpreter P.id
  MkInterpreter f . MkInterpreter g = MkInterpreter $ \h -> f (g h)

(Note: Prelude.(.) does not cooperate with constrained rank n types, so composition of f and g has to be manual)
I suppose the purpose of this package should be utilities surrounding this paradigm of composing interpreters.

Relatively unimportant, but I figure this has more to do with interpreters of effects than effects themselves, so maybe abstract-interpreters would be a more apt name?

Yeah, I think that's the end goal. I'd like for this to be a "core" package that implements the overall framework, with separate packages around eg wreq, persistent, etc. that can implement those effects.
I'm going to be developing these ideas in work projects where I'll get a good idea of exactly what sorts of conveniences this package could offer. Right now, the newtype and the Category instance are all I can think of. Template Haskell or Generics stuff to help with boilerplate may be nice, though in all honesty GeneralizedNewtypeDeriving will get this a lot of the way there.

Yea I was thinking along the same lines. I suppose common patterns will show up as it gets used and we can figure out how to get stuff in the package. In the meantime, the category is the central piece.
So I guess the majority of this repo should be deicated to documenting the idea. So maybe include a link to your blog post, along with a readme that regurgitates the ideas from the blog post but specialized to this category instance?

Yeah -- definitely something like the Pipes tutorial or Control.Lens.Tutorial!

I was thinking about the Services example you gave, and subsequently a version of it that uses this category.
data Services c = Services
  { runHttp :: Interpreter MonadHttp c
  , runPersist :: Interpreter MonadHttp c
  }

and I think I stumbled on a potential abstraction.
mapServices :: Interpret c d -> Services c -> Services d
mapServices interpreter services = services
  { runHttp = interpreter . runHttp
  , runPersist = interpreter . runPersist
  }

Surely this abstracts into a class of some kind? And surely that class is derivable via generics?
class InterpretFunctor f where
  inmap :: Interpret c d -> f c -> f d

Hmm, yeah! This reminds me of "The functor design pattern" and the previous post in that series. If we've got a Category then surely we can find some useful Functors on them.

Also, I think there may be some prior art here from Conal Elliot's Type Class Morphisms which I'm digging into right now

Hm. In a categorical sense, functor could be defined like this.
class (Category c, Category d) => Functor c d f where
  fmap :: c a b -> d (f a) (f b)

The main point being the kinds of these types.

c :: k1 -> k1 -> *
d :: k2 -> k2 -> *
f :: k1 -> k2

f is a morphism of kinds. In the InterpretFunctor class I defined above, it all looks something like this:
inmap :: (c ~ Interpret, d ~ (->)) => c a b -> d (f a) (f b)

So yea, Services is a functor from Interpret to (->). Cool!

We could get real fancy and use an HList-like-thing of constraints instead of a concrete data type, and then instead of Services g we'd be talking about Elem MonadHttp cs => Services cs, etc . . . but I don't know if the additional implementation/type complexity is worth it when strict fields get you there.

Yea I don't see a compelling reason to do that. I think it's just easier to reason about functors from Interpret to (->) and worry about concrete implementations as a trivialty.
To that end, is there an existing functor class we can use for this? I know the hask library has a more complete definition of functors, but it's almost too complete =P It's a much more complex class than the one we need.

Aw. The functor class we would want can't be derived with GHC Generics =/ The Generic1 class only works for types of kind * -> *.

There's always Template Haskell :smile:

Well still, I'm not sure what functor class we want to use. We can either specialize and do this:
class InterpretFunctor f where
  inmap :: Interpret a b -> f a -> f b

instance InterpretFunctor Services where
  ...

Or we can be more general and do this:
class (Category dom, Category cod) => CategoryFunctor dom cod f where
  cmap :: dom a b -> cod (f a) (f b)

instance CategoryFunctor Interpret (->) Services where
  ...

The latter is more general, but feels out of scope for this package. But I don't know of any package on Hackage that has this class already.

How useful is the InterpretFunctor class going to be? I don't imagine having many Services like records around, probably just a single one per application. I also am not sure how frequently I'll want to be mapping another interpreter over all of the fields in a record -- i imagine most Interpret types will be going to MonadIO or similar in the final construction of the record, and the composition is mostly useful for building layers on top of other services.

Well I think of it like this: A lot of operations are going to be a hierarchy of effects that could be isolated. Networking is a prime example of this.
MonadIO
  └─ MonadNetwork
     ├─ MonadHttp
     │  └─ MonadRestApi
     └─ MonadSql
        └─ MonadMyDbOps

By making Services a functor, we can choose how far up this hierarchy we want to go. We can base an application on Services MonadHttp, then in main use it as a functor to turn it into Services MonadIO to actually run it. Now in test code, we can use the functor to make Services MonadMock or whatever.

I can see the appeal to that.
One issue that the newtype brings is that we can't use it nicely in apps anymore. If all the services are in newtypes, then the code:
foobar Services{..} = do
    page <- runHttp (get "asdf")
    pure (length page)

has to be translated to:
foobar Services{..} = do
    page <- interpret (runHttp (get "adsf"))
    pure (length page)

The type of the thing in the interpreter is just a function, so  it may make more sense to export a compatible . operator.

Almost =P It'd be
foobar Services {..} = do
  page <- interpret runHttp (get "asdf")
  pure (length page)

Which is a little nicer, though not much.
What do you mean by "export a compatible . operator"?

Lol I'm worthless without a compiler
Control.Category.. works with the constraints and stuff, and $ works fine (probably due to the magic). I imagine that it wouldn't be impossible to provide . that worked with these transformations if it were well typed enough

Note that this:
type Interpret a b = forall n x. b n => (forall m. a m => m x) -> n x

f :: Interpret b c -> Interpret a b -> Interpret a c
f = (.)

produces errors in the type signature. It fails to understand the type signature just due to the complexity of the constraints. It never even tries to type check the term. No amount of well typing in some (.) is going to make up for this error, and I imagine it's one we'd rather avoid.

You're right. I'd attempted to play around with that earlier and didn't have any success with that approach.

Another note, just because I feel this is worth documenting: This category rightfully has no product types. The reason we would want product types would be to interpret multiple constraints at once trivially.
-- pseudo-code
f :: Interpret (MonadHttp, MonadSql) MonadIO

But the laws of products in a category require these morphisms:
A × B -> A
A × B -> B

This isn't possible with this category. Interpret (MonadHttp, MonadSql) MonadHttp can't sensibly exist; there's no way to guarantee the existence of such an interpreter. Thus, multiple constraints have to be explicitly composed. And this makes sense; as monads can't be automatically composed, it makes sense that you can't automatically compose monad classes. As with monads in general, the composition needs to be manual. With this category, this would be accomplished either using a functor (like Services), or using a custom aggregating class.
class (MonadHttp m, MonadSql m) => MonadNet m

f :: Interpret MonadNet MonadIO
f = MkInterpret $ \x -> ... -- interpretation of composition of monads is manual, as expected.

Aww... Someone made Generic1 poly-kinded, and now it's in GHC HEAD. Which is awesome, but it's not in base-<IP_ADDRESS> so we can't use it =( If we had that, the InterpretFunctor class would go from debatable to obvious, since we could derive it.

Just pushed a first-draft branch. Tell me what you think! Don't mind the name change; that was just the name I found more fitting. No need to keep it.


Peer dependency setup with working tests

We're building a React component library. Some of our components use Link, with BrowserRouter installed in the parent app and listed as a dev dependency (which we connect locally using npm-link).
parent setup looks like this:
import { BrowserRouter as Router } from 'react-router-dom';
...
ReactDOM.render(
    <Router>
      <App />
    </Router>,
  app
);

imported component from the component library looks like this:
 return (
    <Link

This works fine until we run tests in the component library, which needs access to MemoryRouter. So in the past we've just installed react-router-dom as a dev dependency in the component library, and that worked fine.
After upgrading from version 4 to version 5, we get this runtime error:
Invariant failed: You should not use <Link> outside a <Router>

If I uninstall react-router-dom in our component library, there's no runtime error, but our component library tests cannot run as there's no access to MemoryRouter.
I wonder if this error was added in v5, and if we might reconsider it. Alternatively, I wonder if we might export MemoryRouter as a standalone module.
respective package.json files look like:

parent app (where the BrowserRouter lives):

 "dependencies": {
    "react-router-dom": "^5.2.0"

component library (where we use a Link):

tests work; runtime error
  "devDependencies": {
    "react-router-dom": "^5.2.0"

cannot run tests; no runtime error
  "devDependencies": {}

Note that in the past we've solved some npm-link and peer dependency issues by using explicit paths in the parent app's package.json moduleNameMapper, but this does not solve the issue:
    "moduleNameMapper": {
      "^react-router-dom": "<rootDir>/node_modules/react-router-dom"

Thank you for any attention.
react-router-dom version 5.2.0
node version 10.13.0
npm version 6.4.1

This is because we use the Context API of React, which creates a context instance that we pass around the library. It has to be the exact same instance, otherwise React can't match the Provider and Consumer pair.
This is a bit out of scope for the library, since it's not anything we have to solve on our end. But the basic idea is that you need the same instance of the react-router-dom module in both apps. Not sure what the best way is to do that, but you might try importing and re-exporting react-router-dom from your component library to ensure everyone is using the same copy of the module.

Thanks much for the reply. We set about implementing your suggestion. The app runs and tests work when we
export {
  BrowserRouter,
  Link,
  Route,
  Router,
  Switch,
  useHistory,
  useLocation,
  withRouter
} from 'react-router-dom';

from the component library, but we'd have to ask all users of the component library to import all of your modules from the component library, which we felt was not ideal. Also, we found that tests in the parent app broke, and we thus had to also export a react-router dependency
export { createMemoryHistory } from 'history';

from the component library, which seems like just the first example of why our general intuition felt this was not a good pattern. For now, we're going to revert to version 4 so the app will run again. We'll have to negotiate a better solution for the breaking change in the future.
Thanks again for the help.


Wiki Page has a dead link: Use webrtcConfigStun.json for STUN P2P communication

We no longer use the webrtcConfigStun.json file, so the link is dead but the wiki hasn't been updated.

Deleted the link, since it doesn't make sense to have it there anymore.


v0.5.9

fix #85
(typescript support up to bloc level, through ts-node)

Codecov Report

Merging #86 (679e320) into master (8852bc3) will increase coverage by 0.57%.
The diff coverage is 44.77%.

@@            Coverage Diff             @@
##           master      #86      +/-   ##
==========================================
+ Coverage   53.34%   53.91%   +0.57%
==========================================
  Files          31       32       +1
  Lines        3292     3335      +43
==========================================
+ Hits         1756     1798      +42
- Misses       1536     1537       +1

Impacted Files
Coverage Δ

src/interpreter.rs
60.34% <ø> (+0.51%)
:arrow_up:

src/interpreters/TypeScript_original.rs
41.66% <41.66%> (ø)

src/interpreters/GFM_original.rs
34.42% <66.66%> (+16.31%)
:arrow_up:

src/interpreters/Python3_fifo.rs
14.65% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8852bc3...679e320. Read the comment docs.


/play normal didn't work (no result found)

Since a few days, while I have not updated any package, when I run /play I have either:
An error encountered: PlayingError: FFmpeg/avconv not found!
Id: xQK0f6wzww8
Name: Video name

Either I have "undefined" in the console and "no result found"
Version: October Update

please make sure you have installed the ffmpeg and ffmpeg-static modules.


Get TypeError: cannot set 'get_record_history_wrapper' attribute of immutable type 'object' when import lightautoml

I try to import anything from library lightautoml, but get error Get TypeError: cannot set 'get_record_history_wrapper' attribute of immutable type 'object'.
I have python3.12 version and I made new clean env for using LightAutoML, onlu installed LightAutoML package and got this trouble. Can you help me please?
Error on the screen

Question is solved by direct install from git (https://github.com/sb-ai-lab/LightAutoML).
Current version from pypi isn't support 3.12 version


Large html strings (over 1 million) do not return on 1.1.0 and crash anything newer with page crashed!

Puppeteer version: 1.1.0
Platform / OS version: docker on node
Node.js version: 10.15.1

What steps will reproduce the problem?
Have a html string over 1.8 million chars long and it will never return set content
Please include code that reproduces the issue.
let page = await browser.newPage();
console.time("set content 1")
await setPageHtml(page, asHtml(report));//this does not return
console.timeEnd("set content 1")
What is the expected result?
To return a page buffer.
What happens instead?
It does not throw any errors in 1.1.0 it just never returns. In any newer version even 1.16 anything over 1 million chars seems to crash it with a page crashed! error. I have tried every args listed to try to help this issue, but it does not help. 1.1.0 seems ok until about 1.6 million. I checked the utf-8 it is all valid.

I can confirm similar behavior at least on 1.14 and 1.15. When returning a large object (140MB stringified) from page.evaluate(), the page crashes.
It also happens when trying to upload such a large object to an API directly from browser using fetch(), without ever returning it back to Node.js. This probably happens due to all requests from browser being tracked.
Splitting the data structure into c.a. 24 parts of 6MB worked for us.
We were using websocket connection, so using pipe might help, but we haven't tried, since it breaks other parts of our software.

I think page.evaluate crashing is documented. I can get it to work withg 1.8 million on 1.1.0 using the setContent function, but that functions does weird things to table headers like repeat them in the middle of the table for no reason. I tried with a pipe same result wont return.


Fix build on Darwin

Fixes #20

Conditionally ignore memory stats on non linux/android platforms. Darwin is not supported by systemstat (https://github.com/unrelentingtech/systemstat/issues/73).
Fixed a error output string for MemoryError

Thanks @amfl

I ran it on my Mac, the warnings are still there but if you like I can allow dead_code and unused_variables?

Oh, also I'm working on Mac support for systemstat so hopefully will have something soon.

Oh, also I'm working on Mac support for systemstat so hopefully will have something soon.

I hope so as well. We could also consider switching to heim as recommended in that issue.


jest encountered an unexpected token SyntaxError: Cannot use import statement outside a module typescript

How to reproduce
Run npm test or npm run test or jest

How I have fixed it in my a little project that is created to find how to fix this:
freephoenix888@freephoenix888:~/Programming/test$ npm run test

><EMAIL_ADDRESS>test
> jest

 FAIL  ./sum.test.ts
  ● Test suite failed to run

    Jest encountered an unexpected token

    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.

    Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.

    By default "node_modules" folder is ignored by transformers.

    Here's what you can do:
     • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
     • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/configuration
    For information about custom transformations, see:
    https://jestjs.io/docs/code-transformation

    Details:

    /home/freephoenix888/Programming/test/sum.test.ts:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import { sum } from "./sum";
                                                                                ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1449:14)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.379 s
Ran all test suites.
freephoenix888@freephoenix888:~/Programming/test$ npx ts-jest config:init

Jest configuration written to "/home/freephoenix888/Programming/test/jest.config.js".
freephoenix888@freephoenix888:~/Programming/test$ npx jest
ts-jest[config] (WARN) message TS151001: If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript-module-interoperability for more information.
 PASS  ./sum.test.ts
  ✓ sum (2 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        2.118 s
Ran all test suites.

I have done the same actions as in answer from stackoverflow quoted above and it does not fix our error:
freephoenix888@freephoenix888:~/Programming/dev/packages/deeplinks$ npx jest
 FAIL  ./main.test.ts
  ● Test suite failed to run

    Jest encountered an unexpected token

    Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.

    Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.

    By default "node_modules" folder is ignored by transformers.

    Here's what you can do:
     • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
     • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/configuration
    For information about custom transformations, see:
    https://jestjs.io/docs/code-transformation

    Details:

    /home/freephoenix888/Programming/dev/packages/deeplinks/node_modules/@deep-foundation/store/local.tsx:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import React, { Context, ReactNode, useState, createContext, useEffect, useMemo, useRef } from 'react';
                                                                                ^^^^^^

    SyntaxError: Cannot use import statement outside a module

      2 | import { ApolloClient, ApolloError, ApolloQueryResult, useApolloClient, gql, useQuery, useSubscription } from "@apollo/client";
      3 | import { generateApolloClient, IApolloClient } from "@deep-foundation/hasura/client";
    > 4 | import { useLocalStore } from "@deep-foundation/store/local";
        | ^
      5 | import React, { createContext, useContext, useEffect, useMemo, useState } from "react";
      6 | import { deprecate, inherits } from "util";
      7 | import { deleteMutation, generateQuery, generateQueryData, generateSerial, insertMutation, updateMutation } from "./gql";

      at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1449:14)
      at Object.<anonymous> (imports/client.tsx:4:1)
      at Object.<anonymous> (tests/client.ts:2:1)
      at Object.<anonymous> (main.test.ts:5:1)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        8.686 s
Ran all test suites.

All dev dependencies are the same as that project:
  "devDependencies": {
    "@types/jest": "^29.2.4",
    "jest": "^29.3.1",
    "ts-jest": "^29.0.3",
    "ts-node": "^10.9.1",
    "typescript": "^4.9.4"
  }

As we can see this error shows error not for code of this package (deeplinks), it shows the line from one of the dependencies - @deep-foundation/store
And this error related to the file with tsx extension

ts-jest documentation tells us that ts/tsx files will be transformed to CommonJS files if we have ts-jest preset in the jest.config.ts
ts-jest presets
I use that preset in jest.config.ts already:
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
};

Is the problem cause is store package? 🤔

I have found out that in the previous npm releases we were building our tsx? files to js files. I have added build before publishing and now everything is working


✨ add REST for train

What this PR does / why we need it:
Adds REST support for Training APIs.
Depends on https://github.com/caikit/caikit/pull/312 for internal code refactoring
Good links:

https://docs.pydantic.dev/latest/migration/#changes-to-pydanticbasemodel ?
https://docs.pydantic.dev/dev-v2/api/main/#pydantic.main.BaseModel.model_dump_json
https://github.com/tiangolo/fastapi/issues/3314

For https://github.com/caikit/caikit/issues/329
Special notes for your reviewer:
Todos:

[x] Fix jsondict
[x] Incorporate Train API changes
[x] Fix test hanging
[x] Tmp dir for trainings
[x] Check inference after training

If applicable:

[ ] this PR contains documentation
[ ] this PR contains unit tests
[ ] this PR has been tested for backwards compatibility

Not really ready for review but worth getting an initial review in !

Thanks @joerunde ! The unit tests are similar to the ones we have in the grpc testing for training and inferencing on the trained model.


Block edge 4.3.35

4.3.35 needs to be disabled:
2 clusters currently failing (15%),  7 gone (54%),and  2 successful (15%), out of 13 who attempted the update over 7d
Currently failing classification:
* Down nodes: 1
* Node pressure: 1
* volumesnapshots v1alpha1: 1

4.3.35 can be enabled again:
1 clusters currently failing ( 8%),  2 gone (17%),and  8 successful (67%), out of 12 who attempted the update over 7d
Currently failing classification:
* volumesnapshots v1alpha1: 1


Fix git tag in publish-phar workflow

This PR fixes the following in the publish-phar workflow.

Reading the git tag from GITHUB_REF in the release event.
The correct git ref is checked out on workflow_dispatch event.

Thanks!

@driesvints
Please run the workflow with v1.7.0 as input


After a title update this tool doesn't work

The script generated by the tool before doesn't work today.

This tool is no longer supported by me.
Use FrostyTool instead.

OK, thanks.


Accept Date object for date/time constraint parameters

Currently the minimum and maximum value parameters of the date and datetime validation types must be specified as ISO 8601 strings. Support the use of a Date object as well. For example:
propertyValidators: {
  myDate: {
    type: 'date',
    minimumValue: new Date(78234736),
    maximumValueExclusive: new Date(2017, 3, 14)
  }
}

The full list of date and datetime parameters that should support Date objects:

minimumValue
minimumValueExclusive
maximumValue
maximumValueExclusive

I reviewed #99 and verified that Date object can now be used to specify min/max values for date and datetime validation types.


$ENV:PSMODULEPATH is not set correctly for remoting

JPS> diff ($env:PSModulePath -split ";") ((icm -cn . -config powershell.6.0.0-beta.4 {$env:PSM
odulePath})-split ";")
InputObject                                          SideIndicator

C:\Users\jsnover\Documents\WindowsPowerShell\Modules <=
C:\Program Files\WindowsPowerShell\Modules           <=
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\  <=
And that is why I can't access the bulk of the WIndows cmdlets (e.g. Get-Disk) from remoting.

Will be resolved as part of #4056 when we have final implementation


Adds href links to Windows faults env variables

Add href links to environment variables
Fix href links
Fix minor typos

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6576a638096c7935c67346cc--harness-developer.netlify.app


Add gemma.css to site notebooks.

This is a bit fragile, but it's only a temp measure until the CSS is included in the site bundle.

nblint is failing due to pre-existing 2nd person usage. go/i-am-just-a-janitor


subsys: testsuite: fix default ztest thread priority

When kernel is configured to run in cooperative only mode, i.e.
CONFIG_NUM_PREEMPT_PRIORITIES=0, the ztest framwork generates
"ASSERTION FAIL" at runtime indicating invalid thread priority value.
This commit sets the default ztest thread priority to -2 when kernel is
running in cooperative only mode to ensure thread priority is in the
allowed range.
This follows the example of MAIN_THREAD_PRIORITY Kconfig symbol.

@QSQCaito


CASMTRIAGE-5770: rename old myenv file

Description
During the in-version upgrade testing, the old environment variables saved in the old myenv file caused the upgrade to fail.

Checklist

[ ] If I added any command snippets, the steps they belong to follow the prompt conventions (see example).
[ ] If I added a new directory, I also updated .github/CODEOWNERS with the corresponding team in Cray-HPE.
[x] My commits or Pull-Request Title contain my JIRA information, or I do not have a JIRA.

/backport release/1.4

/backport release/1.6

/backport release/1.3


Versioning files on disk and accelerating PyPI images

:tada: This PR is included in version 2.3.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Submode autocommands event groups not working

I'm trying to create an autocmd to display a notification when entering a submode:
		vim.api.nvim_create_autocmd("SubmodeEnterPre", {
			callback = function()
				vim.notify(" Window Mode", vim.log.levels.WARN)
			end,
		})

But I'm getting an error saying there is no such SubmodeEnterPre event.
How can I setup this?

These Submode* user events is dispatching User event, so you can get a expected behevior with following code:
vim.api.nvim_create_autocmd("User", {
    pattern = "SubmodeEnterPre",
    callback = function()
        vim.notify(" Window Mode", vim.log.levels.WARN)
    end,
})

The difference is it's using User event and the pattern is the expected user event.

Thanks!


multidoc2dial data

abstractive and extractive versions of the multidoc2dial data (https://huggingface.co/datasets/multidoc2dial)

Following @dafnapension methodology this is the preferred way to add atomic well defined code operator:
ExecuteQuery(query="question.split('[SEP]')[0]",  to_field="question")
Her idea is that it is still one line and very clear was is done to the data.
This comment is mainly for future viewers :)


refactor: presets structure

:tada: This PR is included in version 2.8.0-stage.1 :tada:
The release is available on:

npm package (@stage dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Serialize the repr of VersionPart values instead of the raw values

This fixes an issue with updating DateVersionPart values in a version file: for things like month = '04', it has to be a str, complete with the enclosing quotes. Writing part.value instead of repr(part.value) didn't do that. I included a test to demonstrate that the change works as designed.
This issue is preventing the adoption of punch in a project at work because we're going to use CalVer w/ leading zeroes on the month and day portions, and this issue breaks punch_version.py every time I update the version number.

Thanks for the PR, I'll check it today and merge it asap (this evening or tomorrow)

Thanks.

I merged it and released version 1.4.4 that should now work properly. Thank you for the contribution!


[CT-3089] [CT-3065] [Feature] DBT docs allow to view grants for each model

Is this your first time submitting a feature request?

[X] I have read the expectations for open source contributors
[X] I have searched the existing issues, and I could not find an existing issue for this feature
[X] I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

Describe the feature
Make it possible to view the different grants on models (Used from the +grants action) in the dbt docs such that I can ensure the grants have been applied correctly across a project.
Describe alternatives you've considered
Writing a pythn script to look through catalog.json but its not visible.
Who will this benefit?
Anybody who uses docs to checks model access.
Are you interested in contributing this feature?
No
Anything else?
No response

@DanMawdsleyBA Thanks for opening!
Where would you want to see grants appearing in the docs site? On each model's page at the top, inside the table details?
We're not able to prioritize new additions to dbt-docs, but if you or another community member were interested in contributing, you're welcome to open a PR.


Update to version 3.0.3

Hello,
I'd like to know if you have plans on updating the project to the version 3.0.3 of the Skobbler SDK. Currently the version 3.0.2 has some lag issues when navigating using devices running Android 7+.
Thanks in advance

Yep I'll update it when I get the chance. Might take a little longer than ususual since I don't use Windows regularly anymore. Thanks for letting me know. I don't follow Skobbler updates as closely as I used to so getting a message when a new version is out is helpful. Thanks.

Also I can't seem to get the latest version. The downoad page takes me here: https://developer.skobbler.com/#takeoff
Do you have the demo app + .apk download for 3.0.3 as it appeared on the Skobbler page?

Hi, thanks for the quick response. It seems that the hotfix project can be downloaded at this link:
http://share.skobbler.com/android/PublicSDK3.0.3/Hotfix/AndroidDemoPublicHotfix.zip. It's an Android Studio project.
I've tried changing the libraries in your project with the ones on the hotfix but I guess it doesn't work that way.
Thanks again for the help.

By llibraries do you mean the .so files? It should be as simple as swapping those out if that's all that needs doing.

Actually, I haven't tried to swap the .so files, just the .jar and .aar. Let me try that and see what the result is.

Hi again, I've tried swapping the .so files but the navigation kept on lagging with Android 7+, I think there's maybe more that need to be done than just swap the files.

Hello!
The version 3.1 seems to be a lot better. Is there a possibility to uptade to that version?

Hey!
It would be realy great if you could please provide the adapted Version for the 3.1 Framework. Thanks!

You can find the new demo projects and SDKs for Android and iOS in our dedicated repository.
http://post.spmailtechn.com/f/a/fMMMeHiJ3YTM86crddTREQ~~/AACRFAA~/RgRcqLr2P0QgaHR0cHM6Ly9hcnRlZmFjdHMxLnNrb2JibGVyLm5ldC9XA3NwY1gEAAAAAEIKAAn4NcZaZMiGpFIRZnNjaG1pdHpAYWVpbnMuZGU~
For log in, please use the following credentials:
•	username: msk-client
•	password: Shvywkdy7r


What is the Call Flow on 8/1/21

What happens to users that are not complete in the migration of Skype for Business on 8/1 what will the end-user experience be for Non-Teams phones, SIP Call Routing? I suspect everything will stop working however customers don't believe me when I tell them because they say the Microsoft documentation is not clear.  We need clear documentation on call flows when all Federation is removed and clear statements that hybrid will then be broken.

@RABurnettMCSE Thank you for submitting feedback and contributing to the docs. We are currently investigating this

Thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.


PR: Use UTF-8 without BOM when saving

Microsoft .Net Framework use UTF-8 with BOM as the default UTF-8 encoding, while most applications use UTF-8 without BOM.
Arduino can load files with BOM, but can NOT compile.
In this case, the first line #include "DigiKeyboard.h" will NOT be processed correctly.
This PR will correct it.

Thank you.


Extending script from the non-existing file crashes godot

Godot version:
Master 737c90963f99c66d75d4372f02adaa6d82779644
OS/device including version:
Linux
Issue description:
If you inhere from script that doesn't exist, whole godot crashes.
Steps to reproduce:

Create new project.
Choose 2D scene
Attach new script to Node2D
replace extends Node2D  with extends "res://ive_made_a_typo_but_its_not_a_reason_to_quit_on_me.gd" or something
Press Ctrl-S
Observer the crash.

If you make  the change outside of godot, godot will crash on opening the project.
Minimal reproduction project:
test_non_existing_freeze.zip crashes on opening in master and 3.0.6
(initially when I made typo in my project, godot frozen. not crashed, so demo is called _freeze)

I can confirm on Mageia 6, backtrace:
*** Error in `/usr/local/bin/godot-git': double free or corruption (out): 0x00007fffb800b1e0 ***
(gdb) bt
#0  0x00007ffff5084818 in raise () from /lib64/libc.so.6
#1  0x00007ffff5085f2a in abort () from /lib64/libc.so.6
#2  0x00007ffff50c343a in __libc_message () from /lib64/libc.so.6
#3  0x00007ffff50cc879 in _int_free () from /lib64/libc.so.6
#4  0x00007ffff50cfe18 in free () from /lib64/libc.so.6
#5  0x00000000041b8c0c in Memory::free_static (p_ptr=0x7fffb800b1f0, p_pad_align=false) at core/os/memory.cpp:179
#6  0x0000000000fc0379 in memdelete<GDScript> (p_class=0x7fffb800b1f0) at core/os/memory.h:119
#7  0x0000000000fc0c90 in Ref<GDScript>::unref (this=0x7fffef6f76b0) at core/reference.h:269
#8  0x0000000000fc03ce in Ref<GDScript>::~Ref (this=0x7fffef6f76b0, __in_chrg=<optimized out>) at core/reference.h:285
#9  0x000000000100366e in ResourceFormatLoaderGDScript::load (this=0x6dcf0a0, p_path=..., p_original_path=..., r_error=0x0) at modules/gdscript/gdscript.cpp:2108
#10 0x00000000042d8ed9 in ResourceLoader::_load (p_path=..., p_original_path=..., p_type_hint=..., p_no_cache=false, r_error=0x0) at core/io/resource_loader.cpp:177
#11 0x00000000042d9353 in ResourceLoader::load (p_path=..., p_type_hint=..., p_no_cache=false, r_error=0x0) at core/io/resource_loader.cpp:219
#12 0x000000000111188d in GDScriptParser::_determine_inheritance (this=0x7fffef6f8280, p_class=0x7fffb8009540) at modules/gdscript/gdscript_parser.cpp:4965
#13 0x000000000113d274 in GDScriptParser::_parse (this=0x7fffef6f8280, p_base_path=...) at modules/gdscript/gdscript_parser.cpp:8000
#14 0x000000000113dcb2 in GDScriptParser::parse (this=0x7fffef6f8280, p_code=..., p_base_path=..., p_just_validate=true, p_self_path=..., p_for_completion=false, r_safe_lines=0x0)
    at modules/gdscript/gdscript_parser.cpp:8091
#15 0x0000000000ffc240 in GDScriptLanguage::get_global_class_name (this=0x6dcb8f0, p_path=..., r_base_type=0x7fffef6f8670, r_icon_path=0x7fffef6f8668) at modules/gdscript/gdscript.cpp:1832
#16 0x0000000001c7cda6 in EditorFileSystem::_get_global_script_class (this=0x7d64e60, p_type=..., p_path=..., r_extends=0x7fffb8009878, r_icon_path=0x7fffb8009880)
    at editor/editor_file_system.cpp:1334
#17 0x0000000001c7592b in EditorFileSystem::_scan_fs_changes (this=0x7d64e60, p_dir=0x75ae8c0, p_progress=...) at editor/editor_file_system.cpp:865
#18 0x0000000001c776c5 in EditorFileSystem::_thread_func_sources (_userdata=0x7d64e60) at editor/editor_file_system.cpp:978
#19 0x00000000019cb9bf in ThreadPosix::thread_callback (userdata=0xd918530) at drivers/unix/thread_posix.cpp:70
#20 0x00007ffff5ea466d in start_thread () from /lib64/libpthread.so.0
#21 0x00007ffff5146e0d in clone () from /lib64/libc.so.6

and I get a memory map dump.

It does not crash on 3.0.6 for me though, instead it properly errors out:
ERROR: load_source_code: Condition ' err ' is true. returned: err
   At: modules/gdscript/gdscript.cpp:792.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:1856.
ERROR: _load: Failed loading resource: res://lalalalala.gd
   At: core/io/resource_loader.cpp:186.

So I guess the issue might be related to the new global class names as the backtrace hints, CC @reduz @willnationsdev.

Oh, I see, it seems I tried to open project created in 3.1dev with 3.0.6 version and when it failed to open the project decided that it's related.

can confirm, happens to me on 3.1-alpha in Linux

HI, this regression from e4af39cbc
https://github.com/godotengine/godot/blob/4b6846a59d785af3bef6a29958387ed0ee0f6575/modules/gdscript/gdscript.cpp#L2108-L2127
memdelete(script); //crash
CC @Crazy-P


Handling Gravity

Replace gravity component with global(?) gravity value and add mass to rigidbody component

Yeah, gravity could be just cvar.

I've added this in physical_shift function in physics manager but now we need friction or damping parameter bcs, when something is fall on sloping surface its sliding until its collide with smth on its way


JsonReaderException when getting Artist.

Spotify changed, at least in the artist endpoint, the int types to float/double.
{
    "external_urls": {
        "spotify": "https://open.spotify.com/artist/7Ln80lUS6He07XvHI8qqHH"
    },
    "followers": {
        "href": null,
        "total": 2.3024383E7
    },
    "genres": [
        "garage rock",
        "modern rock",
        "permanent wave",
        "rock",
        "sheffield indie"
    ],
    "href": "https://api.spotify.com/v1/artists/7Ln80lUS6He07XvHI8qqHH",
    "id": "7Ln80lUS6He07XvHI8qqHH",
    "images": [
        {
            "url": "https://i.scdn.co/image/ab6761610000e5eb7da39dea0a72f581535fb11f",
            "height": 640.0,
            "width": 640.0
        },
        {
            "url": "https://i.scdn.co/image/ab676161000051747da39dea0a72f581535fb11f",
            "height": 320.0,
            "width": 320.0
        },
        {
            "url": "https://i.scdn.co/image/ab6761610000f1787da39dea0a72f581535fb11f",
            "height": 160.0,
            "width": 160.0
        }
    ],
    "name": "Arctic Monkeys",
    "popularity": 85.0,
    "type": "artist",
    "uri": "spotify:artist:7Ln80lUS6He07XvHI8qqHH"
}

I created a pull request for this problem.

Seems like spotify is currently on a run with breaking things!
Same to the other issue, did you guys find any information if this is an intended change?

https://community.spotify.com/t5/Spotify-for-Developers/Get-Artist-reference-bug-receiving-Float-instead-of-Int/m-p/5800203

I haven't found anything that says it's intentional.
Just a few guys complaining about the same thing, the two you listed plus this one:
https://community.spotify.com/t5/Spotify-for-Developers/Get-Artist-API-endpoint-responds-with-result-in-inconsistent/td-p/5806916

I ran into the same problem today. I haven't checked Spotifys JSON schema, but if it is a number (not integer) then exponential notation should be allowed. https://json-schema.org/understanding-json-schema/reference/numeric#number

I ran into the same problem today. I haven't checked Spotifys JSON schema, but if it is a number (not integer) then exponential notation should be allowed. https://json-schema.org/understanding-json-schema/reference/numeric#number

I went for a workaround with implementing own IJSONSerializer and class CustomIntConverter : JsonConverter<int> where ReadJson() converts to int.

Should be fixed in SpotifyAPI Web 7.1.1
Feel free to re-open if that's not the case.


Add new GetFlagsFromCache public method

This allows retrieving flag cache metadata like version, rule etc
so the application can use it for visibility purposes. i.e: you want to
know what version of a specific flag your ffclient is currently using
resolves #251

Coverage remained the same at 93.919% when pulling 1643414df209ebda743300b47634f51feaf5c720 on marcosnils:feat/flag_from_cache_public into 1a486bfacd0bfd5ba1f279e765cb28d7a722e733 on thomaspoignant:main.

@thomaspoignant WDYT now?

Hey Thomas! thx  for taking the time to review.

This looks good to me, except that we are missing the static function when using the Init function to initialize go-feature-flag.

Not sure what you mean we are missing here.

I am also asking myself about the naming GetFlagsFromCache() is not super explicit for someone that has never seen the internal of the SDK.
The only name that comes to my mind is GetFlagsConfiguration() but I am not 100% sure if it is more understandable. WDYT?

I personally don't see any problems in exposing internals of the library in the function name. In fact, in this case I believe it's better because it's important for the user to understand that this flag configs are coming from the cache and that you could get outdated information if the poll interval still hasn't triggered.

Not sure what you mean we are missing here.

You have 2 ways to use the SDK, you can have a unique and static initialization or you can decide to have multiple instance of the SDK.
It also means that we have 2 different levels for the same function.
If you look at JSONVariation for example we have 2 different signatures

https://github.com/thomaspoignant/go-feature-flag/blob/1a486bfacd0bfd5ba1f279e765cb28d7a722e733/variation.go#L48
https://github.com/thomaspoignant/go-feature-flag/blob/1a486bfacd0bfd5ba1f279e765cb28d7a722e733/variation.go#L110

We need something similar for the new function.

I personally don't see any problems in exposing internals of the library in the function name. In fact, in this case I believe it's better because it's important for the user to understand that this flag configs are coming from the cache and that you could get outdated information if the poll interval still hasn't triggered.

You convince me about the naming we can keep GetFlagsFromCache().

You have 2 ways to use the SDK, you can have a unique and static initialization or you can decide to have multiple instance of the SDK.

gotcha. I'll send the fix in a minute :pray:

I see a lot of changes in the code style, order of import, etc ...
I am not sure this is really needed and it brings noises to your PR.

my vim LSP applied them automatically since I'm using https://github.com/mvdan/gofumpt. Do you still prefer me to revert them? gofumpt is being widely adopted in the Go ecosystem.

I see a lot of changes in the code style, order of import, etc ...
I am not sure this is really needed and it brings noises to your PR.

my vim LSP applied them automatically since I'm using https://github.com/mvdan/gofumpt. Do you still prefer me to revert them? gofumpt is being widely adopted in the Go ecosystem.

no we will keep the change, I will just add gofumpt into the configuration of golangci-lint for future releases

@marcosnils thanks a lot for your contribution.
I will release a new version Today with this new feature.

sure Thomas! glad to help a tiny bit to make gff great! Please to collaborate with you and thx for the pointers.
Keep up the awesome work! I know by experience that doing OSS is not an easy task.

Thank @marcosnils.
I am already in contact with the people at @open-feature, you can find me in the interested parties list 😉

Version v0.24.0 contains this change.


update version to 0.1.0-SNAPSHOT

Typically, the first released version of an artifact would be 0.1.0 (as opposed to 0.0.1). This updates the current snapshot value to reflect that.

@ruebot feel free to wait on this then (or close it). I would only recommend that the first release not be 0.0.1 but rather 0.1.0.


Fix default success policy

Fixes #117

I am ok with this fix for now just so we backport a smaller patch, but i think we need to ensure that the successful jobs we counted are actually the ones that we expect JobSet to have (e.g., we shouldn't count jobs marked as owner by the JobSet, but not part of any ReplicatedJob, this could happen if someone creates a job out-of-band and manually sets the owner reference to an existing jobset)

I am ok with this fix for now just so we backport a smaller patch, but i think we need to ensure that the successful jobs we counted are actually the ones that we expect JobSet to have (e.g., we shouldn't count jobs marked as owned by the JobSet, but not part of any ReplicatedJob, this could happen if someone creates a job out-of-band and manually sets the owner reference to an existing jobset)

I'll add a TODO for this

/label tide/merge-method-squash

/lgtm


added a name change before executing

added the command 'mv install.sh solidworks-install.sh' to rename the file to the correct name before executing

This pull does not work. The -O solidworks-install.sh argument added with pull #48 already addressed the file name. This is why issue #70 is happening.


Add sync mechanism for sidecars

FEATURE REQUEST:
/kind enhancement
What happened:
Sidecar are not informed for annotation updates. E.g. the smbios example could react on annotation changes and change the libvirt xml accordingly.
What you expected to happen:
Enhance the hooks interface.

@mkoderer thanks for the RFE is this something you - or somebody you know - could take care of?

@fabiand you can assigned it to me. I am already working on it.

@mkoderer can you try to comment with /assign to self-assign?

/assign