Clarification on Mode B and Mode A Traffic Selection and Opt-Out Prompts

Context:
To avoid selection biases in our market testing and uphold transparency, we seek clarification on the following aspects related to Mode B and Mode A traffic in Chrome:
Questions:
Could the Chrome team provide clarification on the methodology behind the selection of Mode B label traffic? Is it entirely random, or are there specific exclusion criteria employed to identify eligible users for the test? Furthermore, do these exclusion criteria extend to users in Mode A?
Regarding users assigned to Mode B, will they encounter any prompts allowing them to opt out of the test? If affirmative, we would like to know whether users in Mode A are subject to the same opt-out prompts.
Your insights on these matters would be greatly appreciated.

The inclusion criteria for Mode A and Mode B are the same. The aim is to have groups that are representative of normal Chrome traffic as long as they support the Privacy Sandbox APIs and the labeling method, as such some client configurations are not compatible. For the purposes of the experiment, it's important to only compare labeled traffic to other labeled traffic.
Users in Mode B have the Tracking Protection feature as detailed in https://blog.google/products/chrome/privacy-sandbox-tracking-protection/ and as such, they receive a notification about that feature.

Hey @ebselman, are you happy to close this issue?


Error Handler status code improvement

Added status code if an exception is not an instance of HttpExeception
to trigger error and see deference that it makes throw an error.
 throw new Exception("This is a bad request", 400);
 // or
 throw new Exception("its not founded", 404);

The problem with this assertion is that $exception->getCode() might not be a valid http status code, hence why it is only set with the HttpException on line 35. We know that those exceptions will return a valid status code while regular exceptions won't necessarily.


Nice project

The UI is awesome but the buttons can be improved

sure, i can do that. is there any more suggestions , anything is welcome


[RadioGroup] Focusing a radio item causes the radio group value to change as if that item was clicked

First things first: Radix is wonderful. Thank you for creating it!

Bug report
Current Behavior
Programmatically focusing an Item in a Radix radio group causes that Item to become checked.
Expected behavior
Programmatically focusing an Item should not cause it to become checked.
Reproducible example
https://codesandbox.io/s/festive-goldstine-sjt3o?file=/App.js
To repro: Click the button and see that the checked Item changes (unexpectedly... I'm pretty sure).
Suggested solution
I'm not sure
Your environment

Software
Name(s)
Version

Radix Package(s)
@radix-ui/react-radio-group
0.1.1

React
n/a
17.0.2

Browser
Chrome
Version 96.0.4664.18 (Official Build) beta (arm64)

Assistive tech
n/a

Node
n/a

npm/yarn
whatever codesandbox is using

Operating System
macOS
12.0.1

Hey @davidkhayutin,
This was fixed by this PR a long time ago and I can't see any regression so it works as intended.
What issue are you referring to?

The issue I am referring to is that when I use the up/down arrows on the radio they become checked - I would expect them here to be focused but not checked - I am never using my mouse in this interaction but using tab to reach the first radio and then using the up and down arrows

Update: a bit more research in aria shows that arrow movement should in fact change the state from checked/unchecked

Yes that is the correct behaviour.
Just to clarify, the original issue fixed here was that an unchecked radio would get checked when focusing it via tab key.


Nan values returned by flux

When I try to create a TimeSeriesSource with the following phase, wave, and flux, arrays, which contain no nan elements, the flux method of the resulting source always returns nan, for any phase/wave value.
The arrays can be downloaded here:
http://w.astro.berkeley.edu/~dgold/static/nan_source.pkl
They can be loaded into memory and turned into a source by doing
import pickle, sncosmo
phase, wave, ts = pickle.load(open('nan_source.pkl','rb'))
source = sncosmo.TimeSeriesSource(phase, wave, ts)

and you will see for any phase or wave, e.g.,
source.flux(0., 4000.) # returns nan

why is this happening?

This might have something to do with it?
In [5]: ts.min()
Out[5]: -inf

In [6]: ts.max()
Out[6]: inf


merge micro task

i have pull requested the proposed micro task , kindly see to it

sir i have linked the proposal but it is showing conflicts

Please keep the discussion of pull requests within pull requests. I addressed your questions in #52 and #47


check validation of nni annotation in trial code

The new version of nni annotation requires '''@nni.get_next_parameter()''' to retrieve hyperparameters. nni should check whether this annotation is added in the trial code before running the experiment, if not, then show error message to users.

This issue can be closed.
Now no matter whether user adds this line or not, nni will work

Related to PR #526 @


saved phase on Organ or Studies tab reverts if you look at protocol details

🐛 Describe the Bug
When you change the phase of a biomarker on either the Organs tab or the Studies tab, and save the new phase, the phase will revert to its previous value if you click on the  "Click here to read more about this study" link.
I often click that link to check the protocol ID and verify I am working on the correct protocol.
📜 How To Reproduce

Go to any biomarker in the BMDB, for example CCL11.
https://bmdb.jpl.nasa.gov/biomarkers/view/76

Navigate to Studies tab.

Change phase from current value (Two) to any other value (Five...)

Click Save, to save the change you made.

Click on "Click here to read more about this study"

User browser back button to get back to curation screen.

See that the change you made to phase is gone, reverted back to original value.

❗ Mention if the bug appears:
This bug does not occur if you change the phase, click on another tab such as Basics, go back to the Studies tab, then click "Click here to read more about this study".  If you have left the Studies page, this will not happen.
🔎 Expected Behavior
Your phase change should be saved regardless of where you navigate to after clicking Save.
🖼 Screenshots
If you have any screenshots that help, attach them.
🕵♀ Extra Details
If you think it'll help, you can add any of the following:

Platform

Desktop browser (macOS 10.15, Chrome or Firefox 76.0.1, etc.)
Mobile (iOS 13.2 with Safari, etc.)

Time of day

Error only happens between 2:30am and 4am, etc.

Additional context.
And so forth.

@mryan4 thank you for the incredibly thorough report.
Confirmations:

Safari: ✅ works fine
Chrome: ❌ bug as reported
Firefox: ❌ bug as reported

Just as a quick FYI @mryan4, this doesn't revert in the database, just what's displayed (and at least on macOS, just what's displayed in Chrome and Firefox—Safari works fine).
If you just hit ⌘R (refresh or reload), the page will show the latest change to the phase.

That is great news! Thanks Sean.

On Aug 20, 2020, at 4:52 PM, Sean Kelly<EMAIL_ADDRESS>wrote:

Just as a quick FYI @mryan4, this doesn't revert in the database, just what's displayed (and at least on macOS, just what's displayed in Chrome and Firefox—Safari works fine).
If you just hit ⌘R (refresh or reload), the page will show the latest change to the phase.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


Ignore retryable jobs from sidekiq

Is it possible to not trigger notification for retryable jobs from sidekiq. The notification should only occur if job is marked as dead.
Something like - https://github.com/airbrake/airbrake/pull/831

The bugsnag gem currently doesn't have anything built-in to automatically ignore Sidekiq jobs that will be retried.
However, you can create your own middleware to use with Bugsnag to ignore errors under certain conditions. See https://github.com/bugsnag/bugsnag-ruby/issues/90#issuecomment-74778490 for an example of a middleware that prevents Bugsnag from sending errors in Sidekiq jobs where the retry count of the job is less than some threshold.
Keep in mind that if you stick with Sidekiq default settings, a job that keeps failing won't be marked dead until more than 20 day later, so waiting until a job is dead to send an error report in these cases might not be what some users desire.


Upgrade to Quarkus 1.13.2.Final

d0f7797 rebased so that the CI does not fail on the issue solved in the previous PR


crash when sync server is not connected

sendMsg2Sync will crash when sync server is not connected

#66 fix this problem.


Remove default.calib file from version control

The resources/default.calib is currently under version control. I believe this is problematic as it should be overwritten after performing calibration and it's easy to git push this board-specific calib file on mistake.
Possible alternative:

Change default.calib to default.calib.example. Keep this in version control.
Ignore all files w/the calib extension
When running our example scripts, copy default.calib.example => default.calib if it doesn't exist.

/cc @Luxonis-Brandon @Luxonis-Brian

I agree this is a potential problem. Your plan sounds good, though!

@Luxonis-Brian implemented an alternative in c66462d40ad64345d4bcf3d7cb56d05e990bc0ed that attempts to load the depthai.calib first, then drops down to the default.
depthai.calib is already ignored by version control so I think this solves the root problem.


[WIP] Modularise AIO bootstrap portion of deploy.sh

This PR moves the AIO bootstrap out of deploy.sh into its own script.
Connects https://github.com/rcbops/u-suk-dev/issues/834

Once https://github.com/rcbops/rpc-openstack/pull/1731 merges this will require a rebase on top of that.

recheck_all

Connects: rcbops/u-suk-dev#834

Waffle is kind of picky here. It won't link the PR to the bug until you remove the colon.
Connects rcbops/u-suk-dev#834

@alextricity25 Thanks - fixed up now. I found a bunch of bugginess that I think is now solved. I'd like to see whether it passes gates before cleaning it up as I think it's a bit messy right now. Reviews are welcome though!

This looks good.

Note that now that the OSA SHA has been updated I'll be pushing up another patch to improve the idempotence of the AIO bootstrap. But for now this PR as-is achieves the goal I set out to achieve, which was to allow the Ansible and AIO bootstrap to be executed without being forced to run all the playbooks.


New feature to allow Parameters section

Problem statement
I would like to add a new feature where the Parameters section is allowed in swagger:route.
Background to this feature
Working on a company project, we have a custom version of the Swagger API which allow us to do calls to our microservices by reading the swagger documentation generated from our builds. (like a Postman that updates the contracts automatically by using the generated swagger).
For our Go Microservices we use gin  and unfortunately we were unable to tie the Request models to the router definitions since the gin methods just receive a context, and then we deserialize the gin request object into our Request Struct, which would be our swagger:model
The swagger documentation gets generated perfectly except for the request body model is missing.
Details of the feature
Add a section Parameters when reading a swagger:route that will allow to define multiple parameters using the parameters information. Each parameter declaration will start with a + at the first line, like declaring arrays in a YAML file with -
Example:
//  Parameters:
//  + name: request
//    in: body
//    schema: modelName
//  + name: id
//    in: path

you can look into swagger:operation
alternatively you can define the parameter structs, look at them as documentation but the types are verified by the compiler.

Thank you @casualjim, I was not aware of swagger:operation. Reading the spec though, it seems that the Schemas have to be added manually with the ref, type and description? This was the example I found in the documentation
    // responses:
    //   '200':
    //     description: pet response
    //     schema:
    //       type: array
    //       items:
    //         "$ref": "#/definitions/pet"
    //   default:
    //     description: unexpected error
    //     schema:
    //       "$ref": "#/definitions/errorModel"

I was hoping to just provided a swagger:model name and obtain all this information directly from there.
I submitted a PR that would allow adding the parameters through swagger:route
https://github.com/go-swagger/go-swagger/pull/1405
I think it would be a nice addition to swagger:route. I'd love to hear your thoughts, hopefully you'll find it useful, if not I'll start using swagger:operation instead

@jucardi do you think this issue could be closed now?

This feature is missed in the documentation - https://goswagger.io/use/spec/route.html

does anyone have idea how to write query parameters in go-swagger


Rendering?

Although it’s pretty trivial to take a polygon and render it to a Canvas 2D context or an SVG path string, I wonder if it would be beneficial to make some explicit support for rendering in this package. (Related d3/d3-hexbin#1.) An interesting use case to consider is how to render the output of d3-voronoi.

Easy enough to do, but do we want the dependency on d3-path?


tools: show extension headers in wireshark plugin

Add support for Hop-by-Hop and End-to-End extension headers to the wireshark plugin.
Individual TLV options are shown but their content is not parsed (yet).
Additional, small tweaks:

fix a small typo, use add_tvb_expert_info instead of
add_tvb_proto_expert_info (which does not exist).
reduce range for Path Meta in the dissection tree to the relevant
fields, not the entire rest of the packet

This change is

/rebase


Fix GRPC CheckRegistryServer function

Problem: The CheckRegistryServer function used by grpc catalogSources
does not confirm that the serviceAccount associated with the
catalogSource exists.
Solution: Update the GRPC CheckRegistryServer function to check if the
serviceAccount exists.
Signed-off-by: Alexander Greene<EMAIL_ADDRESS>

/lgtm
Looks like there is a unit test failure -- may be related?
 --- FAIL: TestSyncCatalogSources (1.17s)
    --- FAIL: TestSyncCatalogSources/GRPCConnectionStateAddressIsUpdated (0.12s)

Looks like there is a unit test failure -- may be related?

@exdx seems like that unit test now needs a serviceAccount to be created in order to work as expected.

/lgtm

/lgtm

/unhold

/lgtm


Breakpoints source code mismatch with Visual Code on WSL and remote GDB

Visual Code on WSL
Breakpoint set from the editor window (and appear in Run/Breakpoints).

But when running debug command breakpoint fails to be setup due to path mismatch:
No source file named /mnt/c/Users/User(AD)/.vscode/extensions/ms-vscode-remote.remote-wsl-0.44.4/~/debug/main.cpp.
instead of actual file location:
 /mnt/d/PRJ/BasicCppSample/main.cpp
Program is being run correctly, but no breakpoints are matched.
Local path to source code (${workspaceRoot}):
/mnt/d/PRJ/BasicCppSample
Local bin path
/mnt/d/PRJ/BasicCppSample/build
Remote path:
~/debug/
Testing with gdb (breakpoint was set properly):
(gdb) target extended-remote | sshpass -p "pass" ssh -T<EMAIL_ADDRESS>gdbserver --multi -
Remote debugging using | sshpass -p "pass" ssh -T<EMAIL_ADDRESS>gdbserver --multi -
Remote debugging using stdio
(gdb) set remote exec-file ~/debug/BasicCppSample
(gdb) file BasicCppSample
Reading symbols from BasicCppSample...done.
(gdb) b main
Breakpoint 1 at 0x8a4: file /mnt/d/PRJ/BasicCppSample/main.cpp, line 24.
(gdb) run
Starting program: /mnt/d/PRJ/BasicCppSample/build/BasicCppSample debug/BasicCppSample
stdin/stdout redirected
Process ~/debug/BasicCppSample created; pid = 13755
warning: while parsing target description (at line 1): Target description specified unknown architecture "aarch64"
warning: Could not load XML target description; ignoring

Visual Code configuration:

Additional information (Debug Console output with "printCalls": true):
Running gdb over ssh...
1-gdb-set target-async on
2-environment-directory "~/debug"
3-file-exec-and-symbols "~/debug/BasicCppSample"
4-environment-cd "~/debug"
5-break-delete
6-break-insert -f "/mnt/c/Users/User(AD)/.vscode/extensions/ms-vscode-remote.remote-wsl-0.44.4/~/debug/main.cpp:26"
No source file named /mnt/c/Users/User(AD)/.vscode/extensions/ms-vscode-remote.remote-wsl-0.44.4/~/debug/main.cpp.
7-thread-info
Running executable
8-exec-run
9-thread-info
Hello world 2!
[Inferior 1 (process 19260) exited normally]
-gdb-exit

duplicate of #167


Upload NIRX image on TrustWallet

Please add NIRX ERC20 token on TrustWallet

Hi Team, please merge pull request, thank you.

Hi Team, Still on the waitlist. Kindly Check.


markup(html) add missing required attribute lang

Looking through reports it seems we can fix this trivial html markup error
add DOCTYPE to our html

Thanks!


musl: add more syscall constants

I hit a compilation issue where the SYS_rseq constant is not defined for some musl targets. For this PR I compared with upstream syscall.h.in files and added constants that I found where missing.
I wanted to double check if this is something we can easily adjust. If a PR like this is accepted, I can also see to adjust more of the remaining files that I haven't touched yet, and potentially write a small script for the conversion.
The changes in s390x are a little bigger because the integers were in relatively random order.
References:

riscv64
x86_64
powerpc64
aarch64
s390x

@tgross35 I can come up with a Python script to make these lists more consistent either with MUSL upstream or the Linux sources upstream. What do you think about that?

@tgross35 I can come up with a Python script to make these lists more consistent either with MUSL upstream or the Linux sources upstream. What do you think about that?

Thanks for offering! I am in favor of better comparison against sources but I'm not sure what would be best here. A script to compare syscalls would be somewhat limited, but it would be great to do something like compare against bindgen's output.
Happy to discuss something more in an issue if you're up for helping out, our tests could definitely be improved in a variety of ways.

@tgross35 I had a Python script that looked like this and used the musl source code, but I am wondering if it would be more appropriate to use the Linux headers? I guess these files are the definite source: https://github.com/torvalds/linux/blob/4a5df37964673effcd9f84041f7423206a5ae5f2/arch/x86/entry/syscalls/syscall_64.tbl
import re
from pathlib import Path

def convert_to_rust(input_file, output_file):
    # Updated pattern to capture the entire value/expression
    pattern = r'#define\s+__NR_(\w+)\s+(\(?\s*(?:0x[0-9a-fA-F]+)?\s*\+?\s*\d+\s*\)?|\d+)'

    # Read input file and convert to Rust format
    with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
        for line in infile:
            match = re.match(pattern, line.strip())
            if match:
                syscall_name, value = match.groups()
                # Keep the value exactly as is, just remove any extra whitespace
                value = ''.join(value.split())
                # Convert snake_case to the Rust SYS_ format
                rust_line = f'pub const SYS_{syscall_name}: ::c_long = {value};\n'
                outfile.write(rust_line)

def run(input_file):
    print("Running for file: ", input_file)
    output_file = input_file.parent / 'syscalls.rs'
    convert_to_rust(input_file, output_file)
    print(f"Successfully converted {input_file} to {output_file}")
    print("===============================\n\n\n")

def main():
    paths = Path('.').rglob('**/syscall.h.in')
    for path in paths:
        print(path)
        run(path)

if __name__ == '__main__':
    main()


[VISUAL ISSUE] Global create menu buttons don’t fill container on iPad

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

https://user-images.githubusercontent.com/31285285/143146863-ec5e6f26-3775-4ceb-8775-237a72559e0c.MOV
Action Performed:

Open App on iPad.
Open the global create menu (green circle +).
Hold your finger on any button, notice how the hover styles don't apply to the entire length of the container.

Expected Result:
The button should flex grow to fill the entire container.
Actual Result:
The buttons have the same width they'd have on an iPhone.
Workaround:
N/A
Platform:

Where is this issue occurring?

iOS

Version Number:
Reproducible in staging?:
Reproducible in production?:
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
Issue reported by:
Slack conversation:
View all open jobs on GitHub

Triggered auto assignment to @tjferriss (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

Current assignee @tjferriss is eligible for the AutoAssignerTriage assigner, not assigning anyone new.

Triggered auto assignment to @puneetlath (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

Adding external label as I am an engineer and can confirm that it can be fixed this way.

Assigning Weekly as this is a visual issue

Proposed Solution:
Here is the problem:
Within BasePopoverMenu.js at line 40 it set styles.createMenuContainer for large screen as under:
https://github.com/Expensify/App/blob/36558e097dbcc14a043d619697084b9b40e26e67/src/components/PopoverMenu/BasePopoverMenu.js#L40
So createMenuContainer  always set width: variables.sideBarWidth - 40, i.e. it will not show full width in large screen.
https://github.com/Expensify/App/blob/36558e097dbcc14a043d619697084b9b40e26e67/src/styles/styles.js#L826-L829
Solution:
From index.native.js we need to pass containerStyles props (Not exist, we need to create) to BasePopoverMenu.js component,  so it will make it full width as shown implementation below:
Add containerStyles props to src/components/PopoverMenu/BasePopoverMenu.js
const propTypes = {
     ...,
    // eslint-disable-next-line react/forbid-prop-types
    containerStyles: PropTypes.object,               // *** Add this code
    ...,
};

const defaultProps = {
    ...,
    containerStyles: {},                  // *** Add this code
};

// *** Update style as shown below
<View style={this.props.isSmallScreenWidth ? {} : [styles.createMenuContainer, this.props.containerStyles]}>
  ....
</View>

Add below code to src/components/PopoverMenu/index.native.js
return (
  <BasePopoverMenu
      // eslint-disable-next-line react/jsx-props-no-spreading
      {...this.props}
      onMenuHide={this.onMenuHide}
      onItemSelected={item => this.selectItem(item)}
      containerStyles={styles.w100}                    // *** Add this code
  />
);

Update below code to src/components/AttachmentPicker/index.native.js:
// *** Update style as shown below
<View style={this.props.isSmallScreenWidth ? {} : [styles.createMenuContainer, styles.w100]}>
  ....
</View>

So this will solve problem everywhere for native iPad etc. For native small screen it behave as it is.
Below is screen record:  It works as expected after this updates.
https://user-images.githubusercontent.com/7823358/143253698-b2f26579-7fe4-48e3-876a-bf027dac6065.mp4

@puneetlath  @jasperhuangg
Fix will be no longer needed for this issue, global create menu width should not be of the full-screen width issue raised here https://github.com/Expensify/App/issues/5754
The issue is fixed in the PR https://github.com/Expensify/App/pull/6278 it's merged!
This Issue no longer exists now. Video for reference
https://user-images.githubusercontent.com/85645967/143625301-c177a1ce-e29b-466a-a88b-caff774ac134.mov
So let's close this.

Makes sense thanks @Santhosh-Sellavel.
And thanks for taking the time to make a proposal @PrashantMangukiya!

I see the PR #6278 Changes is reverted in PR https://github.com/Expensify/App/pull/6523, because it caused a few deploy blockers, so we may need to reconsider this!
cc: @puneetlath @jasperhuangg

#6278 would be reworked. It was reverted for regression. The author will fix the regression and resubmit.

#6278 would be reworked. It was reverted for regression. The author will fix the regression and resubmit.
Then we are good here!


Default force field is 1.3.0

BespokeWorkflowFactory's default initial force field is Parsley 1.3.0. It should probably be updated to 1.3.1, or more likely Sage 2.0.0
EDIT: It might also be nice to allow initial_force_field to be set to an OpenFF Toolkit ForceField object. I imagine this would make it easier for people to optimize their pet force fields.

We could have the BespokeWorkflowFactory follow the BespokeOptimizationSchema and store the string representation of the force field which would allow for both a custom and standard offxml starting point.


[WIP] Feature/Select Existing File From Project [PREP-116]

Issue
https://openscience.atlassian.net/browse/PREP-116
Purpose

Pass provider to file-browser widget, when user clicks on file, becomes selected file - file browser loading now thanks to https://github.com/CenterForOpenScience/ember-osf/commit/fb9e8b33d0f9b26d660bf51ac1a96e1c14ca9c25

Closing file browser work already merged.


optimize memory usage of alignment viz

When switching to s3quilt I modified the program to load all of the sequence data into memory, then add it to accession2seq. At the time I thought it would be fine because I assumed that accession2seq would just get a pointer to the string in sequences but in the loop we actually create a substring which effectively double stores all of the sequences in memory. I modified the approach to only download 500 sequences at a time, then write those sequences to accession2seq, then download another chunk, releasing the downloaded chunk. This should keep memory usage pretty close to what it was before the switch while still benefiting from the parallel downloads.  sequences is also storing the accession name while accession2seq doesn't need that. Fortunately, we have an index for both the header (accession name) length and the sequence length so I can modify my start and length values to start at the end of the header and use just the sequence length so we no longer need to download the accession names at all. This probably isn't a huge deal because the names are way smaller than the sequences but it was an easy win.

Oh damn this is a go slice not a list so I can't pop it. I either need to go back to writing it as a file, do some kind of chunking, or see if I can convert to a list while just using pointers to strings. I will do a quick experiment to see if list results in double storage and if not I will write to a file.

The benchmarks are failing with this weird intermittent sklearn issue that is not effected by this. I think this is safe to merge


Missing commit at zeronvs-diffusion

Hi,
The zeronvs-diffusion commit here is either inaccessible or squashed. Could you point me to the correct commit in the repo?

Sorry about this, I've corrected the commit in the repo to this one. Please let me know if you have any further issues!


Add a null guard for the getBrand and getManufacturer method calls

These methods were added from <IP_ADDRESS> onwards but when though the method exists, it sometimes returns null.

Done in develop


how to pass Attr value to Colly for HTML decoding

Hi,
I am new to Colly, but I like it!
I am trying to use it to scrape a particular HTML page that has a full html table stored as value of a  element. Using Colly, I can easily find the  element, but how do I pass the value information to Colly to analyse the table?
The html page conceptually contains this:
'<input id="hiddentable" value="

something

">'
I was looking for something like:
var table string
c = colly.NewCollector()
c.OnHTML("input[id=hiddentable]", func(e *colly.HTMLElement) {
table := e.Attr("value")
ct := c.Clone()
ct.ParseString(table)
})

First you have to create a goquery document: goquery.NewDocumentFromReader(bytes.NewBuffer(htmlTable)). Then you can use https://godoc.org/github.com/gocolly/colly#NewHTMLElementFromSelectionNode to create colly.HTMLElement objects from the parsed document.
Example: https://github.com/gocolly/colly/blob/master/colly.go#L946


Remove submodules

This PR removes Janus and Mors as submodules and install them from PyPI instead as dependencies of the Proteus package. The version installed is specified in the pyproject.toml file.
Socrates is also deleted as a submodule. I used Harrison's script to get it from github and compile it. It thinks it is sufficient for now.

@lsoucasse please can you clarify for me what happens in the developer case?
If you clone JANUS and run pip install -e . on that package in your environment. Does this still satisfy the dependency in the PROTEUS pyproject.toml file? Or will it overwrite your local JANUS and install the version from pypi?

@lsoucasse please can you clarify for me what happens in the developer case?
Say you clone JANUS and run pip install -e . on that package in your environment. Does this still satisfy the dependency in the PROTEUS pyproject.toml file? Or will it overwrite your local JANUS and install the version from pypi?
Stef clarified a similar question previously (#135 (comment)) but how does this change now that a particular release is specified in the pyproject file?

@lsoucasse please can you clarify for me what happens in the developer case?
Say you clone JANUS and run pip install -e . on that package in your environment. Does this still satisfy the dependency in the PROTEUS pyproject.toml file? Or will it overwrite your local JANUS and install the version from pypi?
Stef clarified a similar question previously (#135 (comment)) but how does this change now that a particular release is specified in the pyproject file?

Hi @nichollsh,
In this case I think what happens is that it will overwrite the PyPI install and proteus requirements will still be satisfied as long as the version number has not changed.
With changing version number we have to experiment, but you will always have the option to do pip uninstall/install locally to make sure which version you are actually using.

Okay, makes sense! Thanks


[tf] increase num of devnet full-nodes to 2

Motivation
Added one more full-node to devnet to support compatibility test.
Test Plan
Will tf apply after review.

Those variables are deprecated, I will clean them up shortly.
To add a fullnode, you can modify the dev.tfvars file in Calibra repo. See prod.tfvars as an example.


Update to newer MSBuild on macOS for .NET6 workload resolver support

Currently on macOS (and presumably Linux) OmniSharp cannot resolve optional workloads in .NET 6.
The version of MSBuild shipping with mono does not have this support (and likely never will).  I see that the extension also bundles its own version of MSBuild (which appears to be from VSWin?).
It would be great if this could be updated to align with the MSBuild in VS 16.9 so that the workload resolvers can be enabled to support resolving SDK's from optional workloads to include additional TFM's such as net6.0-android and net6.0-ios.
Today, this is achieved by adding a sentinel file to the right location in the SDK, for example:
sdk/6.0.100-preview.1.21103.13/EnableWorkloadResolver.sentinel

You can find more about how to install the SDK workloads for iOS/Android here:
https://github.com/dotnet/net6-mobile-samples

the bundled MSBuild was updated to 16.9 yesterday to match .NET Preview 1
https://github.com/OmniSharp/omnisharp-roslyn/pull/2103
We plan to release a new version of OmniSharp server today

Thanks @filipw  ! What's the path to using that update in vscode once the server update is released?  Is there a way I can help test?

you can set "omnisharp.path":"latest" to opt into the latest pre-releases of the server component

@filipw I've updated and I'm still having trouble getting it to pick up the new workload resolver.  This was the same for 1.37.7 on another Mac, even though this one I've got the 1.37.8-beta2 (I did check to verify MSBuild from 16.9 series on 1.37.8-beta2).
I'm trying to load a project from this repo: https://github.com/dotnet/net6-mobile-sample
The workload resolver is supposed to be enabled by adding the file in the sdk, for example:
/usr/local/share/dotnet/sdk/6.0.100-preview.1.21103.13/EnableWorkloadResolver.sentinel

For some reason it's not picking it up and so the TargetPlatformIdentifier android is not recognized.
Here's my omnisharp logs:
Starting OmniSharp server at 3/4/2021, 5:00:19 PM
    Target: /Users/redth/Desktop/mauivscodesample

OmniSharp server started.
    Path: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/run
    PID: 52870

[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Cake, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.DotNetTest, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Host, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.MSBuild, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Roslyn, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Roslyn.CSharp, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Script, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[dbug]: OmniSharp.CompositionHostBuilder
        Loaded OmniSharp.Shared, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on MacOS 11.2.2 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[dbug]: OmniSharp.CompositionHostBuilder
        .NET SDK requires MSBuild instances version 16.7.0 or higher
[dbug]: OmniSharp.MSBuild.Discovery.Providers.MonoInstanceProvider
        Can't use installed Mono because OmniSharp isn't running on it
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 1 MSBuild instance(s)
            1: StandAlone 16.9.0 - "/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin"
[dbug]: OmniSharp.CompositionHostBuilder
        MSBuild instance StandAlone 16.9.0 scored at 1
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        SUCCESS: Resolved to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.Build.dll' (name-only).
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        SUCCESS: Resolved to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.Build.Utilities.Core.dll' (name-only).
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        SUCCESS: Resolved to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.Build.Framework.dll' (name-only).
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        SUCCESS: Resolved to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.Build.Tasks.Core.dll' (name-only).
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/MSBuild.exe'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 16.9.0 - "/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin"
            CscToolExe = csc.exe
            MSBuildToolsPath = /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin
            CscToolPath = /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Roslyn
            BypassFrameworkInstallChecks = true
            MSBuildExtensionsPath = /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.VisualBasic.Features, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.VisualBasic.Features.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Features.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.Features.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Features.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Features.resources.dll'.
[dbug]: OmniSharp.WorkspaceInitializer
        Starting with OmniSharp options: {"RoslynExtensionsOptions":{"EnableDecompilationSupport":false,"EnableAnalyzersSupport":true,"EnableImportCompletion":false,"DocumentAnalysisTimeoutMs":10000,"LocationPaths":null},"FormattingOptions":{"OrganizeImports":false,"EnableEditorConfigSupport":true,"NewLine":"\n","UseTabs":false,"TabSize":4,"IndentationSize":4,"SpacingAfterMethodDeclarationName":false,"SpaceWithinMethodDeclarationParenthesis":false,"SpaceBetweenEmptyMethodDeclarationParentheses":false,"SpaceAfterMethodCallName":false,"SpaceWithinMethodCallParentheses":false,"SpaceBetweenEmptyMethodCallParentheses":false,"SpaceAfterControlFlowStatementKeyword":true,"SpaceWithinExpressionParentheses":false,"SpaceWithinCastParentheses":false,"SpaceWithinOtherParentheses":false,"SpaceAfterCast":false,"SpacesIgnoreAroundVariableDeclaration":false,"SpaceBeforeOpenSquareBracket":false,"SpaceBetweenEmptySquareBrackets":false,"SpaceWithinSquareBrackets":false,"SpaceAfterColonInBaseTypeDeclaration":true,"SpaceAfterComma":true,"SpaceAfterDot":false,"SpaceAfterSemicolonsInForStatement":true,"SpaceBeforeColonInBaseTypeDeclaration":true,"SpaceBeforeComma":false,"SpaceBeforeDot":false,"SpaceBeforeSemicolonsInForStatement":false,"SpacingAroundBinaryOperator":"single","IndentBraces":false,"IndentBlock":true,"IndentSwitchSection":true,"IndentSwitchCaseSection":true,"IndentSwitchCaseSectionWhenBlock":true,"LabelPositioning":"oneLess","WrappingPreserveSingleLine":true,"WrappingKeepStatementsOnSingleLine":true,"NewLinesForBracesInTypes":true,"NewLinesForBracesInMethods":true,"NewLinesForBracesInProperties":true,"NewLinesForBracesInAccessors":true,"NewLinesForBracesInAnonymousMethods":true,"NewLinesForBracesInControlBlocks":true,"NewLinesForBracesInAnonymousTypes":true,"NewLinesForBracesInObjectCollectionArrayInitializers":true,"NewLinesForBracesInLambdaExpressionBody":true,"NewLineForElse":true,"NewLineForCatch":true,"NewLineForFinally":true,"NewLineForMembersInObjectInit":true,"NewLineForMembersInAnonymousTypes":true,"NewLineForClausesInQuery":true},"FileOptions":{"SystemExcludeSearchPatterns":["**/node_modules/**/*","**/bin/**/*","**/obj/**/*","**/.git/**/*","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store"],"ExcludeSearchPatterns":[]},"RenameOptions":{"RenameOverloads":false,"RenameInStrings":false,"RenameInComments":false},"ImplementTypeOptions":{"InsertionBehavior":null,"PropertyGenerationBehavior":null},"Plugins":{"LocationPaths":null}}
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.CodeAnalysis.CSharp.Workspaces.resources, Version=<IP_ADDRESS>, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll'.
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in '/Users/redth/Desktop/mauivscodesample'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[dbug]: OmniSharp.MSBuild.ProjectSystem
        MSBuild environment:
Mode: Standalone
RunningTests: False
RunningInVisualStudio: False
MSBuildToolsDirectory32: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin
MSBuildToolsDirectory64: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin
MSBuildSDKsPath: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Sdks
CurrentMSBuildConfigurationFile: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/MSBuild.exe.config
CurrentMSBuildExePath: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/MSBuild.exe
CurrentMSBuildToolsDirectory: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin
VisualStudioInstallRootDirectory:
MSBuildExtensionsPath: /Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin

[dbug]: OmniSharp.MSBuild.ProjectLoader
        'MSBuildExtensionsPath' set to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild'
[dbug]: OmniSharp.MSBuild.ProjectLoader
        'CscToolPath' set to '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Roslyn'
[dbug]: OmniSharp.MSBuild.ProjectLoader
        'CscToolExe' set to 'csc.exe'
[info]: OmniSharp.MSBuild.ProjectSystem
        No solution files found in '/Users/redth/Desktop/mauivscodesample'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for '/Users/redth/Desktop/mauivscodesample/mauivscodesample.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in '/Users/redth/Desktop/mauivscodesample'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location '/Users/redth/Desktop/mauivscodesample' on host 52844.
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: /Users/redth/Desktop/mauivscodesample/mauivscodesample.csproj
[dbug]: OmniSharp.Stdio.Host
        ************ Request ************
{
  "Type": "request",
  "Seq": 1,
  "Command": "/projects"
}
[dbug]: OmniSharp.Stdio.Host
        ************ Request ************
{
  "Type": "request",
  "Seq": 2,
  "Command": "/projects"
}
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.Build.resources, Version=<IP_ADDRESS>, Culture=en-CA, PublicKeyToken=b03f5f7f11d50a3a'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.Build.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.NET.Build.Tasks.resources, Version=<IP_ADDRESS>13, Culture=en-CA, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.NET.Build.Tasks.resources.dll'.
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Attempting to resolve 'Microsoft.NET.Build.Tasks.resources, Version=<IP_ADDRESS>13, Culture=en, PublicKeyToken=31bf3856ad364e35'
[dbug]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        FAILURE: Could not locate '/Users/redth/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.8-beta.2/omnisharp/.msbuild/Current/Bin/Microsoft.NET.Build.Tasks.resources.dll'.
[fail]: OmniSharp.MSBuild.ProjectLoader
        The target platform identifier android was not recognized.
[warn]: OmniSharp.MSBuild.ProjectManager
        Failed to load project file '/Users/redth/Desktop/mauivscodesample/mauivscodesample.csproj'.
/Users/redth/Desktop/mauivscodesample/mauivscodesample.csproj
/usr/local/share/dotnet/sdk/6.0.100-preview.1.21103.13/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(109,5): Error: The target platform identifier android was not recognized.

[fail]: OmniSharp.MSBuild.ProjectManager
        Attempted to update project that is not loaded: /Users/redth/Desktop/mauivscodesample/mauivscodesample.csproj
[dbug]: OmniSharp.Stdio.Host
        ************  Response ************
{
  "Request_seq": 2,
  "Command": "/projects",
  "Running": true,
  "Success": true,
  "Message": null,
  "Body": {
    "MsBuild": {
      "SolutionPath": "/Users/redth/Desktop/mauivscodesample",
      "Projects": []
    },
    "Script": {
      "Projects": []
    }
  },
  "Seq": 79,
  "Type": "response"
}
[dbug]: OmniSharp.Stdio.Host
        ************  Response ************
{
  "Request_seq": 1,
  "Command": "/projects",
  "Running": true,
  "Success": true,
  "Message": null,
  "Body": {
    "MsBuild": {
      "SolutionPath": "/Users/redth/Desktop/mauivscodesample",
      "Projects": []
    },
    "Script": {
      "Projects": []
    }
  },
  "Seq": 80,
  "Type": "response"
}
[dbug]: OmniSharp.Stdio.Host
        ************ Request ************
{
  "Type": "request",
  "Seq": 3,
  "Command": "/projects"
}
[dbug]: OmniSharp.Stdio.Host
        ************  Response ************
{
  "Request_seq": 3,
  "Command": "/projects",
  "Running": true,
  "Success": true,
  "Message": null,
  "Body": {
    "MsBuild": {
      "SolutionPath": "/Users/redth/Desktop/mauivscodesample",
      "Projects": []
    },
    "Script": {
      "Projects": []
    }
  },
  "Seq": 94,
  "Type": "response"
}

@Redth The C# extension ships with a minimal version of mono and msbuild. It should support console and and razor projects out of the box. However, android is not presently supported by the extension.
cc: @cartermp

@JoeRobich I installed the maui rc2 workload on MacOS. On vscode, Omnisharp does not seem to be resolving platform specific libraries with errors like:
The type or namespace name 'UIKit' could not be found (are you missing a using directive or an assembly reference?)

Could you confirm if omnisharp currently supports maui projects, and if not, when can we hope to have that support? I've opted-in to use the latest server version. Right now, it is: OmniSharp for OSX (.NET 6 / arm64), Version = 1.38.3-beta.67
Thanks!

@cfierro-glb I was able to get the WeatherTwentyOne sample app loaded with no error on my M1 Mac by performing the following steps (referencing https://github.com/dotnet/maui/wiki/macOS-Install).

Install the 6.0.300 build of the SDK from dotnet/installer
Clone the WeatherApp sample from https://github.com/davidortinau/WeatherTwentyOne
Add a global.json to the WeatherTwentyOne repo folder which pins the SDK at 6.0.300 (because I had 7.x preview SDKs installed).

{
  "sdk": {
    "version": "6.0.300"
  }
}

Install the maui workload using the commandline

> sudo dotnet workload install maui --source https://api.nuget.org/v3/index.json

Update the WeatherTwentyOne csproj to make the 'net6.0-ios' the first listed target framework (O# only loads the first target when multi-targeting)
Restart the OmniSharp Server

Maybe you can see if it will load for you as well.

With this in mind, are there plans for O# to load all targets of a multi-target projects in the future?

It is certainly a highly requested feature - https://github.com/OmniSharp/omnisharp-vscode/issues/3754. I think long term we will need better support for it. We will just have to see how that gets worked into the road map.

Thanks for the link. I've subscribed for any updates


[poker] Can still win after folding

Not sure what was causing this. Folded players were formerly assigned a hand score of -1 so that they would always lose. I added some checks to make sure that winners must have not folded. I haven't been able to reproduce the error. Maybe it's fixed now.


PHP8.4 - deprecations

Deprecated: GuzzleHttp\Ring\Core::proxy(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Core.php on line 334
Deprecated: GuzzleHttp\Ring\Core::proxy(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Core.php on line 334
Deprecated: GuzzleHttp\Ring\Core::proxy(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Core.php on line 334
Deprecated: GuzzleHttp\Ring\Future\CompletedFutureValue::__construct(): Implicitly marking parameter $e as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/CompletedFutureValue.php on line 23
Deprecated: GuzzleHttp\Ring\Future\CompletedFutureValue::then(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/CompletedFutureValue.php on line 60
Deprecated: GuzzleHttp\Ring\Future\CompletedFutureValue::then(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/CompletedFutureValue.php on line 60
Deprecated: GuzzleHttp\Ring\Future\CompletedFutureValue::then(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/CompletedFutureValue.php on line 60
Deprecated: React\Promise\PromiseInterface::then(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/PromiseInterface.php on line 40
Deprecated: React\Promise\PromiseInterface::then(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/PromiseInterface.php on line 40
Deprecated: React\Promise\PromiseInterface::then(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/PromiseInterface.php on line 40
Deprecated: GuzzleHttp\Ring\Future\BaseFutureTrait::__construct(): Implicitly marking parameter $wait as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/BaseFutureTrait.php on line 40
Deprecated: GuzzleHttp\Ring\Future\BaseFutureTrait::__construct(): Implicitly marking parameter $cancel as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/BaseFutureTrait.php on line 40
Deprecated: GuzzleHttp\Ring\Future\BaseFutureTrait::then(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/BaseFutureTrait.php on line 83
Deprecated: GuzzleHttp\Ring\Future\BaseFutureTrait::then(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/BaseFutureTrait.php on line 83
Deprecated: GuzzleHttp\Ring\Future\BaseFutureTrait::then(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/ezimuel/ringphp/src/Future/BaseFutureTrait.php on line 83
Deprecated: React\Promise\FulfilledPromise::then(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 21
Deprecated: React\Promise\FulfilledPromise::then(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 21
Deprecated: React\Promise\FulfilledPromise::then(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 21
Deprecated: React\Promise\FulfilledPromise::done(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 36
Deprecated: React\Promise\FulfilledPromise::done(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 36
Deprecated: React\Promise\FulfilledPromise::done(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/FulfilledPromise.php on line 36
Deprecated: React\Promise\ExtendedPromiseInterface::done(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/ExtendedPromiseInterface.php on line 22
Deprecated: React\Promise\ExtendedPromiseInterface::done(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/ExtendedPromiseInterface.php on line 22
Deprecated: React\Promise\ExtendedPromiseInterface::done(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/ExtendedPromiseInterface.php on line 22
Deprecated: React\Promise\RejectedPromise::then(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 21
Deprecated: React\Promise\RejectedPromise::then(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 21
Deprecated: React\Promise\RejectedPromise::then(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 21
Deprecated: React\Promise\RejectedPromise::done(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 36
Deprecated: React\Promise\RejectedPromise::done(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 36
Deprecated: React\Promise\RejectedPromise::done(): Implicitly marking parameter $onProgress as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vendor/react/promise/src/RejectedPromise.php on line 36

Please take the time to properly report tickets.  It looks like you're using an outdated Promise version, see also https://github.com/reactphp/promise/releases/tag/v3.2.0, https://github.com/reactphp/promise/pull/260 and https://github.com/orgs/reactphp/discussions/589.


Create hooks useDeleteUser and useSignOut

It think awesome library is missing two additional hooks for sign out and delete current user. Please let me know if there is anything I can help with.

@RobertSasak thanks for the submission and apologies for the delay in getting this looked at. I've just merged them and will get a release out in the coming days


Make worker.start and worker.stop threadsafe

Upstreamed on behalf of @drewhoskins-stripe. Merge conflicts with #216 resolved.
Description
In tests, we need to stop the worker threads from the main thread when we tear down the test case.
This was racing with start if we called it too soon, as was common, for example, if we threw an exception when trying to create a workflow.
Most commonly this resulted in a deadlock:

stop method begins, shuts down 0 pollers, and sleeps
start method completes, adding more pollers as part of normal initialization.
stop method now calls :wait on each poller, but since they were added after the shutdown, they had not previously been shut down.

There are other potentially subtle issues, so I'm just throwing start and stop under a mutex.
I also added an assertion to the pollers to catch when this deadlock would happen in the future.
Test Plan
I needed to refactor a bunch of  fragile unit tests that depended on the exact sequence of calls to :shutting_down?.
bundle exec rspec -f d ./spec/unit//lib/temporal/worker_spec.rb
bundle exec rspec -f d ./spec/unit//lib/temporal/workflow/poller_spec.rb
bundle exec rspec -f d ./spec/unit//lib/temporal/activity/poller_spec.rb

plus integration tests
cd examples
./bin/worker&
rspec ./spec/integration

@jlemesh This is a change @drewhoskins-stripe made a couple years ago, but it was never merged back to Coinbase master. Because resolving merge conflicts with your change #216 was somewhat tricky, I'd appreciate if you could give this a look.

Cleaned up some unnecessary poll method parameters, and removed unnecessary allow statements in poller specs. These changes are all superficial.

@DeRauk Renamed the hook methods


Feed image as tensor

Hello, thanks for your solution. Is there any possibility to feed an image in the form of a torch tensor instead of a path to the image? It isn't so suitable to deal with every frame as a file.

Facetorch version 0.5.0 introduced the UniversalReader class, designed for handling image data in torch tensor format. Here's how to make the switch:

Update Facetorch: Ensure you're using version 0.5.0 or later.
Modify Configuration: Replace ImageReader with UniversalReader in your configuration file(s).
Pass Tensor to run function: Feed your image tensor directly to the image_source parameter of the FaceAnalyzer.run() function.
Let me know if you have any further questions!


Fix FromText instance for Double (and FeePolicy).

Issue Number
None. Discovered while testing PR #889.
Overview
This PR:

[x] Changes the implementation of FromText for Double to use read @Double rather than Data.Text.Read.rational. This matches the ToText implementation, which just uses show.
[x] Simplifies the roundtrip textual encoding test for Double.
[x] Simplifies the roundtrip textual encoding test for FeePolicy.

Explanation
The implementations of show and read for Double are expected to obey the following property:
read . show = id

The implementation of Data.Text.Read.rational, on the other hand, differs slightly from that of read @Double. This difference occasionally introduces small errors across roundtrip serialization & deserialization.
For example:
> a = -9.0e-3 :: Double
> a
-9.0e-3
> read @Double (show a)
-9.0e-3
> rational @Double (pack $ show a)
Right (-9.000000000000001e-3,"")

bors r+


Atlas Building App

Guiding a user to build their Atlas efficiently.

I'm calling this an "enhancement" for now.  We have too much going on and the spreadsheet to atlas importer is good enough for right now.
I have a google-sheet to atlas tool if that is easier for people, but let's put this on the drawing board for the integrated app.


create_budget raises sqlite3.OperationalError: near "DROP": syntax error

Checks

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest version of actualpy.

Reproducible example
test_actual.py
@pytest.fixture
def actual():
    with Actual(base_url="http://localhost:6669", password="test", bootstrap=True) as actual:
        actual.create_budget("TestBudget")
        actual.upload_budget()
        # This yield is my idea to setup pytest with actualpy, but I actually not sure if it will work
        yield actual
        actual.delete_budget()

def test_actual_connector(actual):
    pass

but would probably reproduce on my env by just:
with Actual(base_url="http://localhost:6669", password="test", bootstrap=True) as actual:
      actual.create_budget("TestBudget")

docker-compose.yml
services:
  actual_server:
    image: docker.io/actualbudget/actual-server:latest
    ports:
      - '6669:5006'
    volumes:
      - ./actual-data:/data
    restart: unless-stopped

docker-compose up -d
pytest .

 The files can be retrieved from
        .data_file_index() method. This first file is the base database, and the following files are migrations.
        Migrations can also be .js files. In this case, we have to extract and execute queries from the standard JS."""
        conn = sqlite3.connect(self._data_dir / "db.sqlite")
        for file in migration_files:
            if not file.startswith("migrations"):
                continue  # in case db.sqlite file gets passed as one of the migrations files
            file_id = file.split("_")[0].split("/")[1]
            if conn.execute(f"SELECT id FROM __migrations__ WHERE id = '{file_id}';").fetchall():
                continue  # skip migration as it was already ran
            migration = self.data_file(file)  # retrieves file from actual server
            sql_statements = migration.decode()
            if file.endswith(".js"):
                # there is one migration which is Javascript. All entries inside db.execQuery(`...`) must be executed
                exec_entries = js_migration_statements(sql_statements)
                sql_statements = "\n".join(exec_entries)
>           conn.executescript(sql_statements)
E           sqlite3.OperationalError: near "DROP": syntax error

venv/lib/python3.12/site-packages/actual/__init__.py:156: OperationalError

============================================================== warnings summary
tests/test_actual_connector.py::test_actual_connector
  /home/mbielecki/personal_projects/actual-discord-bot/venv/lib/python3.12/site-packages/actual/__init__.py:168: UserWarning: Creating budgets via actualpy is not recommended due to custom code migrations.
    warnings.warn("Creating budgets via actualpy is not recommended due to custom code migrations.")

tests/test_actual_connector.py::test_actual_connector
  /home/mbielecki/personal_projects/actual-discord-bot/venv/lib/python3.12/site-packages/actual/migrations.py:39: UserWarning: Migration query from migrations cannot be executed due to custom code, it will be skipped. Query:

  INSERT INTO ${table} (id, month, category, amount, carryover) VALUES (?, ?, ?, ?, ?)

    warnings.warn(

tests/test_actual_connector.py::test_actual_connector
  /home/mbielecki/personal_projects/actual-discord-bot/venv/lib/python3.12/site-packages/actual/migrations.py:39: UserWarning: Migration query from migrations cannot be executed due to custom code, it will be skipped. Query:

  INSERT INTO zero_budget_months (id, buffered) VALUES (?, ?)

    warnings.warn(

tests/test_actual_connector.py::test_actual_connector
  /home/mbielecki/personal_projects/actual-discord-bot/venv/lib/python3.12/site-packages/actual/migrations.py:39: UserWarning: Migration query from migrations cannot be executed due to custom code, it will be skipped. Query:

  INSERT INTO notes (id, note) VALUES (?, ?)

    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

Issue description
Hello,
I'm trying to use pytest to automatically test my code that is using actual.py.
I thought about having Actual server bootstrapped as part of test setup. However I'm encountering an error in create_budget() function.
Using pytest . --showlocals prints some more useful information, includiing rendered SQL query. (that does not actually look wrong to me)
conn       = <sqlite3.Connection object at 0x7fd4b89d2a70>
exec_entries = ['\n'
 'CREATE TABLE zero_budget_months\n'
 '  (id TEXT PRIMARY KEY,\n'
 '   buffered INTEGER DEFAULT 0);\n'
 '\n'
 'CREATE TABLE zero_budgets\n'
 '  (id TEXT PRIMARY KEY,\n'
 '   month INTEGER,\n'
 '   category TEXT,\n'
 '   amount INTEGER DEFAULT 0,\n'
 '   carryover INTEGER DEFAULT 0);\n'
 '\n'
 'CREATE TABLE reflect_budgets\n'
 '  (id TEXT PRIMARY KEY,\n'
 '   month INTEGER,\n'
 '   category TEXT,\n'
 '   amount INTEGER DEFAULT 0,\n'
 '   carryover INTEGER DEFAULT 0);\n'
 '\n'
 'CREATE TABLE notes\n'
 '  (id TEXT PRIMARY KEY,\n'
 '   note TEXT);\n'
 '\n'
 'CREATE TABLE kvcache (key TEXT PRIMARY KEY, value TEXT);\n'
 'CREATE TABLE kvcache_key (id INTEGER PRIMARY KEY, key REAL);\n'
 ';',
 '\n    DROP TABLE spreadsheet_cells;\n    ANALYZE;\n    VACUUM;\n  ;']
file       = 'migrations/1686139660866_remove_account_type.sql'
file_id    = '1686139660866'
migration  = b'BEGIN TRANSACTION;\n\nALTER TABLE accounts DROP COLUMN type;\n\nCOMMIT;\n'
migration_files = ['migrations/1548957970627_remove-db-version.sql',
 'migrations/1550601598648_payees.sql',
 'migrations/1555786194328_remove_category_group_unique.sql',
 'migrations/1561751833510_indexes.sql',
 'migrations/1567699552727_budget.sql',
 'migrations/1582384163573_cleared.sql',
 'migrations/1597756566448_rules.sql',
 'migrations/1608652596043_parent_field.sql',
 'migrations/1608652596044_trans_views.sql',
 'migrations/1612625548236_optimize.sql',
 'migrations/1614782639336_trans_views2.sql',
 'migrations/1615745967948_meta.sql',
 'migrations/1616167010796_accounts_order.sql',
 'migrations/1618975177358_schedules.sql',
 'migrations/1632571489012_remove_cache.js',
 'migrations/1679728867040_rules_conditions.sql',
 'migrations/1681115033845_add_schedule_name.sql',
 'migrations/1682974838138_remove_payee_rules.sql',
 'migrations/1685007876842_add_category_hidden.sql',
 'migrations/1686139660866_remove_account_type.sql',
 'migrations/1688749527273_transaction_filters.sql',
 'migrations/1688841238000_add_account_type.sql',
 'migrations/1691233396000_add_schedule_next_date_tombstone.sql',
 'migrations/1694438752000_add_goal_targets.sql',
 'migrations/1697046240000_add_reconciled.sql',
 'migrations/1704572023730_add_account_sync_source.sql',
 'migrations/1704572023731_add_missing_goCardless_sync_source.sql',
 'migrations/1707267033000_reports.sql',
 'migrations/1712784523000_unhide_input_group.sql',
 'migrations/1716359441000_include_current.sql',
 'migrations/1720310586000_link_transfer_schedules.sql',
 'migrations/1720664867241_add_payee_favorite.sql',
 'migrations/1720665000000_goal_context.sql',
 'migrations/1722717601000_reports_move_selected_categories.js',
 'migrations/1722804019000_create_dashboard_table.js']
self       = <actual.Actual object at 0x7fd4b898c230>
sql_statements = 'BEGIN TRANSACTION;\n\nALTER TABLE accounts DROP COLUMN type;\n\nCOMMIT;\n'

Expected behavior
There is no error during create_budget function
Installed versions
Python 3.12.6
actualpy   0.5.1
Actual server - latest docker tag -  https://hub.docker.com/layers/actualbudget/actual-server/latest/images/sha256-4a0c0b71d3eb6c9b68c6922c97af4e5dd258c5a433fed30ef147cba8511a4914?context=explore
other packages in my environment:
aiohappyeyeballs   2.4.2       Happy Eyeballs for asyncio
aiohttp            3.10.8      Async http client/server framework (asyncio)
aiosignal          1.3.1       aiosignal: a list of registered asynchronous callbacks
annotated-types    0.7.0       Reusable constraint types to use with typing.Annotated
anyio              3.7.1       High level compatibility layer for multiple asynchronous event loop implementations
attrs              24.2.0      Classes Without Boilerplate
babel              2.16.0      Internationalization utilities
certifi            2024.8.30   Python package for providing Mozilla's CA Bundle.
cffi               1.17.1      Foreign Function Interface for Python calling C code.
charset-normalizer 3.3.2       The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.
cogwatch           3.3.1       Automatic hot-reloading for your discord.py (or other supported libaries) command files.
cryptography       43.0.1      cryptography is a package which provides cryptographic recipes and primitives to Python developers.
discord            2.3.2       A mirror package for discord.py. Please install that instead.
discord-py         2.4.0       A Python wrapper for the Discord API
environ-config     24.1.0      Boilerplate-free configuration with env variables.
frozenlist         1.4.1       A list-like structure which implements collections.abc.MutableSequence
greenlet           3.1.1       Lightweight in-process concurrent programming
idna               3.10        Internationalized Domain Names in Applications (IDNA)
multidict          6.1.0       multidict implementation
mypy               1.11.2      Optional static typing for Python
mypy-extensions    1.0.0       Type system extensions for programs checked with the mypy type checker.
proto-plus         1.24.0      Beautiful, Pythonic protocol buffers.
protobuf           5.28.2
pycparser          2.22        C parser in Python
pydantic           2.9.2       Data validation using Python type hints
pydantic-core      2.23.4      Core functionality for Pydantic validation and serialization
python-dateutil    2.9.0.post0 Extensions to the standard Python datetime module
requests           2.32.3      Python HTTP for Humans.
six                1.16.0      Python 2 and 3 compatibility utilities
sniffio            1.3.1       Sniff out which async library your code is running under
sqlalchemy         2.0.35      Database Abstraction Library
sqlmodel           0.0.22      SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness.
typing-extensions  4.12.2      Backported and Experimental Type Hints for Python 3.8+
urllib3            2.2.3       HTTP library with thread-safe connection pooling, file post, and more.
watchfiles         0.15.0      Simple, modern and high performance file watching and code reload in python.
yarl               1.13.1      Yet another URL library

Hello, are you running tests on windows?

@bvanelli, no, it is Ubuntu 20.04.6 LTS

Ok, so I managed to reproduce it on Ubuntu 20.04 via docker image.

apt update && apt install python3 python3-pip vim git && pip install git+https://github.com/bvanelli/actualpy.git

The issue seems to be sqlite library, which is shipped with ubuntu 20.04:
libsqlite3-0 is already the newest version (3.31.1-4ubuntu0.6).

This version from 2020-03-05 is unfortunatelly too old to support dropping a column... This is the not working because the Actual migrations use that functionality.
I would then recommend that you upgrade your libsqlite3 to at least 3.35, released in 2021-03-12 that will support this feature.
I tried it locally just to see if it works, with the minimal update possible (to 3.35.05), instructions from here:
Keep in mind that a library upgrade could break things in your system, so do it with caution.
wget https://sqlite.org/2021/sqlite-autoconf-3350500.tar.gz
tar xfvz sqlite-autoconf-3350500.tar.gz
cd sqlite-autoconf-3350500
./configure
make
make install
/usr/local/lib ./configure
LD_RUN_PATH=/usr/local/lib ./configure
# export new path for the executable
export LD_LIBRARY_PATH="/usr/local/lib"
# check if it works
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"

The output was then 3.35.5, and the Python script went through, able to create a budget!
Since it's not a problem with the library, I'll close the issue, please feel free to report if the library upgrade works for you.

@bvanelli, thanks a lot for the help! :smile:


Whitespace in path causes Make build error

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.
Reduced the issue to a self-contained, reproducible test case.

Description
Trying to build Lean 4 in a directory with whitespace in its path will cause a build error when running Make.
Steps to Reproduce

Create a directory named Building Lean (note the whitespace) on your Desktop.
Inside the Building Lean directory, run:

git clone https://github.com/leanprover/lean4
cd lean4
mkdir -p build/release
cd build/release

Successfully run cmake ../.. -D CMAKE_CXX_COMPILER=g++.
Run make --jobs=10 stage0 and get build error at the end.

Expected behavior: Make runs successfully.
Actual behavior: Make fails, with the following error:
[100%] Generating ../bin/lean
sh: 1: /home/person/Desktop/Building: not found
make[6]: *** [shell/CMakeFiles/lean.dir/build.make:64: bin/lean] Error 127
make[6]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release/stage0'
make[5]: *** [CMakeFiles/Makefile2:1446: shell/CMakeFiles/lean.dir/all] Error 2
make[5]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release/stage0'
make[4]: *** [Makefile:163: all] Error 2
make[4]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release/stage0'
make[3]: *** [CMakeFiles/stage0.dir/build.make:112: stage0-prefix/src/stage0-stamp/stage0-build] Error 2
make[3]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release'
make[2]: *** [CMakeFiles/Makefile2:245: CMakeFiles/stage0.dir/all] Error 2
make[2]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release'
make[1]: *** [CMakeFiles/Makefile2:252: CMakeFiles/stage0.dir/rule] Error 2
make[1]: Leaving directory '/home/person/Desktop/Building Lean/lean4/build/release'
make: *** [Makefile:242: stage0] Error 2

Versions
Lean Version: Commit 9200de01ef46c0270f5c18adce9cf9ac7fd13902
OS Name and Version: Ubuntu 20.10
Additional Information
I am guessing that quoting some paths in the build scripts could fix this issue. For instance, something like:
ls /home/person/Desktop/Building Lean

can be changed to:
ls "/home/person/Desktop/Building Lean"

to fix the issue.

This issue can be ignored. Sorry about that.


fix(abConfiguration): splits with one variant return invalid ab variants

/domain @chukkwagon @samandmoore @aburgel
/platform @aburgel @samandmoore
This PR fixes an issue related to splits with only one variant, most often the case when stubbing splits in test environments. Instead of using booleans as the defaults for AB variants, this PR updates those values to strings "true" and "false" and safely checks for an empty array of non true variants within the ABConfiguration class.
I tested this patch in retail, where we saw the issue, to confirm this works in a production environment.

@HipsterBrown do you have a link to a sentry issue or a card where I can read more context around this change and the bug that necessitated it?
<<domain tafn

<< platformlgtm

domain lgtm

<<Domain lgtm


Close validation popup with SetCurrentValue

What changed?
Close validation popup by setting the IsOpen property with SetCurrentValue (prevents breaking available bindings).
Closed issues.
#2866

LGTM
/cc @punker76

@andy294 👍 Thx!


Feat: Gen II IR Mystery Gift

Describe the process.
Add support to link between the Flipper and a Gen II Pokemon game over IR for Mystery Gift (Split from #24).
I've only briefly looked over the IR system, but, it doesn't look straightforward to implement. The API is currently only set up for TX xor RX and not easily able to do bidirectional (note: this is not IrDA, this is generic 38 khz IR that sends data back and forth). It might be possible to hack together something at the application level, however I think this would greatly benefit from in-firmware support, alongside a runtime "custom" protocol decoder implementation that can pack and unpack data directly.
Game boy
Color

Just in case no one stumbled upon this yet and wants to take a crack at it, this may be useful
https://projectpokemon.org/home/forums/topic/43930-mystery-gift-reverse-engineering-of-ir-protocol/

Thanks!
I'll add that to my list of resources for when I get around to implementing this.


[9.x] Add strict mode for when() conditionals

Recently I and @michalmyskow found out that when() conditional method is resolving parameters to "trurthy" and "falsy" accordingly to the documentation. For example you cannot find any user with "0" phrase, because when() converts string zero to boolean false:
$search = $request->get("search"); // "0"

User::query()
    ->when($search, function(Builder $query) => $query->where("name", "LIKE", "%$search%"))
    ->toSql();
// "SELECT * FROM users;"

This change adds non-breaking change of parameters of when() and unless() methods.
User::query()
    ->when(strlen($search), fn (Builder $query) => $query->where("name", "LIKE", "%$search%"))
    ->toSql();

Yeah I would do something like @dennisprudlo suggests.


config.MultiValueDSPerfLatencyMetricFlag type incorrectly named, probably more complex than necessary

This type is named following a pattern used for other custom flag.Value interface implementations, but does not actually accept multiple values for the associated field. Instead, it's intended to hold a single float64 value.
https://github.com/atc0005/check-vmware/blob/286ce4f9dcefd4cc9e6b22b78a8f301ddba44dc6/internal/config/config.go#L155-L162
I should rename the field so that its intent is clearer.

Additionally, I opted to use a struct type with a boolean isSet field to indicate whether a value was provided. This was done in order to enforce validation: either individual latency flags were provided or a latency percentile set, not both nor a mix.
I could probably simplify this by using a custom type based on a float64 type and then use pointers for the fields on the main Config struct. Because the custom type would implement the flag.Value interface, the Set() method would only be called if there was a value specified via CLI leaving the pointer as nil if a value is not provided. This is in contrast to the base types where the default value is applied if a value is not explicitly provided by the user.

Additionally, I opted to use a struct type with a boolean isSet field to indicate whether a value was provided. This was done in order to enforce validation: either individual latency flags were provided or a latency percentile set, not both nor a mix.
I could probably simplify this by using a custom type based on a float64 type and then use pointers for the fields on the main Config struct. Because the custom type would implement the flag.Value interface, the Set() method would only be called if there was a value specified via CLI leaving the pointer as nil if a value is not provided. This is in contrast to the base types where the default value is applied if a value is not explicitly provided by the user.

This won't work, as least not in the way that I tried to implement it.
Cross-post from https://github.com/atc0005/check-vmware/pull/552#issuecomment-986707248:

In hindsight this probably won't work as intended.

https://stackoverflow.com/questions/25520485/initialize-a-nil-pointer-struct-in-method

https://stackoverflow.com/a/25520558/903870

From that Q/A entry:

The receiver is passed by value, including the pointer receiver: it is a copy, and changing its value doesn't change the initial pointer receiver on which the method is called.
See "Why are receivers pass by value in Go?".


Use the cwd as root for relative paths

It would be awesome if you were to use itermocil in a directory, that all roots specified as relative paths (or if omitted) would be relative to the current working directory.
windows:
  - root: some-api
  ...
  - root: other-api

~/Projects/my-company> $ itermocil

windows:

root: $PWD

Also confirm the suggestion by @alanquigley does not work for 0.2.1.

windows:
  - root: ~
    pre: cwd=$(pwd)

This works for me.


Allow set open/expanded state for nested items in routes

I can't seem to find a way to easily set the expanded state as default for nested menu items without forcing it using CSS - which also causes issues. I want to use them as titles.
Is there a workaround for this, or can it be included in an update?
(Also the ability to add links to the menu - which should be excluded from the prev-next buttons - would be pretty amazing ✌)
Great framework, such minimal. 👌

Good idea. Defaulting to an expanded state is a common feature which I considered implementing but didn't have a need for personally. Added in https://github.com/maxmilton/microdoc/pull/305.
About skipping over items in the PrevNext plugin, I'm less convinced about that. What is the specific use case? Could you please open a new issue about that?

The expanded feature was published in https://github.com/maxmilton/microdoc/releases/tag/v0.3.3.

If you wanted to add an external link to the end of your menu, you can do it like this:
index.html:

If that's not the kind of thing you were after let me know.

My current thinking around external links is they don't belong in the sidenav. Ideally the sidenav should be just content menu items. That way the UX is consistent and predictable.
If there were an external link in the sidenav it would need some special indication it's external. Wikipedia for example does a good job at this.
However, it's so easy to add links in content, so why not do that?
Where there's a very important external link that you always want to show (e.g., a link to a project's Github page), then that should probably be in the top header area. That's a feature we don't currently have but which I've been meaning to implement.
I've also been considering allowing for separate major sections, each with their own submenu:
├── guide
│  ├── faq.md
│  └── introduction.md
├── api
│  ├── api-page1.md
│  └── api-page2.md
├── tutorials
│  └── how-to-x.md
└── [github link]

However I'm still on the fence about that. I need to give it some more thought and create a new issue.

As generic solution for styling external links, you could plop something like this into your index.html:


Getting Babel Loader error after installing npm package

This Issue tracker is only for reporting bugs and tracking code related issues.
Before posting, please make sure you check community.jitsi.org to see if the same or similar bugs have already been discussed. General questions, installation help, and feature requests can also be posted to community.jitsi.org.
Description
Hi,
First of all really appreciate the effort put by the team in getting this library out for folks trying to use lib-jitsi-meet. I was earlier using https://www.npmjs.com/package/@lyno/lib-jitsi-meet  to connect my app to my Jitsi Server [JVB] and it was working great. Recently I updated the JVB to new version as per recommendation by Jitsi team and the @lyno package stopped getting events from Jitsi server, so I looked at your @lyno package and saw that it has been deprecated with recommendation to use https://www.npmjs.com/package/@solyd/lib-jitsi-meet  package, which I did.  Now my application [ Written in ReactJS ] does not start and I get the following error at application start
Uncaught Error: Module parse failed: Unexpected token (10:11)
File was processed with these loaders:

./node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
|    * The object used for storage.
|    */

_storage = {};
|   /**
|    * Empties all keys out of the storage.

Above error is followed by this error
Uncaught ReferenceError: process is not defined
Just to confirm, we never got these errors when using @lyno package
Current behavior
The  ReactJs application gives error when loading, the error started coming after we installed and started using @solyd/lib-jitsi-meet package
Expected Behavior
The application should work and receive events from JVB after successful connection
Possible Solution

Steps to reproduce
npm i @solyd/lib-jitsi-meet
Restart the application
[I understand that the above steps are insufficient, but I can provide more details if required]
Environment details
ReactJS applciation running on local server and connecting to beta.meet.jit.si

Apologies, but I realized, that this problem is not due to this npm package but other react issues.

Apologies, but I realized, that this problem is not due to this npm package but other react issues.

Can you share how did you overcome this situation? I have the exact same problem.

Apologies, but I realized, that this problem is not due to this npm package but other react issues.

Can you share how did you overcome this situation? I have the exact same problem.

I have forked the repo (both the solydhq/lib-jitsi-meet and the jitsi/js-utils) and changed  _storage = {} to constructor() { this._storage = {}; }. And the problem solved
See. @ketenburhan/lib-jitsi-meet and @ketenburhan/js-utils
However, probably these packages never going to get updates, since I don't want to maintain the project.


Add batch size & count

In order to generate multiple images in one click. And make a grid of those images

batch count is available in the CLI now.


Switch debug visualizer to manual refresh model

To use the manual refresh approach, in the initial DkmEvaluationResult set DkmEvaluationResultFlags::EnableExtendedSideEffectsUponRefresh, and only perform the func-eval if DkmEvaluationFlags::EnableExtendedSideEffects is set.

The visualizer is no longer under active development.


core: add ability to customize memory allocator

This patch is composed by the work done in
https://github.com/libuv/libuv/pull/231 and
https://github.com/libuv/libuv/pull/287 plus some changes by yours
truly.
Thanks @beevik and @mattsta for their work on this!

R=@bnoordhuis
The custom allocator, hopefully right this time. Some implementation details:

Calling uv_replace_allocator is not "protected", the user can change the allocator as many times as they see fit, but they are on their own.
Currently uv__malloc and friends remain private. Someone did request that we expose them, so libraries layering on top of libuv could use the same allocator, but then we'd need to expose also the calloc, str{n}dup equivalents as well, unless we force everyone to reimplement those. I'd be kind of OK exposing uv_malloc, uv_realloc and uv_free, but I chose not to in this patch. IMHO we better wait and see how this feature is used in the wild and do that later if necessary.

Any chance you can have a look at this, Ben?

General observation: I'm not very thrilled by adding a struct to the API/ABI that has got to stay fixed until the next major release.

General observation: I'm not very thrilled by adding a struct to the API/ABI that has got to stay fixed until the next major release.

Thanks for the review Ben! So, you'd rather have uv_replace_allocator take 3 function pointers? IIRC that's how it started, but I no longer remember well. I could go back to that.

I think I like that better.  It's probably lood om oud ijzer - both functions and structs need to stay fixed - but if it's a function, we can add uv_replace_allocator_v2() if necessary.
If it's a struct, we'd have to add a uv_allocator_v2_t but then we'd still need to add a uv_replace_allocator_v2() to operate on the new struct.

Agreed. Will fixup later. Thanks again!

@bnoordhuis I think I fixed all comments, can you PTAL?

LGTM with comments.

@bnoordhuis can you please check if I got that size_t overflow check right without introducing UB? Thanks!

@bnoordhuis done, we now also replace calloc.

Thanks a lot for the review Ben! Landed. We can come back to this if we need to reevaluate the overflow check or expose our wrappers then.


Performance profiling

I have made an cqparts assembly containing 7 parts. The models take 4-5 seconds to calculate and render even on my fairly beefy 8-core machine. I think this is quite a lot taking in to consideration that the model is not super huge.
Is there some  way to get a log showing the calculation time for the different parts and build stages of cqparts to see where all this time is going. Maybe we can find segments of the build that can be optimized

@gntech In the latest commit to the FreeCAD module there is now an option in Settings.py called report_execute_time that will show you how long a script took to execute. It's false by default, so you'll need to set it to true to access the feature. cqparts is also integrated into the module now, and while you can use cqparts' display() function to show your parts, that won't give you the execution time. The following code shows an example from the readme with the necessary changes at the end to use CQGI.
# create unit cube as cqparts.Part
import cadquery
import cqparts
from cqparts.params import PositiveFloat

class MyCube(cqparts.Part):
    size = PositiveFloat(1, doc="cube size")
    def make(self):
        return cadquery.Workplane('XY').box(self.size, self.size, self.size)

# create cube instance
cube = MyCube(size=10)

# display cube (optional)
# from cqparts.display import display
# display(cube)
show_object(cube.local_obj)
# If you want to display an assembly it looks like you'd want to call world_obj instead of local_obj

Hopefully that will help you do some performance profiling on your scripts.

Or, for a much more generic aproach:
import cProfile
import pstats
from io import BytesIO
import logging

log = logging.getLogger(__name__)

def profile_this(func):
    def wrapper(*args, **kwargs):
        profiler = cProfile.Profile()

        # run func
        profiler.enable()
        func(*args, **kwargs)
        profiler.disable()

        # get statistics on function code
        stats_stream = BytesIO()
        prof_stats = pstats.Stats(profiler, stream=stats_stream).sort_stats('cumulative')
        prof_stats.print_stats()

        # Write stats to a logger
        log.warning(stats_stream.getvalue().encode())

    return wrapper

import cadquery
cadquery.freecad_impl.console_logging.enable()

import cqparts
from cqparts.params import *
from cqparts.display import display

class MyCube(cqparts.Part):
    size = PositiveFloat(1, doc="cube size")
    def make(self):
        return cadquery.Workplane('XY').box(self.size, self.size, self.size)

@profile_this
def test():
    cube = MyCube(size=10)
    cube.build()

test()

that should work for anything python

Tasks

add time deltas for:

[ ] Part.make()
[ ] Assembly.make_components()
[ ] Assembly.make_constraints()
[ ] cqparts.display.display (build in to new DisplayEnvironment class #77)
[ ] Component.build()

exporter time deltas

[ ] tessellate geometry
[ ] build export format

[ ] log time deltas at DEBUG level as they're recorded.

@jmwright yep, no problem, I was just going to store them as _ prefixed variables.