feat: postman2case

Main changes
支持将 Postman 导出的 json 脚本转化为 HttpRunner 测试用例

Codecov Report

Merging #1294 (da8b6f1) into master (29c1ad2) will decrease coverage by 10.00%.
The diff coverage is 65.27%.

@@             Coverage Diff             @@
##           master    #1294       +/-   ##
===========================================
- Coverage   60.89%   50.89%   -10.01%
===========================================
  Files          73       41       -32
  Lines        8866     5763     -3103
===========================================
- Hits         5399     2933     -2466
+ Misses       3247     2584      -663
- Partials      220      246       +26

Flag
Coverage Δ

unittests
50.89% <65.27%> (-10.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

hrp/internal/postman2case/core.go
65.27% <65.27%> (ø)

hrp/boomer.go
68.65% <0.00%> (-14.93%)
:arrow_down:

hrp/step_request.go
47.82% <0.00%> (-1.16%)
:arrow_down:

httprunner/response_test.py

httprunner/make_test.py

httprunner/loader_test.py

httprunner/cli.py

httprunner/config.py

httprunner/parser.py

httprunner/compat.py

... and 26 more

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 29c1ad2...da8b6f1. Read the comment docs.


Backup - use web log slug by default

Issue #2 created a slug for web logs. Make the backup file parameter optional, and if it is missing, use the slug from the web log (which is specified by URL base in the CLI).

This is complete; will be part of v2 beta 3


[Bug?]: No route matched for preloading js assets

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
Hey, when I have [[id]].tsx as the index route, I get the warning No route matched for preloading js assets. I am using the file router.
Expected behavior 🤔
The page works like excpected, but everytime I visit the route, the warning gets printed to the console.
Steps to reproduce 🕹
Steps:

Create a new Project
Rename the index.tsx to [[id]].tsx

Context 🔦
I am trying to rewrite my pastebin, which is currently written in React + SSG, in Solid Start.
Your environment 🌎
No response

Hi @sotasan
I'm getting same error even for index page without renaming.
Did you find any solution for this?

I see this as well. Wonder if it's the routes/api/auth/[...solidauth].ts that I have.

The question is why did it not match.. This means it won't add the proper preload headers. Is this specific to a certain syntax?  I admittedly haven't used [[...something]] in any examples yet so I will give it a shot.

I don't have this issue anymore.

Well the bug in the main post is real. Issue with the router. I have fixed it now in 0.13.2. I will update the templates.

@ryansolid I still see this problem on my current app with latest solid-router and solid-start. should anything be done on my side to fix it?

in my case it happens with the context undefined in entry-server.tsx:
// @refresh reload
import { StartServer, createHandler } from '@solidjs/start/server'

export default createHandler(() => (
  <StartServer
    document={(context) => {
      if(!context) throw console.warn(context)

      ...

I had the same error and I just reloaded the server to solve it.


focusOnSelect(true) + infinite(false) = a strange interaction

When I use the following configuration, I find a strange interaction that scrolls out of range when I click to the last few.
const settings = {
      focusOnSelect: true,
      infinite: fasle,
      slidesToShow: 3,
      slidesToScroll: 1,
      speed: 500
    };

In addition, it is the same behavior if you use keyboard events.
What I want is not to go beyond the scope so as not to cause strange interactions.
Just like this.

I don't see anything strange in the given demo, it just shows the intended functionality.
BTW, your infinite mode should be false and not fasle.

Thank you very much for your response.
I'm so sorry, I misspelled the word.
But I still have a little doubt, please look at the following state changes.
Initialization state.

Then I clicked 5 times reached the last state.

The red box range is two blanks,  is this condition normal?
I think the following state may be normal as the last state, and it feels better.


user12986714: Watch salesdirector.ai

user12986714 requests the watch of the watch_keyword salesdirector\.ai. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

salesdirector\.ai has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Daniil in Charcoal HQ


use getRequestBody to avoid ShortWriteException

This fixes an issue I'm having where using Hack2.hackInput throws a Snap.Iteratee.ShortWriteException.
I don't really know how Snap works so I'm not sure if this has any memory implications.
A super-short app that demonstrates the problem:
{-# LANGUAGE OverloadedStrings #-}

module Main where

import Control.Monad.Trans.Reader (ask)
import Hack2 (hackInput)
import Hack2.Handler.SnapServer (run)
import Network.Miku (miku, post, text)

main :: IO ()
main = do
    run . miku $ do
        post "/" $ do
            env <- ask
            text $ hackInput env

Great! Thanks!


[Streaming][Kafka] cleanup tests from SPARK-2808

see if requiring producer acks eliminates the need for waitUntilLeaderOffset calls in tests

Can one of the admins verify this patch?

This is ok to test

Ok to test

Merged build triggered.

Merged build started.

Test build #31904 has started for   PR 5921 at commit 1274afb.

Test build #31904 has finished for   PR 5921 at commit 1274afb.

This patch fails to build.
This patch merges cleanly.
This patch adds the following public classes (experimental):
public class EnumUtil
class BinaryClassificationEvaluator(JavaEvaluator, HasLabelCol, HasRawPredictionCol):
class HasRawPredictionCol(Params):
class Evaluator(object):
class JavaEvaluator(Evaluator, JavaWrapper):

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/31904/
Test FAILed.

Merged build finished. Test FAILed.

Pretty sure this error
[error] oro#oro;2.0.8!oro.jar origin location must be absolute:
isn't related to the commit

Merged build triggered.

Merged build started.

Test build #31926 has started for   PR 5921 at commit 4298ac2.

Test build #31926 has finished for   PR 5921 at commit 4298ac2.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/31926/
Test PASSed.

Merged build finished. Test PASSed.

@tdas just pinging on this to make sure it doesn't get lost in the shuffle, lmk if there's more explanation needed.

I havent forgotten about this. I will pull it in.

Another ping on this, even if it misses 1.4
Seeing waitUntilLeaderOffset all over the place in test code I'm working on right now made me sad :(

Just to double check: Jenkins, retest this please

Jenkins, retest this please

Merged build triggered.

Merged build started.

Test build #34183 has started for   PR 5921 at commit 4298ac2.

Test build #34183 has finished for   PR 5921 at commit 4298ac2.

This patch fails MiMa tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

The only thing I can think of mima complaining about is that this patch is removing a method... even though it's a method in a private class that is only used for testing.  Don't know why it didn't complain the first time around.

Merged build triggered.

Merged build started.

Test build #34186 has started for   PR 5921 at commit af1e083.

Merged build triggered.

Merged build started.

Test build #34187 has started for   PR 5921 at commit 4662828.

Test build #34186 has finished for   PR 5921 at commit af1e083.

This patch fails MiMa tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test build #34187 has finished for   PR 5921 at commit 4662828.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Looks like it's passing now but needs a rebase

Merged build triggered.

Merged build started.

Test build #34278 has started for   PR 5921 at commit 1e89dc8.

Test build #34278 timed out     for PR 5921 at commit 1e89dc8     after a configured wait of 175m.

Merged build finished. Test FAILed.

I sort of doubt that wait timeout was related to the merge, the only conflict was the single line of MimaExcludes

Jenkins, retest this please

Merged build triggered.

Merged build started.

Test build #34330 has started for   PR 5921 at commit 1e89dc8.

Test build #34330 has finished for   PR 5921 at commit 1e89dc8.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

@tdas are you OK with this change?


Test Network should support adding network specialization

The network/tests/mod.rs contains a very useful mock network that routes messages between peers.
Networks in Substrate have "Specializations" that are used to account for protocol-specific messages. The TestNetwork in that module should be extended to support arbitrary network specialization, so that network tests for higher-level protocols (e.g. the Polkadot protocol) can use this infrastructure.

@gterzian this is done, isn't it?

Yes, it is done


EnhancementSupport recording table names in fe.audit.log directly

Proposed changes
Issue Number: close #17891
Problem summary
Describe your changes.
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[ ] Does it need to update dependencies
[X] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

related: #18060


Build failure: cliphist

Steps To Reproduce
Steps to reproduce the behavior:

build cliphist

Build log
cliphist> # github.com/rogpeppe/go-internal/testscript
cliphist> vendor/github.com/rogpeppe/go-internal/testscript/exe_go118.go:11:27: cannot use nopTestDeps{} (value of type nopTestDeps) as testing.testDeps value in argument to testing.MainStart: nopTestDeps does not implement testing.testDeps (missing method InitRuntimeCoverage)
cliphist> FAIL	go.senan.xyz/cliphist [build failed]
cliphist> FAIL
error: builder for '/nix/store/mvacs5bxzypgi1x9bqlrlqc4jlbsddfz-cliphist-0.5.0.drv' failed with exit code 1;
       last 10 log lines:
       > Running phase: patchPhase
       > Running phase: updateAutotoolsGnuConfigScriptsPhase
       > Running phase: configurePhase
       > Running phase: buildPhase
       > Building subPackage .
       > Running phase: checkPhase
       > # github.com/rogpeppe/go-internal/testscript
       > vendor/github.com/rogpeppe/go-internal/testscript/exe_go118.go:11:27: cannot use nopTestDeps{} (value of type nopTestDeps) as testing.testDeps value in argument to testing.MainStart: nopTestDeps does not implement testing.testDeps (missing method InitRuntimeCoverage)
       > FAIL	go.senan.xyz/cliphist [build failed]
       > FAIL
       For full logs, run 'nix log /nix/store/mvacs5bxzypgi1x9bqlrlqc4jlbsddfz-cliphist-0.5.0.drv'.

[🔴] × nix log /nix/store/mvacs5bxzypgi1x9bqlrlqc4jlbsddfz-cliphist-0.5.0.drv
warning: The interpretation of store paths arguments ending in `.drv` recently changed. If this command is now failing try again with '/nix/store/mvacs5bxzypgi1x9bqlrlqc4jlbsddfz-cliphist-0.5.0.drv^*'
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/nl116fkliga637kvvnrf64s3bb0i1mdk-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Building subPackage .
Running phase: checkPhase
@nix { "action": "setPhase", "phase": "checkPhase" }
# github.com/rogpeppe/go-internal/testscript
vendor/github.com/rogpeppe/go-internal/testscript/exe_go118.go:11:27: cannot use nopTestDeps{} (value of type nopTestDeps) as testing.testDeps value in argument to testing.MainStart: nopTestDeps does not implement testing.testDep>
FAIL    go.senan.xyz/cliphist [build failed]
FAIL

Additional context
Add any other context about the problem here.
Notify maintainers

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.11.2, NixOS, 24.11 (Vicuna), 24.11.20241009.5633bcf`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.8`
 - channels(root): `"nixos, nixpkgs, unstable"`
 - nixpkgs: `/home/ate329/.nix-defexpr/channels/nixpkgs`

Add a :+1: reaction to issues you find important.

Similar issue here.

@Ate329 You might want to notify the maintainer:

I believe this is an issue with upstream sentriz/cliphist#117 (can repro on Arch via podman). This can be fixed by bumping to a newer commit on master.

Yes that's what I was thinking after checking the nix log as well because it doesn't seem to be an issue caused by NixOS directly.

I was able to get it working with this overlay (which updates it to the latest commit).
final: prev: {
  cliphist = prev.cliphist.overrideAttrs (_old: {
    src = final.fetchFromGitHub {
      owner = "sentriz";
      repo = "cliphist";
      rev = "c49dcd26168f704324d90d23b9381f39c30572bd";
      sha256 = "sha256-2mn55DeF8Yxq5jwQAjAcvZAwAg+pZ4BkEitP6S2N0HY=";
    };
    vendorHash = "sha256-M5n7/QWQ5POWE4hSCMa0+GOVhEDCOILYqkSYIGoy/l0=";
  });
}

Newbie question:  How long does it take for a merged fix such as this to reach nixpkgs unstable?

Well now that is a nifty web app!  Thanks for pointing it out.

This is an override that worked for me until the fix gets to unstable branch
  (cliphist.overrideAttrs (_old: {
    src = pkgs.fetchFromGitHub {
      owner = "sentriz";
      repo = "cliphist";
      rev = "c49dcd26168f704324d90d23b9381f39c30572bd";
      sha256 = "sha256-2mn55DeF8Yxq5jwQAjAcvZAwAg+pZ4BkEitP6S2N0HY=";
    };
    vendorHash = "sha256-M5n7/QWQ5POWE4hSCMa0+GOVhEDCOILYqkSYIGoy/l0=";
  }))
];


Photomath wont run and asks me to update Google Play services

https://play.google.com/store/apps/details?id=com.microblink.photomath

Same with My T-Mobile:
https://play.google.com/store/apps/details?id=nl.oberon.tmobile.my

Same problem with Photomath on LineageOS 14.1 (Android 7.1.2) with microG Services Core <IP_ADDRESS>20: Photomath claims Google Plays Services are not supported on my device.


Added a stop scanning feature

I did some small edits to the usbScanner.js to add a stop scanning feature. It might not be the best but I will probably improve it in the near future as well as I'm actively using this feature for a project.

Looks good, merging!
Sorry took so long...


Fine-tuning

Rubric Criteria

[X] Gameplay
[X] Graphics
[X] Design
[X] User Experience
[X] Scripting
[X] Sound
[X] Quality
[X] Process

Overview
I will assist the rest of the team with fine-tuning and fixing up the game to make sure it runs and performs optimally. I'll help make sure each aspect of the game functions as it should and that there are as few bugs and problems as possible.
Visualization

What is needed to implement the task?
Collaboration with teamates, a keen eye for bugs and issues, knowledge on how to solve the various problems.
What is the biggest risk it will not get done?
I may not be fully aware of all the bugs and problems the game has, will need help to find and know how to fix them all.
Test case

Meet with teammates 2) Identify bugs and glitches/problems with the game 3) Help fix them in any way I can.

Funny image.


UI fixes and tweaks

Added Value and Index properties to EnumScroller, Changed the way Numeric and EnumScroller changes, Fixed Toggle not showing correct value at first draw

Any problems @JohnnyCrazy @crosire ?


Improve CI

Test min/max supported OTP/Elixir versions
Add deps.unlock --check-unused
Skip deps install if cache is present

Hey @TheFirstAvenger thanks for the review, can you please change the repo settings to make Elixir CI / mix test (OTP 25.1.2 | Elixir 1.14.2) required instead of Build and test?

@leandrocp All set!


doc: make sure configmap object referred or documented correctly

Signed-off-by: Humble Chirammal<EMAIL_ADDRESS>

@nixpanic @Madhu-1 ptal.

One place missed here

Addressing it. thanks

@agarwal-mudit done.. addressed the comment.

Mudit approved, added ready-to-merge


执行GPT_SoVITS/prepare_datasets/1-get-text.py时出错

"/Library/Developer/CommandLineTools/usr/bin/python3" GPT_SoVITS/prepare_datasets/1-get-text.py
"/Library/Developer/CommandLineTools/usr/bin/python3" GPT_SoVITS/prepare_datasets/1-get-text.py
Traceback (most recent call last):
File "/Users/xvease/GPT-SoVITS/GPT_SoVITS/prepare_datasets/1-get-text.py", line 19, in
from text.cleaner import clean_text
ModuleNotFoundError: No module named 'text'
Traceback (most recent call last):
File "/Users/xvease/GPT-SoVITS/GPT_SoVITS/prepare_datasets/1-get-text.py", line 19, in
from text.cleaner import clean_text
ModuleNotFoundError: No module named 'text'
Traceback (most recent call last):
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/routes.py", line 442, in run_predict
output = await app.get_blocks().process_api(
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/blocks.py", line 1389, in process_api
result = await self.call_function(
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/blocks.py", line 1108, in call_function
prediction = await utils.async_iteration(iterator)
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/utils.py", line 346, in async_iteration
return await iterator.anext()
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/utils.py", line 339, in anext
return await anyio.to_thread.run_sync(
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/anyio/to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/anyio/_backends/_asyncio.py", line 2144, in run_sync_in_worker_thread
return await future
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/anyio/_backends/_asyncio.py", line 851, in run
result = context.run(func, *args)
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/utils.py", line 322, in run_sync_iterator_async
return next(iterator)
File "/Users/xvease/Library/Python/3.9/lib/python/site-packages/gradio/utils.py", line 691, in gen_wrapper
yield from f(*args, **kwargs)
File "/Users/xvease/GPT-SoVITS/./webui.py", line 413, in open1a
with open(txt_path, "r", encoding="utf8") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'logs/dong/2-name2text-0.txt'

macOS，M2芯片


Error: (0x80041010) Invalid class Source: SWbemServicesEx Specifically: ExecNotificationQueryAsync

I'm getting the above in : 037: WMI.ExecNotificationQueryAsync(Sink, "SELECT * FROM __InstanceCreationEvent " . command)
from DeviceIDFinder.ahk.
Everything was working fine, but on one of the latest W10 updates I noticed DeviceIDPnP behaves like nothing plugged in (though no errors). I decided to run DeviceIDFinder.ahk which gives this error and if ignored shows no devices (so I guess the root cause it the same for both).
I'm sure I've been using AHK2 since forever for this, but to make sure I downloaded the latest version and still does the same.

After running it on both Windows 10 and Windows 11, I didn’t experience any errors. I haven’t come across this error before, but here’s my recommendation: These commands should be safe to run. However, for added safety, consider creating a backup image of your PC. Perform each step and check if it resolves the issue after each one.

Check for Windows 10 updates.

Restart the PC.

In an elevated command prompt, run the following commands:
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow

Restarts WMI service. run this code in an AHK script (v2)
RunWait('*RunAs Powershell.exe -Command "Restart-Service -Name winmgmt -Force"',, 'Hide')

Thanks, I'm kind of weary of these generic DISM/sfc commands so I went searching for the specific error and how troubleshot it, and got here. Then (even if probably I could follow the workflow and narrow down the problem) I got lazy again and took the shotgun approach to rebuild everything as per one of the comments there (pasted below too for reference). And then things started working again, for some reason DeviceIDFinder.ahk got rid of the error but didn't show anything, might be my mistake for not running it as Admin, in any case for good measure run the thing the second time and rebooted, everything is fine now! Bonus: Veeam Agent's service (which I couldn't bring up since about the same time) started working again! Thanks for putting me on the right track, I was sure MS borked something for everyone!
*** Recompile Mof files for WMI errors ***
-run from elevated cmd prompt:
cd C:\Windows\System32\Wbem
for /f %s in ('dir /b *.mof *.mfl') do mofcomp %s
for %i in (*.dll) do regSvr32 -s %i
net stop winmgmt /y
net start winmgmt
gpupdate /force

Local Windows install problem as per previous comment.

Local Windows issue as per previous comment.


Possible bug in SwerveModuleSimulation

I am not 100% sure what is going on here, but I think I have it.
We are trying to port our 2024 code to use YAGSL (current version is a variant from SDS). I sort of have everything working, but there is a bug in the simulation. If I turn on the simulation, diddle with the controls a bit and the switch on Auto, the robot jumps in the first path following.
I put in some print statements in drivetrain,setChassisSpeeds(). The first call, the desired speeds are OK (small as it starts up the path) and the Pose2d of the robot is what was put in as the starting pose for the Auto. On the 2nd call however, the Pose2d has jumped by a lot and the desired speeds are small or backward (I assume this is because the robot has exceeded the path following).
I think I have tracked it down. In SwerveModuleSimulation, there is a timer and "lastTime". However, lastTime is never updated except if updateStateAndPosition() is called. As far as I can tell, there is nothing calling updateStateAndPosition() until I start the auto, so the time period is much higher than it should be.
This is with WPILib 2024 latest version, YAGSL  2<IP_ADDRESS>, Pathplanner 2024.2.8

Pretty sure my guess is correct but it is hard to debug since you can stop the code (I have not tried single stepping in Glass).
Also the IMU simulation has kind of the same bug but it is not relevant because it runs in a separate thread so does not wait for the programmer to setup the robot and "turn it on", and so the timer is always advancing.

Resubmitted to YAGSL-examples, given comment in other PR.


Replace docfx xref with direct links in markdown

Right now we have a lot of broken links which just make browsing navigation harder. Even if we bring it back, UID does not work locally and does not work for anyone who just browses the repo. Since docfx also supports relative file links a suggestion is dumping UID and using plain markdown.
Removing the uids has the following disadvantages:

Sometimes there are links between pathes that are very long and hard to understand
API references cannot be linked by path and must have a uid
Refactorings in documentation are getting harder because you must know which file is linking to the moved file
The plan was to generate a complete documentation for moryx and not for each project itself. So you must know pathes from other repos. This is impossible.
Our documentation gets bigger an bigger and browing it by files is confusing anyway
Local hosting is very easy by .\Build.ps1 -GenerateDocs
Mapping of sourcecode to documentation does not work in plain markdown
Docfx has a very well working search implementation
We should definitly work on hosting the documentation and link from this repo. Have a look at projects like https://github.com/dotnet/docs - it is a very well structured documentation. It can be browsed in repository but links also not work.

So I had a look at https://github.com/dotnet/docs and they do use path links as well. Their documentation completely works on Github, you can event step through previous and next in the tutorials. Look at the documentation for delegates for example.
Inline examples are broken, but still link to the correct file, see here and some xref are unresolved, but all markdown links use the path instead of UUID.
We should have hosted documentation, but that looks like working documentation is common on GitHub. We can also link to files using their path. I doubt the path changes more often than the namespace. Thoughts?

We need xref if we generate a single MORYX documentation, reference APIs or reference Code. For the links within the documentation, we need no xref for now and this can be changed.

Done by @jsonBackup in #220


Fix BitArray.from_counts/from_samples to not fail for input with only 0 outcome and num_bits=None

Summary
Partial fix for #12765.
That issue points out two problems with BitArray.from_counts / BitArray.from_samples. The more severe problem is that these methods fail with an error if the input (e.g. a counts dictionary) contains only the 0 outcome, and num_bits is left at the default value of None.
The methods try to infer num_bits as the number of bits needed to represent the largest outcome (e.g. bitstring) contained in the input data. If the largest outcome is 0 when converted to an integer (e.g. the bitstring "0"), the number of bits inferred is 0, which can be surprising, and also leads to an error.
This small PR interprets 0 as represented by 1 bit instead of by 0 bits, the suggested correct behavior in #12765.
The less severe problem, not fixed here, is that currently any information about num_bits present in the input bitstring lengths gets ignored. That problem seemed less trivial to me. I put some thoughts here.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>9
Details

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
18 unchanged lines in 4 files lost coverage.
Overall coverage increased (+0.004%) to 89.925%

Files with Coverage Reduction
New Missed Lines
%

crates/qasm2/src/expr.rs
1
94.02%

qiskit/transpiler/passes/synthesis/unitary_synthesis.py
2
88.35%

crates/qasm2/src/lex.rs
3
91.6%

crates/qasm2/src/parse.rs
12
97.15%

Totals

Change from base Build<PHONE_NUMBER>4:
0.004%

Covered Lines:
65981

Relevant Lines:
73373

💛  - Coveralls

Hi @aeddins-ibm, could you add a short release note documenting the fix?

https://github.com/Mergifyio backport stable/0.1.2 stable/1.2


LimitOrder Bot Smart Contracts for Uniswapv2, Pancakeswapv2 and Curve

LimitOrder Bot Smart Contracts:

As a user, I want the Uniswap v2 and Pancakeswap v2 Stop LimitOrder Bot to allow me to Sell a token I own to purchase another token at a price that is higher than the current market price, in dollars, and with a deadline of a specific number of days, so that the Paloma blockchain will execute my order if the price changes or it will return my tokens, less gas fees, if the price does not change within the specifieid period of time. These are considered LimitOrder Sells in traditional finance markets.
Acceptance Criteria

Vyper contract updated for Uniswapv2 and Pancakeswapv2
Review of the JavaScript and Python Stop Loss Bots to confirm the DB works as designed
Reminder that LimitOrder Sell is calculated in USD and always higher than the current market price
Collect Fees on deposit
Check LimitOrder EPIC for any details:

@webelf101 and @fieldtheory123 will you review and @fieldtheory123 will you update with the correct EPIC for LimitOrder Bots?

Closing as fixed.


Migrate Dolphin docs from OA website to github WIKI

As discussed in https://github.com/dolphinsmalltalk/Dolphin/pull/16 we should migrate the OA docs from http://www.object-arts.com/downloads/docs/ into the github WIKI.
I will take a go at that over the coming weekend.

 These are compiled in a separate tool called Help&Manual into an HTMLHelp file and the HTML pages you cite above.
It's now my opinion that these should not go into the GitHub Wiki but into a separate documentation space where the pages accessed from the image to provide the help. My intent is to create a GitHub Pages site to host these help documents. This will editable by the normal clone/pull request process sued for normal GitHub repositories.

I'm closing this because I don't think it will ever progress.


Typo "MySQL Flexible service"→"MySQL Flexible Server"

https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview
https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/mysql/flexible-server/overview.md
#PingMSFTDocs

@SudheeshGH
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


[BUG] graphql button is broken in module page

Describe the bug
in module page header, the link of graphql button is 'undefined/graphql'
To Reproduce
Steps to reproduce the behavior:

use source <(curl -s https://getconduit.dev/bootstrap) install conduit
Go to 'Database'
Click on 'Graphql'
Jump to 404 page

Expected behavior
open graphql playground
Screenshots

Desktop (please complete the following information):

OS: MacOs
Browser chrome
Version [e.g. 22]

Additional context
maybe because process.env.CONDUIT_URL is undefined

#38
#39
#47
#48

Hey @running-grass ! Thanks for noticing this. @KostasFeg we're using process.env.CONDUIT_URL as base url in the layouts, but this is not available client-side. We need to inject this the same way it's injected in the requests config.

@running-grass new release published 0.12.4 that resolves this issue

@running-grass new release published 0.12.4 that resolves this issue

ok, i have upgraded 0.12.4 , it work.
Maybe can describe how to upgrade the version safely in the document

First things first, thanks for taking an interest in the project and reporting your findings.

Maybe can describe how to upgrade the version safely in the document

As of right now, you can safely upgrade your Conduit (backend) up to v0.12.x from older releases as stuff gets auto-migrated.
We're cleaning up our existing migrations with v0.13 as they had started to pile up and clutter the codebase, so if you're coming from an older release you'll first need to upgrade to v0.12 before moving on to v0.13.
Going forward, we'll probably maintain a seamless migration path for up to 2 or 3 releases, meaning you'll be able to auto-migrate from v0.13 to v0.15, but you'll need at least a single midway bump before going from v0.13 all the way up to v0.17 etc.
We'll be introducing a docs section for this once v0.13 releases and possibly even warn about it in the codebase while forcing such a leap.
Bear in mind this is all in regards to Conduit (backend) versions.
Conduit-UI releases are somewhat loosely tied to these at the moment, but we're investigating how best to handle their compatibility besides minor versions not breaking stuff etc.

First, Thank you for your answer.
And this project is amazing. i try to use it in my demo project,So I want to upgrade after every new release.
By the way, I look forward to a tutorial or documentation on custom modules.
Thanks again.


Ignore this please

Conform with PEP 8, better OOP. WIP.

Had a brainfart with git. Will send another PR.


colab notebook does not work

The https://medium.com/pytorch/training-compact-transformers-from-scratch-in-30-minutes-with-pytorch-ff5c21668ed5
article written here provides a link to a colab that loads this github repository.
It fails with multiple errors- first, the cct_2 is not a valid option for model,
secondly, selecting any of the other models results in an error relating to multiple image sizes.
attempting to update this by following the instructions on the github and running the train.py file has the same result.
I understand that a lot can change in three years but respectfully, none of the code I have pushed to my github repositories is in a state where it will not run.
It is a major replication crisis and infuriating to encounter code that cannot be run without fixing it.
Even those desirous of extending the work or trying new things will quickly give up if they encounter issues.
please revisit your work to ensure that someone who finds it will be able to run it.

Thanks for the better attitude.
The colab has been fixed. If there are more errors please let us know.
You can also just clone the repo and things work more smoothly (only issue locally was a numpy deprecation).

It is a major replication crisis and infuriating to encounter code that cannot be run without fixing it.
Even those desirous of extending the work or trying new things will quickly give up if they encounter issues.

 The code will break again in the future without any action on our part. Software rots.
We are in the business of generating research, not products. We are not selling you anything, we are not making money off of this, nor is it even remotely optimized. The replication is our description, the visibility of the code, and the checkpoints. If you are wishing to build upon our work, we are happy to hear that. But it does require that you understand what we did. We provide you a full paper with detailed explanation, and code that can be read even when the dependencies break beyond repair. This is beyond our control. We don't own pytorch, torchvision, numpy, and we certainly don't own HuggingFace and can buy out the timm package. Luckily we provide the weights which you are welcome to convert in any way you wish and will be generally future proof, I prefer graftr.


[CI][Test] Fix #1128: reduce number of cases in test_dropout

To save CI resource
Issue #1128

@ce1adon  Thank you!
Fp16 Hip Install All Vega20

[2021-09-01T18:49:30.258Z]  1/81 Test #17: test_dropout ...............................   Passed    5.03 sec

Fp32 Hip All Vega20

[2021-09-01T18:45:12.918Z]  1/82 Test #17: test_dropout ...............................   Passed    4.86 sec

CC: @atamazov  @JehandadKhan

@ce1adon @junliume Does it affect the quality of testing? In other words, it this really a workaround? If yes, then what it the proposed full-blown fix?

@ce1adon @junliume Does it affect the quality of testing? In other words, it this really a workaround? If yes, then what it the proposed full-blown fix?

The rational is that bottleneck is filling input_dims numerous times with random numbers instead of actually test dropout functionality. Aside from other drop out tests (e.g. test_gru_dropout test_lstm_dropout test_rnn_vanilla_dropout), it should be sufficient to check dropout once here.
CC: @ce1adon to double check the above statement.

@atamazov Hey Artem, maybe we should name it reduce number of tests instead of workaround. Please notice that what we did is to reduce test number to the limit. A real "workaround" to the test would be a complete change of the test rule to test RNG path and dropout path separately. Hope this help your evaluation.

@ce1adon

@atamazov Hey Artem, maybe we should name it reduce number of tests instead of workaround.

This question is: Does this (reducing the number of tests) affects the quality of testing?

A real "workaround" to the test would be a complete change of the test rule to test RNG path and dropout path separately.

Can you please explain a little bit what is the purpose of the separation of RNG and dropout? In other words, why we need it? Please put this explanation in #1128. Thanks.

This question is: Does this (reducing the number of tests) affects the quality of testing?

I would say no but I won't be surprised that different people have different opinions.

Can you please explain a little bit what is the purpose of the separation of RNG and dropout? In other words, why we need it? Please put this explanation in #1128. Thanks.

We can do that later. I explained it many times and got approval but there are always something with higher priority blocking this change.

@ce1adon

I would say no but I won't be surprised that different people have different opinions.

Your opinion is the most important for me. So, this PR is really a fix (not a workaround). Good!

I explained it many times and got approval...

Okay. It seems that I somehow missed the explanations. I would appreciate if you provide me with a link to the explanation (if it is somewhere on github). If not, then no problem.


bug: build failed on target x86_64 with avx2

Seems the wrong function name is called here, probably a typo.
error[E0425]: cannot find function `vec_dot_f32_f32_strided_simd` in this scope
   --> crabml-core/src/backends/cpu/buf/buf_f32.rs:54:9
    |
54  |         vec_dot_f32_f32_strided_simd(a, a_base, a_stride, k, b)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `vec_dot_f32_strided_simd`
...
135 | fn vec_dot_f32_strided_simd(a: &[f32], a_base: usize, a_stride: usize, k: usize, b: &[f32]) -> f32 {
    | -------------------------------------------------------------------------------------------------- similarly named function `vec_dot_f32_strided_simd` defined here

For more information about this error, try `rustc --explain E0425`.
error: could not compile `crabml` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...

I'm willing to send a PR to fix it.
BTW, should we setup a pipeline on all support targets in CI?

BTW, should we setup a pipeline on all support targets in CI?

Seems a good idea, but I'm not sure if CI supports AVX2 and so on.


mintty: upgrade to latest version 2.7.9

Hello.
It would be nice to have this fix released.
I tried the new version with same patches and it seems to work.

@Alexpux @mingwandroid is this something you are unwilling to accept into MSYS2?

@dscho I have little time now so I'm merge pull requests when I have time to create builds


weapon charges 1.0

not the same plugin as the unmaintained weapon-charges.

Can you contact the author of the original plugin to get access there?

I'm not interested in pull requesting someone else's plugin, I want to own this one, because it's significantly different from the existing unmaintained weapon charges plugin.
If you mean to ask whether I can ask them if I can use the weapon-charges filename instead of the weapon-charges-2 filename I'm using now, then I can ask, yeah.

Version 1.0 seems a bit odd for a plugin which has "(WIP)" in the name, but that's just my opinion.


Option to block read access to a table as well

Already have read_only_tables but blocking read access would be useful as well.

Looks to me like there are two relevant permissions: https://github.com/simonw/sqlite-authorizer-examples?tab=readme-ov-file#sqlite_read
SQLITE_READ and SQLITE_SELECT
SELECT name FROM demo_table

Emits these events:
SQLITE_SELECT
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"

So the SQLITE_SELECT one is pretty useless, it's just "can this user run any SELECT at all?`
But the SQLITE_READ one shows us which table they are trying to read from.

Prototype:
diff --git a/datasette_sqlite_authorizer/__init__.py b/datasette_sqlite_authorizer/__init__.py
index 26c0def..9e22ee5 100644
--- a/datasette_sqlite_authorizer/__init__.py
+++ b/datasette_sqlite_authorizer/__init__.py
@@ -48,6 +48,7 @@ READ_ONLY_DENIED_ACTIONS = {
     "SQLITE_UPDATE",
     "SQLITE_ALTER_TABLE",
 }
+NO_ACCESS_DENIED_ACTIONS = READ_ONLY_DENIED_ACTIONS | {"SQLITE_READ"}

 def make_authorizer(config, database):
@@ -55,6 +56,9 @@ def make_authorizer(config, database):
     read_only_tables = [
         (t.get("database"), t["table"]) for t in config.get("read_only_tables") or []
     ]
+    no_access_tables = [
+        (t.get("database"), t["table"]) for t in config.get("no_access_tables") or []
+    ]

     def authorizer(action_int, arg1, arg2, db_name, trigger_name):
         table = arg1
@@ -62,12 +66,20 @@ def make_authorizer(config, database):
         if action == "SQLITE_ALTER_TABLE":
             table = arg2

-        if action not in READ_ONLY_DENIED_ACTIONS:
+        print(action, arg1, arg2, db_name, trigger_name)
+
+        if action not in NO_ACCESS_DENIED_ACTIONS:
+            # Action is not one this plugin cares about
             return sqlite3.SQLITE_OK

         if (None, table) in read_only_tables or (database, table) in read_only_tables:
             return sqlite3.SQLITE_DENY

+        if action == "SQLITE_READ" and (
+            (None, table) in no_access_tables or (database, table) in no_access_tables
+        ):
+            return sqlite3.SQLITE_DENY
+
         return sqlite3.SQLITE_OK

     return authorizer


Fixes bugs in shape resolution or NDArrayIndex

In 0.4-rc3.2, some bugs are introduced and this fixes them.

NullPointerException at get if arguments are NDArrayIndexll.all, due to ShapeOffsetResolution#tryShortCircuit bug
validate didn't work due to commented out (I'm not sure why it was commented out, though)

Optimization pass ;/ Will work on a better solution.


getTags with artist(and group, series, character), return blank array

Description of bug
getTags with

artist
group
series
character

return blank array.
other types (ex. female, language...) are OK.
const hitomi = require("node-hitomi").default;

hitomi.getTags("female", { startWith: "z" }).then((value) => {
  console.log(value); // OK, 2 tags are returned.
});

// getTags with artist(and group, series, character), return blank array.
hitomi.getTags("artist", { startWith: "z" }).then((value) => {
  console.log(value); // NG, blank array.

  // getTagUrl return valid URL: https://ltn.hitomi.la/allartists-z.html
  console.log(hitomi.getTagUrl("artist", { startWith: "z" }));
});

getTagUrl return valid URL, so I guess reason of this result is this line,
https://github.com/H2Owater425/node-hitomi/blob/cdaff690294b90cb28136c59f1c86a62527dccbf/source/index.ts#L684
but I can't read these regular expression correctly...
Expected behavior
return valid tags array.
Screenshots

Environment

OS: macOS Monterey 12.3.1
Version

NodeJS: 16.14.2
Package: 7.0.3

I just released a new release, please check it out for the package's new version.
And please let me know if there's any error afterward, thank you for your contribution!

It's working as expected.
Thank you for quick and perfect work!


Adding configurable hostnames to the SoftLayer Terraform plugin

Currently, the softlayer_virtual_guest hostname value is ignored and there is no support to define the hostname. This commit adds a new hostnamePrefix property; the unique infrakit timestamp is amended as a suffix. For example, if the hostnamePrefix is set to given-hostname, then the final value is given-hostname-01234. If the hostnamePrefix value is not set, then the current behavior is not altered.

As far as code coverage, I noticed that the tests for this are checking to be sure there are no errors. Since this PR introduces some logic based on if a specific property value exists, would it be acceptable to add another SoftLayer test json for the run method? Or is that overkill just to test one property value?

I think that it is better to add it.
Because you can specify the state you expect by writing a test.
Please write down the purpose of json in the comment.

Thank you for your comment @YujiOshima! I'll make these changes asap!

Looks like this failed on building vagrant (which is not touched in this PR)
?   	github.com/docker/infrakit/examples/instance/vagrant	[no test files]
time="2017-03-16T14:27:54Z" level=info msg="Connected: topic=/local/ => 1 registered clients, ch=0xc42001a6c0"
time="2017-03-16T14:27:54Z" level=info msg="Connected: topic=/local/ => 2 registered clients, ch=0xc42001a9c0"
time="2017-03-16T14:27:54Z" level=info msg="Connected: topic=/local/time/ => 3 registered clients, ch=0xc4200658c0"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/ => 1 registered clients, ch=0xc4201583c0"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/instance1 => 2 registered clients, ch=0xc42013d9e0"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/instance => 1 registered clients, ch=0xc42017cb40"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/instancetest => 2 registered clients, ch=0xc420192000"
time="2017-03-16T14:27:56Z" level=info msg="Closing client connection at /local/ ch= 0xc4201583c0"
time="2017-03-16T14:27:56Z" level=info msg="Closing client connection at /local/instance1 ch= 0xc42013d9e0"
time="2017-03-16T14:27:56Z" level=info msg="Broker finished"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local => 1 registered clients, ch=0xc4201ca300"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/instance => 2 registered clients, ch=0xc4201c8420"
time="2017-03-16T14:27:56Z" level=info msg="Connected: topic=/local/ => 3 registered clients, ch=0xc4201c8540"
time="2017-03-16T14:27:56Z" level=info msg="Closing client connection at /local/instance ch= 0xc42017cb40"
time="2017-03-16T14:27:56Z" level=info msg="Closing client connection at /local/instancetest ch= 0xc420192000"
time="2017-03-16T14:27:56Z" level=info msg="Broker finished"
panic: no data: [100 97 116 97 58 32 10]

I ran make ci and it built fine locally. Is there any way to rebuild this? I get the message that says "You need write permission to trigger builds". Can I have someone do that for me?

Another implementation would be to simply use the current hostname attribute and amend a unique suffix (currently the hostname is totally ignored). I'm not sure if it's better to add a new hostnamePrefix attribute (and ignore hostname) or honor hostname and treat it as a unique prefix that infrakit adds a unique suffix to. Thoughts?

@JacobFrericks  @kaufers
Nice work.  Thanks!
I think adding a hostname_prefix attribute gives less surprise to the user.   If the user has specified hostname, it will be surprising to see it mutated by the plugin into something else.
That said, this new hostname_prefix attribute, which is interpreted specially only by a certain type of vm resource (softlayer_virtual_host), is a bit of magic that I think it's better to make it very obvious -- hence my suggestion to use something like @hostname_prefix to distinguish it from other attributes.  Also, I think it's something we can move outside the switch statement and make it work for all resource types.
Another idea is to turn all string values itself into templates so you'd have something like
hostname : myfancyprefix-{{ .ID }}-andmyfancysuffix

This will take more thought and we can implement later.

@chungers do you foresee any complications using this with AWS, GCP, or Azure? I don't have much experience with those, to be honest.

Updated with the comments from @chungers and @YujiOshima

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "hostname" git@github.com:JacobFrericks/infrakit.git somewhere
$ cd somewhere
$ git rebase -i HEAD~842354512848
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

@chungers can you take a look at the above message from @GordonTheTurtle? My commit is signed, so I'm not sure what I can do to fix this.

@JacobFrericks  - if you've already signed it then it's fine.


plot.names missing or duplicated for multiple plots

@teixeirak, I noticed that some plot.name are NA or NAC in ForC_measurements, and I think it is messing up the GROA History import. It is only 38 measurements, maybe we can try to fill that up?
Also, @aferson found instances where plot.name has been duplicated across plots. For example, in the one publication she was looking at, there was clear plot IDs (like plot A1, A2...), but, in ForC, the plot.name for the corresponding records were "montain forest" across all plot IDs...
@aferson, please correct me if I did not describe correctly what you found.
So,

Should @aferson, edit plot.name when she finds those issues?
Should @aferson or I try to fill in those 38 missing plot.name?

I believe this was fully resolved with our in-person discussions.
Replace NA/ NAC in plot names with "unnamed"
We can edit the plot names as in the case described above, but its not a particularly high priority (unless trying to add more data from the same site).


container process caused: exec: "./start.sh": permission denied: unknown

Status: Downloaded newer image for 4everland/arweave-node:testnet
Creating arweave-docker_arweave-node_1 ... error
ERROR: for arweave-docker_arweave-node_1  Cannot start service arweave-node: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "./start.sh": permission denied: unknown
ERROR: for arweave-node  Cannot start service arweave-node: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "./start.sh": permission denied: unknown
ERROR: Encountered errors while bringing up the project.

@alanmoleapfive  try chmod +x ./start.sh before docker-compose up

ok,but  more hour  not block  gen
logs
Attaching to arweave-docker_miner_1, arweave-docker_arweave-node_1
arweave-node_1  | mkdir: cannot create directory ?/data/arweave?: No such file or directory
arweave-node_1  | WARN: ************************************************************************
arweave-node_1  | WARN: Your maximum number of open file descriptors is currently set to 1024.
arweave-node_1  | WARN: We recommend setting that limit to 1000000 or higher.
arweave-node_1  | WARN:
arweave-node_1  | WARN: Otherwise, consider setting your max_connections setting to something
arweave-node_1  | WARN: lower than your file descriptor limit.
arweave-node_1  | WARN: ************************************************************************
arweave-node_1  |
arweave-node_1  | Launching Erlang Virtual Machine...
arweave-node_1  | Exec: /app/erts-12.2.1/bin/erlexec -noinput +Bd -boot /app/releases/<IP_ADDRESS>/start -mode embedded -boot_var SYSTEM_LIB_DIR /app/lib -config /app/releases/<IP_ADDRESS>/sys.config -args_file /app/releases/<IP_ADDRESS>/vm.args -- foreground +Ktrue +A20 +SDio20 +sbwtvery_long +sbwtdcpuvery_long +sbwtdiovery_long +swtvery_low +swtdcpuvery_low +swtdiovery_low +Bi -run ar main init data_dir /data/arweave requests_per_minute_limit<PHONE_NUMBER>999999999999999999999999999999 disk_space 100000000 max_disk_pool_data_root_buffer_mb 100 tx_propagation_parallelization 3 max_emitters 1 enable arql_tags_index enable serve_tx_data_without_limits port 1984
arweave-node_1  | Root: /app
arweave-node_1  | /app
arweave-node_1  | Initialising RandomX dataset for fast packing. Key: <<"ZGVmYXVsdCBhcndlYXZlIDIuNSBwYWNrIGtleQ">>. The process may take several minutes.
arweave-node_1  | RandomX dataset initialisation complete.
arweave-node_1  | Initialising RandomX dataset for fast hashing. Swap height: 0, Key: <<"QXJ3ZWF2ZSBHZW5lc2lzIFJhbmRvbVggS2V5">>. The process may take several minutes.
arweave-node_1  | RandomX dataset initialisation for swap height 0 complete.
arweave-node_1  | Joined the Arweave network successfully.
arweave-node_1  | No foreign blocks received from the network or found by trusted peers. Please check your internet connection and the logs for errors.
arweave-node_1  | No foreign blocks received from the network or found by trusted peers. Please check your internet connection and the logs for errors.
arweave-node_1  | No foreign blocks received from the network or found by trusted peers. Please check your internet connection and the logs for errors.

./miner.sh  not  work ok

@alanmoleapfive try chmod +x ./miner.sh before docker-compose up


Report 840 - An implicit conversion is being performed from a value of type 'Enum "Cash Flow Source Type"' to a value of type 'Integer'

A Warning "An implicit conversion is being performed from a value of type 'Enum "Cash Flow Source Type"' to a value of type 'Integer'" is thrown for report 840 "Suggest Worksheet Lines"

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Example for writeTuples should refer to body rather than requestBody

Description
The README example in Go-SDK uses inconsistent name.
Version of SDK
v0.2.2
Version of OpenFGA (if known)
N/A
OpenFGA Flags/Custom Configuration Applicable
N/A
Reproduction
The README example reads
body := ClientWriteRequest{
    Writes: &[]ClientTupleKey{ {
        User:     "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
        Relation: "viewer",
        Object:   "document:roadmap",
    }, {
        User:     "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
        Relation: "viewer",
        Object:   "document:budget",
    } },
    Deletes: &[]ClientTupleKey{ {
        User:     "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
        Relation: "writer",
        Object:   "document:roadmap",
    } }
}

options := ClientWriteOptions{
    // You can rely on the model id set in the configuration or override it for this specific request
    AuthorizationModelId: openfga.PtrString("01GAHCE4YVKPQEKZQHT2R89MQV"),
}
data, err := fgaClient.Write(context.Background()).Body(requestBody).Options(options).Execute()

Notice that we declare variable as body while the execute refers to requestBody.
README has this inconsistent behaviour in a few places as well
Expected behavior
Should refer to body instead of requestBody.
Additional context

Add any other context about the problem here.

The fix should be made in https://github.com/openfga/sdk-generator/blob/main/config/clients/go/template/README_calling_api.mustache

@adriantam  Could you please assigne it to me?

Thanks for tackling this @balaji-dongare!
We follow the standard GitHub fork and PR process so you won't be able to push directly to this repo. You can find some documentation on this in the GitHub docs, if you already have the repo cloned you might need to update the remote, origin should point to your personal fork.

@ewanharris  Thank you for the ice break, I raised the PR.


Documentation for autocrop option

In demo main view I see autocrop option applied to cropme element.
But I do not see any documentation about that option.

I don't remember what this option was, but there is no mention of autocrop in the directive, so it's pretty safe to say that it shouldn't be there and does nothing, sorry for the confusing example


Hits widget: transformData functions should be called even if the templates are not specified

The current behavior is to not call the transformData function if the associated (same name) template is not defined. I think it makes a lot of sense to distinguish those 2 concepts and call the transformData whatever the defined templates.

I guess your underlying problem was to reformat the whole content.hits (not just hits.map) and have them passed to the regular "item" template (instead of having to use allItems template).
The current template behavior is too complex as an API. Most people just want to reorder/reformat the whole hits or some hits. Header/footer transformData are complexifying the API.
Fixing what you are talking about in 1.x might be a little tricky to get right, in particular in term of documentation since this would be more of a workaround a feature that does not exists than a real feature.


API fails when network connection is interrupted

I'm back.  I tried to use the onConnected observable and it works to provide notification when the websocket is disconnected, however, almost immediately I get an unhandled promise warning.  Also, if I remove the Internet block, it does not reestablish the connections automatically and I can't figure out any way to make it reconnect from within my code.  I do not have this reconnect issue with the ring-api code.  This could still easily be something I'm doing incorrectly, but I get the error even with the example code.
If it helps, below is the output from a slightly modified version (my platform is Node 8.x so I couldn't seem to use import) of the example script after I interrupt the internet connections with a firewall rule:
**** Disconnected from alarm at location a234428cb-cbfc-761c-4598-29d23f33dcd8
Request to https://app.ring.com/api/v1/rs/connections failed
(node:451) UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT <IP_ADDRESS>:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14)
(node:451) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:451) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@tsightler Thanks for testing it out! I was only checking for ENOTFOUND, which apparently didn't catch the error from your firewall exception.  I've updated the failure check to look for any network error, so it should definitely catch your ETIMEDOUT.  Give 1.2.3 a try.

Tested and it works great with all disconnect events I'm able to simulate.  Exactly what I was looking for, now I can indicate connectivity status of the various alarms and, just as importantly, rescan state and device changes when reconnects happen as sometimes they seem to get lost.  Thanks so much!

@tsightler glad it's working for you now! Thanks for spurring me forward.  I needed a good excuse to extract everything from ring-api since it doesn't seem to be maintained anymore.


Using custom types as selectors.

In Classy (which we used until now) you can use a custom view name as a selector. As we have a lot of custom views (deriving from UIView), it is a pain to a class name every where. Would this feature be possible?

Take a look at this sample CSS https://github.com/tolo/InterfaCSS/blob/master/Samples/SimpleSample/SimpleSample/main.css
you can specify a UIView class at the selector by using only the class name as the selector (without . or #)

I know, but as I said, these are only UIKit ones. I was asking about custom ones :)

Pretty sure it works for custom subclasses as well

It tells me it cannot find a view with that name (or something like that and the name is prepended with UI) :(

Yes, this is not supported at the moment unfortunately, however I don't think adding support for this should be too hard, so I'll look into doing that for the next feature release.

I have added some kind of support for custom "canonical type" in our fork, but I'm not sure if it is the way it should be implemented.


Please support HTTPS for proxy connection

Is your feature request related to a problem? Please describe.
I want to access a grpc service using an HTTP proxy, and have the connection to the proxy be secure.
Describe the solution you'd like
If the http_proxy environment variable contains an https:// URL, grpc should connect to the proxy using TLS, similar to how curl(1) behaves. Currently, this produces a "scheme not supported in proxy URI" warning, and the proxy is ignored (https://github.com/grpc/grpc/blob/master/src/core/ext/filters/client_channel/http_proxy.cc#L64)

I still care about this capability

I'm going to mark this as disposition/help wanted since we do not have bandwidth to work on this at the moment.

Closing this since no one has come forward to work on it.  If someone wants to volunteer, we can reopen.


Database changes for multiple campaigns

It's only the first iteration so please help me. I'm waiting for the details I've missed and some technical points I haven't noticed yet.

Create a Campaign model that has fields campaign_type, start_at, end_at, name, created_at, updated_at, meta(maybe).
This model can be a proxy between API calls and the code of the campaigns via the Factory (I suppose that each new campaign requires some changes in the code, please correct me if you want to build some very flexible and generic way to do it from admin).  And Many to Many relations with a UserProfile model.

 The idea of this factory is an encapsulation of logic per campaign. For example, we define only available campaigns in the model and after that when a user joins a campaign we have to call a method of the factory join for example that will do all required job (Also I suppose that we can add an endpoint with a definition of required fields to join this campaign. It can be facebook token or site username or something else).
In the factory, we add methods join, get_points (Please add what I missed).  NB: I'm not talking here about the parsers etc I suppose that this code is common for each campaign, but really we can add a verification of the start/and time to the parsers. And maybe add some method like check/get_info/please_help_me that will run a required code for each active campaign (parser, grahpql API, etc).

Migrate signature campaign to the factory way.
The points I see:

Move ForumSite under the Campaign model (Add OTM primary key)
Move create_forum_profile function to the campaign's join.
Refactor all the stats endpoints to get data per campaigns.

cc @shawnlauzon @joemarct
Child of Volentix/venue#33

This is a good start.
Data model
These changes are needed:

User is a member of 0..n campaigns.
A campaign references 0..1 forum.

Campaigns and forums are currently combined together because we only had one campaign and only one forum. The backend needs to support different types of forums and different types of campaigns. Some of this stuff might already be built, since the original plan was to have multiple forums. However, when that plan was dropped, I suspect it stopped working.
API
Since the API changes will actually be extensive, I'm going to create another issue specifically for them. You have a good start for new APIs, but existing APIs need to change as well.

@shawnlauzon

User is a member of 0..n campaigns.
this is a table user_campaign for.

but existing APIs need to change as well.
It's about this point Refactor all the stats endpoints to get data per campaigns. But you are right, I didn't add the required details. I think that @joemarct and you have more info about this part.
A campaign references 0..1 forum.
Is it possible that we will use the same forum for a few campaigns? Maybe it will be better to set a many-to-many relationship?

Is it possible that we will use the same forum for a few campaigns? Maybe it will be better to set a many-to-many relationship?

Yes, the same forum for multiple campaigns for sure. However, it is still 0..1:n (a campaign has at most one forum, and a forum can be in multiple campaigns). We will always create a new campaign after the old one ends.

@alexdashkov Regarding creating a "factory for the campaigns", I'm not sure I understand what you mean completely. For the parts I understood from your explanation, it looks like it will simplify the logic in some parts.
Regarding refactoring to migrate to your "factory" approach, I would not move methods/models when not absolutely necessary. For the first iteration, just implement the minimal changes needed to support multiple campaigns. Incremental improvements can discussed and implemented later.
The additional API endpoints you suggested are all good.

@alexdashkov
Answers to your points above:

This can be implemented as a choice field in the Campaign model. In fact, that is more straightforward. There may be cases when we want to dynamically add some campaign types that will be implemented in the future but not yet supported in the code (which can be differentiated with boolean implemented=True or False). Whichever approach is fine with me. In most cases, it won't matter.

Right. In fact, not just ForumSite but also Signature. Feel free to reason about which ones need to have foreign key to campaign.

I haven't used a through model. I am yet to appreciate the advantage of having that over ordinary ManyToManyField. Same advice here, feel free to use it if it helps to simplify or makes it more efficient.

through parameter gives you a possibility to declare a model used for the mtm relationship, so you can specify extra fields (Some meta information). Read more
So, we can use the same forum and the same signature for the different campaigns, right?

Thanks! Very informative.
Yes, same forum sites and signatures can be used by multiple campaigns.

@alexdashkov @joemarct  I've removed the API discussion from this issue and moved it to #160

I'm looking at the model, and I wonder if in the same way there is Campaign model, there should be a Forum model. Additionally, most configuration info about a campaign forum resides in the ForumCampaign model, while generic Campaign info is in Campaign, and info about the Forum (e.g. posts scraped from the forum) reside with Forum.
Campaign - 1 ------ 0..1 - ForumCampaign -0..n ------ 1 - Forum
So:
class UserProfile(models.Model):
    ...fields...
    campaigns = models.ManyToManyField(Campaign)

class ForumSite(models.Model): # or Forum
    ...fields...
   campaign = models.ForeignKey(ForumCampaign) ## Remove

class ForumCampaign(models.Model):
    ...fields...
    campaign = models.ForeignKey(Forum)

class ForumUserRank(models.Model): # Assuming these are the ranks which are allowed for a ForumCampaign
    ...fields...
    campaign = models.ForeignKey(ForumCampaign)

class ForumProfile(models.Model):
    ...fields...
    forum = models.ForeignKey(Forum)

class ForumPost(models.Model):
    ...fields...
    forum = models.ForeignKey(Forum)

class Signature(models.Model):
    ...fields...
    campaign = models.ForeignKey(ForumCampaign)

Thoughts?

Instead of this model, I suppose that we should add a forum site key to the Campaign. As Campaign can have one or zero forums (Really I don't want to add it, but it have more sense than add a primary key to the forum site  ).
class ForumSite(models.Model): # or Forum
    ...fields...
   campaign = models.ForeignKey(ForumCampaign) ## Remove

yes, another way to do it it's to add an intermediate table ForumCampaign with a unique index for the Campaign primary key. So each campaign will be able to have only one Forum as a relation. The only point I'm afraid of that it will be difficult to work with the current structure using ORM.  But I'm ready to start implementation of the data model.
BTW, what we are doing with the existing data? Should we migrate it or we can remove it?

Yes, ideally we migrate the existing data. The users are especially important, some of the other data less so. If it's too difficult to migrate the data for the current campaign, then it would be acceptable to delete it, as there were only 3 users at the end and we already recorded how much each of them are owed.

@joemarct, do you have any idea how to make difference between the posts if we use a few campaigns for the same forum?
I see that currently, you scrap all the posts. Can I dispatch them by start/end time of the running campaign?
@shawnlauzon is it possible that you run a few campaigns for the same site at the same time?

Posts should be associated with a Forum, not a Campaign. That should resolve the problem, correct?

@shawnlauzon no, really, it's a source of a problem. As if I right understand it's possible that a few campaigns can use the same forum. So it's not very clear to what campaign we should attach points for the posts.

@shawnlauzon I think it's easier to just create an intermediate table ForumCampaign as has been suggested by @alexdashkov. All posts will then have a forum foreign key to it.
It would look something like this:
class ForumSite(models.Model):
    ...fields...

class Campaign(models.Model):
    ...fields...

class ForumCampaign(models.Model):
    forum_site = models.ForeignKey(ForumSite)
    campaign = models.ForeignKey(Campaign)

class ForumPost(models.Model):
    ....fields...
    forum_campaign = models.ForeignKey(ForumCampaign)

The intermediate table ForumCampaign I agree with (I actually suggested it above), and so all those models look right. However, your final model would be:
class ForumPost(models.Model):
    ....fields...
    forum_campaign = models.ForeignKey(ForumSite)

Or we can just count posts for each campaign that uses the same forum?

That sounds exactly right. However, I actually doubt if this would happen in the real world; more likely campaign A would finish and then campaign B would start afterwards. In that case, the points would get applied only to campaign B because campaign A was already finished (and thus does not meet the qualifications for accruing points).

If we don't clean up the ForumPost table after every campaign, we will need to map those posts to a campaign, hence the need for the foreign key to ForumCampaign. If we clean up each time, we don't need it.

I had a chat with @joemarct, and I now completely agree with him :) Actually the data model is only correct with the ForumPosts associated with the ForumCampaign, because the campaign defines which users we scrape. So this is the correct definition (the same as what Joemar defined above):
class ForumPost(models.Model):
    ....fields...
    forum_campaign = models.ForeignKey(ForumCampaign)

Do you have some test account to check that scrapper works?


Lock wallet upon session close

As per discussion between @dennisreimann and @AdamISZ, an unlocked wallet should be locked again if the user closes the tab or the browser window.
We can use the /unlockAPI endpoint, see https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1136
Related: https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1121

Big +1! This is the biggest pain point when developing right now (at least for me). 😄
However, we probably cannot guarantee that a wallet will always be locked on tab/window close right?
Anyway, with the new API functionality we should be able to simply re-unlock an already unlocked wallet. That'll solve the issue.

Is this an issue developers have or "regular" users?
I could see myself having two tabs open, for example one to fill in a send form, the other to look up an account number. Could be confusing if closing the second tab would lock my wallet in the first tab. A timeout sounds preferable.

Yeah, this should be handled unobtrusively, nothing the user has to worry about :)

@dennisreimann let me know if you need help with this or if someone else should take over the issue. I think it would be great to get it into v0.0.3, because if we manage to get v0.0.3 into Umbrel, it will be the first version to get some user exposure.

Is there still an issue? I found this one pretty confusing. After https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1136 (as mentioned above) I think you should be able to unlock any wallet you choose, whether an existing one is unlocked (accessible) or not, but it's not entirely clear exactly how people want it to work (and indeed it needs testing; the shutdown of a wallet shuts down its subservices which is something to check on).

I could see myself having two tabs open, for example one to fill in a send form, the other to look up an account number.

I completely didn't think about this kind of usage, but I suppose it's mostly a client side concern how to make that work without something going wrong ... if you are managing a single auth token then for sure the backend doesn't care. The thing is always to remember the main limitations of: one-wallet-open-at-a-time, one taker/maker action at a time (which includes direct non-coinjoin payments, which are treated as part of the taker "suite" of functionality, for obscure and probably dumb reasons). I suppose there's even more to unpack there about what can and can't happen simultaneously but I'm derailing at this point :)

@AdamISZ I got to try this with the current JoinMarket master, but I cannot seem to get it to work. If there is a locked wallet, I get a 409 Conflict when calling /unlock, the message being Wallet cannot be created/opened, it is locked.

Thanks, will look into it shortly. @dennisreimann

@dennisreimann the error message is helping a bit here. You are getting the RetryableStorageError raise, which iirc is specifically only when either (a) you try to create a wallet file when a file with that name exists or (b) there is a .lock file for that wallet, because the wallet is either (b1) already opened by another script for writing or (b2) an earlier instance was force shutdown (an OS shutdown or some kind of crash of the script itself).
Only (b) applies here I believe, because you're calling /unlock. See:
https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/4ba817e5d236559c15b08090680b9e84085d7a5e/jmclient/jmclient/wallet_rpc.py#L721-L730

@AdamISZ Here are my findings regarding this:

Example 1 :x:

Single wallet "wallet1" existing

Unlock "wallet1" from "browser1": :heavy_check_mark: Success
Unlock "wallet1" from "browser2": :x: 409 Conflict "Wallet cannot be created/opened, it is locked."
(Sutation like @dennisreimann  described above.)

Example 2 :heavy_check_mark:

Two wallets "wallet1" and "wallet2" existing

Unlock "wallet1" from "browser1": :heavy_check_mark: Success
Unlock "wallet2" from "browser2": :heavy_check_mark: Success
("wallet1" on "browser1" will be locked as expected, "wallet2" can be used on "browser2")

However..

Example 3 :x:

Two wallets "wallet1" and "wallet2" existing

Unlock "wallet1" from "browser1": :heavy_check_mark: Success
Unlock "wallet2" from "browser2": :heavy_check_mark: Success
(same as Example 2 till here)
Unlock "wallet1" from "browser1" again: :x: 409 Conflict "Wallet cannot be created/opened, it is locked."
From now on "wallet1" stays unlockable (cannot be opened anymore) in all browsers, even when tried again with "wallet2" locked. "wallet2" can be locked/unlocked normally.

It seems this reveals some kind of corrupt state introduced by https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1136 - but I am not sure.
Other wallets can be created and used after the steps of Example 3, but only "wallet1" cannot be interacted with anymore.
This has also been reproduced with a third wallet. So: Every wallet that gets "auto-locked" by the server because another one opened, will lead to "Wallet cannot be created/opened, it is locked.".

I see.
So 'from browser 2' would mean essentially a new client of the jmwalletd backend right. So, if you call /unlock there, you don't have the current JWT token that is in-use for that wallet right? It seems logical.
I was not considering 'in parallel' clients, at all. I don't think we want to support that, because we'd have to figure out how to deal with multiple writing clients simultaneously, and that's exactly what we've never supported (it's the reason we have the .lock file: we don't want to ever have a confusion about events in the wallet like two different txs being initiated simultaneously).
If it's not acceptable to not be able to have multiple clients simultaneously controlling the same wallet, it might need a lot of work, I don't think that's a sensible way to go tbh. What we do currently have for the CLI only, is the ability to open wallets "read only" with wallet-tool.py, so people can check their balance in a different script from the one running the yield generator. For this client UI that isn't an issue, you can check the balance any time.

Other wallets can be created and used after the steps of Example 3, but only "wallet1" cannot be interacted with anymore.

Ah, but this part might be something independent, I'll check that out.

If it's not acceptable to not be able to have multiple clients simultaneously controlling the same wallet,

I think it is not about that. The UI does not want to have more than one wallet unlocked. Not even in different browsers.
It should have one wallet open at a time. But it should be able to reopen the currently unlocked wallet when the session token is lost . This is as far as I understand the main issue.
tldr: Unlocking a wallet with the correct password should always work.
(If nothing than being already locked wallet is preventing it)
It would be cool, if another wallet than the currently locked wallet can be unlocked when the session token for the currently locked one is lost. But is just "nice-to-have" and might be a different case.

Other wallets can be created and used after the steps of Example 3, but only "wallet1" cannot be interacted with anymore.

Ah, but this part might be something independent, I'll check that out.

Using current master branch (4ba817).

So 'from browser 2' would mean essentially a new client of the jmwalletd backend right. So, if you call /unlock there, you don't have the current JWT token that is in-use for that wallet right? It seems logical.

Yes, it'd also be the same if browser 1 lost the token by closing the tab and reopening the web UI in a fresh tab. Solving that case was the original intention here.

I was not considering 'in parallel' clients, at all. I don't think we want to support that, because we'd have to figure out how to deal with multiple writing clients simultaneously

Agreed, that's out of scope and also not necessary here.

What we do currently have for the CLI only, is the ability to open wallets "read only" with wallet-tool.py, so people can check their balance in a different script from the one running the yield generator.

That'd be a separate feature/task and out of the scope here, nevertheless that'd be great: My use case would be running everything via Joininbox and using the web UI to get a glimpse at what's going on frequently.

As of right now it seems this must just be a bug; when a new unlock event occurs, it should shut down the existing services of the existing wallet object, one of which is the wallet service itself, which should call wallet.close(), which should remove the .lock file. But seems this is not occurring. I'll spend some time getting a client running to find where it's going wrong.

I believe the bug is fixed with https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1160 ; let me know if there are still problems after that one.

Ah yes, I see. My bad, that is indeed a separate bug in functionality.
https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1136 was intended to let you open the same wallet, again (exactly as you describe for Example 1). But I think I can immediately see why this isn't working.
The problem here is that the unlockwallet endpoint function explicitly tries to open the wallet file before beginning the steps to start the wallet service:
https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/4ba817e5d236559c15b08090680b9e84085d7a5e/jmclient/jmclient/wallet_rpc.py#L720-L737
and our open_wallet function (found in jmclient.wallet_utils.py) will raise RetryableStorageError if the .lock file is in place (indicating usage) (see jmclient.storage.Storage._create_lock if the details are of interest).
The previous case (Example 3) was just a dumb bug, this one needs a slightly more careful approach to make sure we get the desired behaviour in both cases, i.e. when /unlock is being called on a new wallet, but also when it's being called on an existing one.
I think just a logic check of whether the call is being sent for the current wallet(service) might be the simplest/best way. I will add the change to https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1160

@theborakompanioni let me know if JoinMarket-Org/joinmarket-clientserver@247b58d works for you, it fixed it in my test.

@AdamISZ Sorry, mistakenly posted my answer to https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1160 instead of here :no_mouth:

Just for those following, master on the other repo now has the merge of the above ( https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1160 ) so the lock/unlock bugs should be ironed out. The other issue raised there (see https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1162 https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1163) actually turned out to be something separate - unconfirmed coins weren't being displayed with the default config setting.

Looking really great so far.
My tests on 4389338 included:
Tests with single wallet

/unlock > /lock > /unlock > /lock :heavy_check_mark:
/unlock > /unlock > /lock  :heavy_check_mark:
/unlock > /display > /direct-send > /display > /unlock > /display :heavy_check_mark:  (correct balance)
/unlock > /coinjoin > /display > /unlock > /display :heavy_check_mark:  (correct balance)

Test with multiple wallets
2 Wallet (alice := Wallet 1; bob := Wallet 2)

alice/unlock > alice/lock > bob/unlock > bob/lock :heavy_check_mark:
alice/unlock > bob/unlock > bob/lock :heavy_check_mark:
alice/unlock > alice/coinjoin > (cj finished) > bob/unlock > bob/display :heavy_check_mark:
alice/unlock > alice/coinjoin > (cj NOT finished) > bob/unlock > bob/display :x: (can be reproduced consistently)

all makers have sent their signatures, sendrawtransaction executed, bob has the correct balance
but after 3 minutes[INFO]  Timed out: transaction with txid: 49c...70 not broadcast., retrying the sendrawtransaction command
from now on /session will return "coinjoin_in_progress": true forever.
NOTE: I have never unlocked alice again till now

When I do alice/unlock > alice/coinjoin response is 401 Unauthorized {"message": "Service already started."}

never saw Coinjoin completed correctly nor Confirmed callback in taker, confs: 1 in the logs

I have yet to make more tests running the marker service.
Maybe I can automate these tests somehow in the coming days.
There are some thing I noticed, which I'll try to reproduce and describe better soon (just to provide a quick preview):

At some point I was not able to stop the yieldgenerator anymore  - at least /session always returned "maker_running": true (similar to above whencoinjoin_in_progress keeps staying true); no output in the logs
Somehow I managed that jmwalletd just exited, but cleanly as supervisord reported (INFO exited: jmwalletd (exit status 0; expected))

Thanks for the test results again @theborakompanioni this is proving very useful.
To analyze these cases, I need a bit of extra context. First, as I recall you're using regtest (good!), but I also need to know the situation w.r.t. makers. Are you running the ygrunner script, for example, or are you using Bob here as a single maker (I'm guessing that's what you mean), so you would be starting Bob as a maker from within the web client? So, Bob's wallet is the maker wallet? And is it the only maker wallet? And how is it started.
If I'm right, in guessing that you started Bob as maker from web client, then, looking at the third and fourth bullet points:

alice/unlock > alice/coinjoin > (cj finished) > bob/unlock > bob/display :heavy_check_mark:

This third bullet point, does it mean you had earlier started Bob's maker in web client (did you lock it after?), and then after unlocking Alice, doing a coinjoin from Alice with Bob as maker, you then unlocked Bob's wallet in the web client and showed the wallet?
For the fourth bullet point, the error condition:

alice/unlock > alice/coinjoin > (cj NOT finished) > bob/unlock > bob/display :x: (can be reproduced consistently)

is it the same as above?
I realise that a large number of these questions may end up being irrelevant, sorry about that :)

To analyze these cases, I need a bit of extra context. First, as I recall you're using regtest (good!), but I also need to know the situation w.r.t. makers. Are you running the ygrunner script, for example, or are you using Bob here as a single maker (I'm guessing that's what you mean), so you would be starting Bob as a maker from within the web client? So, Bob's wallet is the maker wallet? And is it the only maker wallet? And how is it started.

No - I have two joinmarket server running. I am always using our docker-compose setup (you can find it here). One container runs the maker service indefinitely, I do all my testing on the other instance. So "alice" and "bob" are just wallets. Stupid naming in hindsight.. will revert to "wallet1" and "wallet2" again : D

If I'm right, in guessing that you started Bob as maker from web client, then, looking at the third and fourth bullet points:
* alice/unlock > alice/coinjoin > (cj finished) > bob/unlock > bob/display heavy_check_mark

This third bullet point, does it mean you had earlier started Bob's maker in web client (did you lock it after?), and then after unlocking Alice, doing a coinjoin from Alice with Bob as maker, you then unlocked Bob's wallet in the web client and showed the wallet?

No, see answer above. This is something I also tried but did not mention as it had the expected result: It was not possible as /coinjoin from "alice" would be rejected with "Service is already running".

For the fourth bullet point, the error condition:
* alice/unlock > alice/coinjoin > (cj NOT finished) > bob/unlock > bob/display x (can be reproduced consistently)

is it the same as above?
No, see answer above. There is no maker service started on this instance.

I hope I have explained it in a way that is comprehensible.

I realise that a large number of these questions may end up being irrelevant, sorry about that :)

Don't worry too much. I am very happy if I can only help in some way. Thank you for your time. It is very much appreciated.

Thanks. That's enough for me to go on I expect. Will look into it shortly. Looks like the coinjoin state needs some cleanup.

( By the way, I think we drifted off the original topic of this Issue (which was fixing up lock/unlock, I think that part is done). We're discussing bugfixes to coinjoin workflow now, mainly. )
First I reproduced the basic error condition marked by :x: above on regtest using the web client.
From one point of view, this was a pretty simple bug: it's just that JMWalletDaemon.coinjoin_state was not updated to CJ_NOT_RUNNING when the service was stopped (calling JMWalletDaemon.stopService) - which is part of what happens when you call /unlock on a new wallet (i.e. Bob/wallet2 here). So it thinks the active wallet (now wallet2) is still in taker mode.
See https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1164 for a fix.
I've tested that on regtest today in two scenarios: one browser window, alice unlock, start coinjoin, lock, bob unlock, display. Or: two browser windows, alice unlock and start coinjoin in one, bob unlock and display in other. Seems to fix the problem in both situations. Note: the coinjoin gets aborted.
So, probably worth reiterating a previous discussion point:
My statement in several places that this only works with one wallet at a time, is not a design choice, it is more recognition that doing multiple wallets in parallel would require significantly more work and may well violate pre-existing unspoken assumptions in the core of Joinmarket's code. Joinmarket was never written, originally, with the idea of operating more than one wallet simultaneously, in the same Python executable.
So for this reason our only sensible approach is the slightly limiting model where: if you switch wallets during some non-immediate task, including a coinjoin initiated as taker, then that task has to be cut short/cancelled. We do indeed want at least the maker to be able to keep running after we lock, but see the TODO comment here:
https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1164/files#diff-2d8ba6f62a8f19a84fbf3d3abb9ded8a77bd6f09d76158b73430547f482a930bR680-R685

I think I also managed to replicate all of your 'Tests with single wallet' successfully on https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1164/commits/d493343858fd5b1256bd30455e6334dc1e6a3053 @theborakompanioni

( By the way, I think we drifted off the original topic of this Issue (which was fixing up lock/unlock, I think that part is done). We're discussing bugfixes to coinjoin workflow now, mainly. )

Yes! I will do some further testing and then close the issue. Thank you!

I've tested that on regtest today in two scenarios: one browser window, alice unlock, start coinjoin, lock, bob unlock, display. Or: two browser windows, alice unlock and start coinjoin in one, bob unlock and display in other. Seems to fix the problem in both situations. Note: the coinjoin gets aborted.

Will verify.

So, probably worth reiterating a previous discussion point:
My statement in several places that this only works with one wallet at a time, is not a design choice, it is more recognition that doing multiple wallets in parallel would require significantly more work and may well violate pre-existing unspoken assumptions in the core of Joinmarket's code. Joinmarket was never written, originally, with the idea of operating more than one wallet simultaneously, in the same Python executable.

Got it. Thanks for the explanation  :+1:

So for this reason our only sensible approach is the slightly limiting model where: if you switch wallets during some non-immediate task, including a coinjoin initiated as taker, then that task has to be cut short/cancelled. We do indeed want at least the maker to be able to keep running after we lock, but see the TODO comment here:
https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1164/files#diff-2d8ba6f62a8f19a84fbf3d3abb9ded8a77bd6f09d76158b73430547f482a930bR680-R685

Makes total sense! I will post any test results to https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1164.

Works great now. Also a huge benefit while developing ; )
Keep in mind that taker operations will be aborted when a wallet is explicitly locked or another wallet is unlocked.
There is no further work to do related to this issue, except for some possible improvements when notifying the user about what is going on (e.g. coinjoin has been aborted).  Will close this issue now, as the original problems seem fixed.  Feel free to reopen if anyone experiences any issues related to this.

Awesome! Thanks everyone. That's a huge usability boost for the app! 😄

#1164 was merged.


Cloudformation fails and cfncluster rollbacks during cluster creation

Dear all,
I had been unable to create a stable cluster with cfncluster. The cluster is created and then, immediately after all nodes come up, the cluster is destroyed. After looking the log file and wandering around in AWS, I found the following events in the event log of cloudformation:
14:26:13 UTC-0450	ROLLBACK_IN_PROGRESS	AWS::CloudFormation::Stack	cfncluster-slam	The following resource(s) failed to create: [ComputeFleet]. . Rollback requested by user.
14:26:11 UTC-0450	CREATE_FAILED	AWS::AutoScaling::AutoScalingGroup	ComputeFleet	Received FAILURE signal with UniqueId i-624e0bb6
14:18:47 UTC-0450	CREATE_IN_PROGRESS	AWS::AutoScaling::Auto  	Resource creation Initiated
It seems that I am missing some kind of permission but I have no idea how to solve this problem. My config file (edited) is attached below.
Any help is appreciated!
Thanks
Blai

Taking a look at your last stack launch, I think you issue is in the post_install script. I suspect the ln -s ... is failing on the Compute instances as it already is created on the MasterServer. I would suggest that you want to only execute certain commands once. Below is a small snippet that might help you understand how to do that.
. /opt/cfncluster/cfnconfig

if [ "$cfn_node_type" == "MasterServer" ]; then
  # Do something on the MasterServer
fi

if [ "$cfn_node_type" == "ComputeFleet" ]; then
  # Do something on a Compute instance
fi

Another thing, if you use the cfncluster create --norollback mycluster when launching a cluster, it will keep the nodes running and you can then login and look at the log file. Typically errors will be reported in /var/log/cfn-init.log.

Dear Dougal,
Thanks for the information about --norollback and the location of the logs. It is very useful. As you said, the problem was related to the postinstall script.


Loading LoopVectorization.jl makes push! error on julia1.9.0-beta2

Somehow loading the package makes push! with multiple arguments fail with a BoundsError on the latest julia beta.
Initially reported in https://github.com/Kolaru/MathTeXEngine.jl/issues/97
julia> a = []
Any[]

julia> push!(a, 2, 3, 4)
3-element Vector{Any}:
 2
 3
 4

julia> using LoopVectorization

julia> push!(a, 2, 3, 4)
ERROR: BoundsError: attempt to access Tuple{Int64, Int64, Int64} at index [4]
Stacktrace:
 [1] getindex
   @ .\tuple.jl:29 [inlined]
 [2] push!(::Vector{Any}, ::Any, ::Any, ::Any, ::Any)
   @ Base .\array.jl:1077
 [3] top-level scope
   @ REPL[4]:1

julia> versioninfo()
Julia Version 1.9.0-beta2
Commit 7daffeecb8 (2022-12-29 07:45 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 4 × Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, skylake)
  Threads: 1 on 4 virtual cores
Environment:
  JULIA_EDITOR = code.cmd

(@v1.9) pkg> st
Status `C:\Users\kolar\.julia\environments\v1.9\Project.toml`
  [bdcacae8] LoopVectorization v0.12.146

julia> a = []
Any[]

julia> push!(a, 2, 3, 4)
3-element Vector{Any}:
 2
 3
 4

julia> using LoopVectorization

julia> push!(a, 2, 3, 4)
6-element Vector{Any}:
 2
 3
 4
 2
 3
 4

julia> versioninfo()
Julia Version 1.9.0-beta2.41
Commit e25433c4ef (2023-01-17 07:39 UTC)
Platform Info:
  OS: Linux (x86_64-redhat-linux)
  CPU: 28 × Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, skylake-avx512)
  Threads: 28 on 28 virtual cores
Environment:
  JULIA_PATH = @.
  JULIA_NUM_THREADS = 28

(lvdev) pkg> st -m LoopVectorization
Status `~/Documents/progwork/julia/env/lvdev/Manifest.toml`
  [bdcacae8] LoopVectorization v0.12.146 `~/.julia/dev/LoopVectorization`

I cannot reproduce

 [2] push!(::Vector{Any}, ::Any, ::Any, ::Any, ::Any)
   @ Base .\array.jl:1077
 [3] top-level scope
   @ REPL[4]:1

is truly bizarre -- why call calling push! with 4 arguments???

Mind testing if you still see the problem using #461?

https://github.com/JuliaSIMD/LoopVectorization.jl#nogratuitousoverloads fixes it for me on OS: Linux (x86_64-linux-gnu)
CPU: 64 × AMD EPYC 7371 16-Core Processor.

That PR deleted a push!(::LoopSet, ...) method by naming it _push! instead, as there was no reason to use the same name.
Seems like a Julia bug that this should have somehow influenced push!(::Vector{Any}.
Still, no reason to use the name push! over anything else, so I'll issue a new release as soon as that PR merges.


Update gh-pages according to README

Fixes: #294
This is the new  feature!! Now we can upload video as well.(need to compress two times to get under 10 mb)
https://user-images.githubusercontent.com/59874304/102692037-d4c0bb80-4236-11eb-979d-b28b09cc10d4.mp4
@smaranjitghose @anushbhatia Please review it !!

Nice work!
Please have a look at MkDocs to understand how to generate the documentation code more easily. [Basic python knowledge is required. Give it 2 hours and you'll love it]
The source code for the documentation is in the documentation branch
While the output is in the gh-pages branch for  deployment using GitHub pages

Nice work!

Please have a look at MkDocs to understand how to generate the documentation code more easily. [Basic python knowledge is required. Give it 2 hours and you'll love it]

Thank you sir !! Yes I know Python Thanks for this resources as well. 🔥


update jq version to 1.6.0

fix issue with installation xrdsst onto images newer than ubuntu:20.04 or bare python ones
jq.c:196:12: fatal error: longintrepr.h: No such file or directory
  196 |   #include "longintrepr.h"

Hello, thank you for your contribution @KulykDmytro! Since the changes are just to bump the version of a dependency and don’t introduce fundamental changes to the code or documentation we can accept these updates without a signed CLA.
We will try to review and merge the request soon.


Agent Health

Description :
Introduces an agent health reporting module. The module continuously monitors health metrics, such as CPU and memory usage, and sends reports to the scheduler when a significant change is detected (5%).
Main changes:

Added report_health function to monitor and report agent health status.
Implemented get_current_health_status function to retrieve current resource usage information.
Implemented the has_significant_change function to determine if changes in metrics are significant enough to trigger a report.
Integration of the module with the gRPC client via tonic to send health data to the scheduler.

Hi, thank you for your PR and work! :)
I was wondering, is api/agent/proto/health.proto duplicate of this proto file ? api/proto/scheduler/agent.proto
?
I am asking since I don't understand if it's a duplicate in functionality or not

This needs to be rebased on agent-registration


Create PULL_REQUEST_TEMPLATE

Creates a Pull Request template for all repos across the org

https://app.dework.xyz/developer-dao/dev-guild?taskId=98b094df-9a38-4a1a-b54e-ed6141247d94

Seems good to me @ntindle cc @mhmulford0 ?


[BUG] expression field search doesn't establish mapped field as expected

Describe the bug
It seems to be a regression after refactoring

It works fine if mapping is established through dnd and convert it to conditional mapping

Working on this now

Next PR addresses this:


How do I select from InfluxDB what hosts are in the DB?

I would like to select the hosts for a Grafana templated query, but I don't know how. It seems like something this simple should be documented, but I can't find it. Trying to use a "SQL Like" query language is about as productive as trying to eat "Food Like" plastic.

Something like SHOW TAG VALUES WITH KEY=host I think.
https://influxdb.com/docs/v0.9/query_language/schema_exploration.html

Awesome! That worked. :) Thank you @gotyaoi


:PROJECT variable: TS_PROJECT as well as config.cloud.project

This is a 🐞 bug fix.
This is a 🙋♂ feature or enhancement.
This is a 🧐 documentation change.

[ ] I've added tests (if it's a bug, feature or enhancement)
[ ] I've adjusted the documentation (if it's a feature or enhancement)
[x] The test suite passes (run bundle exec rspec to verify this)

Summary
The :PROJECT variable will use TS_PROJECT env var as well as config.cloud.project

https://terraspace.cloud/docs/cloud/config/
https://terraspace.cloud/docs/cloud/setup/

Context
#241
How to Test
Sanity test
Version Changes
Patch

Released in 2.0.2