Fix some JSDoc descriptions

Please do not update the README or Change Log, we will do this when we merge your PR.
This PR

Updates the Documentation

Describe the changes below:
While reading the docs, I noticed that some methods had descriptions in the source code, but these were outside the JSDoc so they didn't appear in the online documentation.
Clear example of what I mean:
Online docs: MarchingAnts in Rectangle
Source code with description: here

👍


⚠ Bofrost.es has degraded performance

In 7e1e5a8, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1656 ms

Resolved: Bofrost.es performance has improved in 2f8f241 after 6 minutes.


running "process-compose" with the same port twice makes the second instance inaccessible via REST API

Defect
When multiple instance of process-compose are ran concurrently, only the first instance is accessible via REST API. This can lead to confusion, if one forgets that an instance is already running in the background and starts a new one, and the tries to access it via REST or process-compose command (like process-compose process list etc).
This is also the case if any other process is already using the port process-compose is supposed to use.
IMHO, process-compose should exit with an error if it cannot bind the the port. If one doesn't intend to use the REST interface, a flag to disable the REST server could be provided.
Version of process-compose:
Process Compose
Version:        v0.51.4
Commit:         e3cc52e

OS environment:
nixos
Steps or code to reproduce the issue:
Expected result:
Actual result:

Good catch.
Will be fixed in the next release.

Should be fixed in v0.60.0
Feel free to reopen if it doesn't work as expected.


Won´t compile for Varnish 4.0+

Any chance this VMOD gets ported to Varnish 4.0+?
At the moment compilation fails:
checking for ~src/varnish-4.0.2/include/varnishapi.h... no
configure: error: in `~src/libvmod-geoip':
configure: error: "~src/varnish-4.0.2" is not a Varnish source directory
I guess the header files have been renamed.

+1

It can be compiled if you do a git checkout<PHONE_NUMBER>d20bf6f744fcf992ef97d83e8c5c59. Maybe a tag or a branch from that would be an idea.


Tab completion damaged

If I have folder structure
foo
  bar
  baz

then when I type in cd foo/z and hit tab, it should give me cd foo/baz. This works with OMZ without OMZC.

That's intentional. I've turned off some of the advanced completion support while I'm learning how to use and configure it. If you want completion to match inside words like that, restore the original matcher-list setting.
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'


Editing build commands impossible due to 'Target repository' field

Hi
I'm using the Artifactory TeamCity plugin and have a problem that prevents me from editing build steps most of the time.
Any build step which has the Artifactory plugin enabled has a field 'Target repository'. This is set to the correct value, but when I try to edit those build commands, the combo box is empty, and straight away TeamCity tells me I have unsaved changes. I can't reselect the original value because the 'Target repository' combo box is empty.
Occasionally, at random, the 'Target repository' combo box has all of the available Artifactory repos listed, and I can reselect the value that was already set, and then edit the build steps.
Not sure what causes this, but it could be that I have to connect to the Artifactory repo I'm using via a VPN. If the list of repos is fetched client-side, rather than server-side, then that might be the cause.
We are using Artifactory plugin 2.1.6 and TeamCity 9.0.4.
Sam

Hi @ssssam,
I'm not sure this is related to the issue you're describing, but Artifactory plugin 2.1.6 was released more than 2 years ago. Can you please upgrade the to latest release? You can download it from here.
Please also note that the repositories list is fetched dynamically from Artifactory. Could ti be that you're experiencing connectivity issues with Artifactory? Please share you're finding. We want to help you resolve this issue.

I'm not the admin of the TeamCity instance, but I'll request that the admins update to the latest version.
It's very likely that I'm experiencing slow connectivity to Artifactory -- my access to this instance is via a VPN, going between UK and Germany. I can't really fix that though (unless I move to Germany :-)

Got it @ssssam.
After you upgrade to the latest version, please try configuring your Artifactory repositories using the Free-Text Mode (this functionality is not available in the version you're using). You can read about it in the plugin documentation. This should hopefully workaround the slow connectivity to Artifactpry.


Stack setup fails when stack needs upgrading

When first installing Haskell-Vim-Now I encountered the following error:
Setting up GHC if needed...
Stack setup failed with exit code: 1
stderr: RedownloadInvalidResponse Request {
  host                 = "raw.githubusercontent.com"
  port                 = 443
  secure               = True
  requestHeaders       = []
  path                 = "/fpco/lts-haskell/master//lts-19.11.yaml"
  queryString          = ""
  method               = "GET"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
}

The error was caused by an older version of stack which requested to download from an outdated Github URL ("raw.githubusercontent.com/fpco/lts-haskell/master//lts-19.11.yaml").
Upon executing ..$  sudo stack upgrade then reattempting to install (..$ bash /tmp/haskell-vim-now.sh) the installation proceeded with success.
Recommend adding something like the following lines in the "setup_haskell.hs" file just before msg "Setting up GHC if needed...:
msg "   Upgrading stack if needed"
Turtle.procStrict "stack" ["upgrade"]  $  pure (Turtle.unsafeTextToLine "y")

Thanks for the report.

Recommend adding something like the following lines in the
"setup_haskell.hs" file just before msg "Setting up GHC if needed...:
msg "   Upgrading stack if needed"
Turtle.procStrict "stack" ["upgrade"]  $  pure (Turtle.unsafeTextToLine "y")

Are you able to revert your system to reproduce the error, and then test
whether this addition fixes it? If that works, then I'd accept a pull
request.
Also, might it be an unwelcome surprise to someone that their Stack gets
upgraded without their confirmation?

Thanks @begriffs , I will get back to you after I have a chance to test.
And you make a fair point about automatically upgrading Stack: I know several Haskell packages are quite sensitive to which version of GHC is being used (is this the issue which causes "Cabal Hell"?) and upgrading my Stack did change to GHC version which Stack tried to install.
As such, would you support an interactive installer confirmation (ie. not passing "y" automatically but asking the user)?


updating has required label help formatting

coverage: 84.619%. remained the same
when pulling 53e689732c81a63c1e1057c78003da3abe71fe99 on acornett21:red_hat_trademark
into 9bd6d676e215f811f8867cffb758db149a5754be on redhat-openshift-ecosystem:main.


domain label are different from paper

Thank you for your great work. I find a question in loss function: the domain_s label is 1 and domain_t label is 0 in paper, but in the code domain label are 0 and 1. In addition,the loss function in paper is contradictory

I think that  the domain_s label is 1 and domain_t label is 0 the paper mentioned is for backbone (generator), because the two alignment networks(discriminator) connect to backbone through gradient reverse, for backbone, optimization direction is maximum, source domain label is 1 we want for backbone, but discriminator use reverse optimization direction to train, so use flipped label to train), same as GAN training.(if I understand adversarial learning correctly)

Thank you for your great work. I find a question in loss function: the domain_s label is 1 and domain_t label is 0 in paper, but in the code domain label are 0 and 1. In addition,the loss function in paper is contradictory

I read the paper yesterday and I think I have found the same issue. The formulation (8) and (9) in the paper are inverse,  if the domain_s label is 1 and domain_t label is 0. I think the question is evident.


IDE mapping for java-library plugin

This adds IDE support for the new java-libary plugin, adding api/implementation dependencies to the right buckets in the IDEs.
The majority of the changes are a refactoring of the IDEA mapping, which has been greatly simplified. This will need some exploratory testing to make sure all use cases are still properly supported. @melix @jjohannes I've added you both as reviewers because of this higher testing overhead.
More details from the commit message:
The old scope mapping code was hardcoded, hard to understand and exploded in complexity
each time we added a new configuration to the Java plugin. It was doing this hardcoded
mapping in an attempt to minimize the number of dependency declarations in IDEA, e.g.
remove testRuntime dependencies from the TEST scope if they were already in the RUNTIME
scope and not present in testCompile. While this slightly reduces the number of false positives
in auto completion, it is hard to follow, as IDEA itself simply does not differentiate between
"test compilation" and "test runtime".
The new implementation accepts IDEA's dependency model and does the simples possible mapping to it:

no hardcoded mapping rules for the Java plugin
users can put dependencies into the 4 IDEA scopes (COMPILE,PROVIDED,RUNTIME, TEST)
the IdeaPlugin uses the same API for adding dependencies that the user would use
those scopes are not postprocessed in any way

The default mapping for the Java plugin is simplified to:

COMPILE is empty
PROVIDED = compileClasspath
RUNTIME = runtimeClasspath
TEST= testCompileClasspath + testRuntimeClasspath

The benefit of this mapping is that we no longer use minus configurations, which we might want
to deprecate/remove as well.

I addressed the review comments, but before we merge this, we also need to fix the providedCompile and providedRuntime configurations. I'll do that in another PR which this one will depend on.

I tried to improve the configuration hierarchy of the war plugin to be more explicit about what goes into the WAR. More specifically I tried to get rid of the war.classpath = runtime - provided and instead have war.classpath = warLibraries. This is possible but a pretty big change that I'm not comfortable with shortly before a release.
More importantly, it doesn't solve the IDEA mapping problem because IDEA has no way to just specify the libraries that should go into the WAR. It simply uses COMPILE + RUNTIME  for that. This means that as long as we have providedCompile and providedRuntime, we'll have to do some kind of subtraction (runtime - provided), which is what I did to finish this PR.

I added:

release notes
TAPI test
test coverage and fix for WAR plugin

I also replaced the DSL documentation example that was showing how to create a provided scope and wire it in IDEA. That was actually a bad example that we don't want users to copy, we already have compileOnly. Instead it is now showing how to wire custom test dependencies.

@adammurdoch I'm optimistically merging, please let me know if there is anything missing from your side.


[BUG] RecursionError: maximum recursion depth exceeded

Describe the bug
In a large pyc program these two lines
                with open("error_log.txt", "a") as f:
                    f.write(f"Failed: {var_1} {var_2}\n")

cause this crash - when commented out, codes compiles without problems
Traceback (most recent call last):
File "C:\Users\Admin\Documents\Visual Studio 2019\Projects\DominionSolver\setup.py", line 41, in
ext_modules = cythonize([
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Build\Dependencies.py", line 1129, in cythonize
cythonize_one(*args)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Build\Dependencies.py", line 1275, in cythonize_one
result = compile_single(pyx_file, options, full_module_name=full_module_name)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Main.py", line 579, in compile_single
return run_pipeline(source, options, full_module_name)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Main.py", line 503, in run_pipeline
err, enddata = Pipeline.run_pipeline(pipeline, source)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Pipeline.py", line 397, in run_pipeline
data = run(phase, data)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Pipeline.py", line 374, in run
return phase(data)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Pipeline.py", line 52, in generate_pyx_code_stage
module_node.process_implementation(options, result)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\ModuleNode.py", line 206, in process_implementation
self.generate_c_code(env, options, result)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\ModuleNode.py", line 501, in generate_c_code
self.body.generate_function_definitions(env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 404, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 404, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 5366, in generate_function_definitions
self.body.generate_function_definitions(self.scope, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 404, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 3458, in generate_function_definitions
FuncDefNode.generate_function_definitions(self, env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 2157, in generate_function_definitions
self.generate_function_body(env, code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 1918, in generate_function_body
self.body.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 410, in generate_execution_code
stat.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 7156, in generate_execution_code
self.body.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 410, in generate_execution_code
stat.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 7156, in generate_execution_code
self.body.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 410, in generate_execution_code
stat.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 6974, in generate_execution_code
if_clause.generate_execution_code(code, end_label, is_last=i == last)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 7021, in generate_execution_code
self.body.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 410, in generate_execution_code
stat.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 7800, in generate_execution_code
self.body.generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 8296, in generate_execution_code
fresh_finally_clause().generate_execution_code(code)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\site-packages\Cython\Compiler\Nodes.py", line 8284, in fresh_finally_clause
node_copy = copy.deepcopy(node)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 271, in _reconstruct
state = deepcopy(state, memo)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 231, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 271, in _reconstruct
state = deepcopy(state, memo)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "C:\Users\Admin\anaconda3\envs\dominion\lib\copy.py", line 231, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
repeats until
RecursionError: maximum recursion depth exceeded
Code to reproduce the behaviour:
# example code

Expected behaviour
no crash
Environment
OS: Windows 10 Pro
Python 3.10.4
Cython version 3.0.0a11
Additional context
No response

This definitely looks like a bug, but I can't reproduce it from the information given so it's unlikely to get fixed.

That will be quite tricky and my first try failed... What I could ascertain is that var_1 is an int and does not cause problems but var_2 is a npt.NDArray / cdef public int[:] and causes the crash. Does this help?

Is error_log.txt empty/nonexistant at the moment error happens?
Give an example of the var_1 and var_2

Is error_log.txt empty/nonexistant at the moment error happens?

I don't think error_log.txt matters - it's a compilation error rather than a runtime error.

I have played around with this quite a bit and the smallest size I can limit it down is 1k LOC and 6 files... What puzzles me is that further deleting unrelated lines makes the error go away but I don't see a pattern what causes the problem. If you were willing to investigate further I could set up a repo and give you access

It's just about possible that it's not a runaway recursion and just a deep recursion - Cython does work by traversing a tree recursively so it is possible to trigger recursion errors in some rare cases just by having a sufficiently complex source file. a+b+c+d+e+f+... will do it if you make it long enough...
Could you try changing the recursion limit (https://docs.python.org/3/library/sys.html?highlight=sys#sys.setrecursionlimit) to make it a bit bigger and see if that fixes it - say 4000. If you put sys.setrecursionlimit in your setup.py that'll probably do it.
Failing that, 1k LOC is better than nothing. It'd at least let me try to see if I can spot anything in the debugger. No promises of course (and definitely no promises of anything immediate) but I could have a look

Many thanks for the hint - increasing the limit did process the original code base. Closing this


Popup inconsistent behavior

I have been trying to use Popup but I've found a couple of weird behaviors. The component docs says:

Opens a popup with the given content.
The popup is positioned relative to its parent, using the alignment and offset. The popup is visible as long as it is part of the composition hierarchy.

In my opinion it should provide an option to be positioned relatively to the window instead of the parent, but that's a different topic. The first issue can be seen in the following code:
fun main() = singleWindowApplication {
    MaterialTheme {
        var showPopup by remember { mutableStateOf(false) }
        Box {
            Column(
                modifier =
                Modifier.background(MaterialTheme.colors.background)
            ) {
                Button(onClick = { showPopup = false }) {
                    Text("Close popup")
                }

                Box(
                    modifier = Modifier
                        .weight(1f)
                        .fillMaxWidth()
                        .background(Color.Cyan)
                ) {
                    if (showPopup) {
                        Popup(focusable = true) {
                            Box(
                                modifier = Modifier
                                    .fillMaxSize()
                                    .background(
                                        Color(0xBB000000)
                                    ),
                            )
                        }
                    }
                    Button(onClick = { showPopup = true }) {
                        Text("Open popup")
                    }
                }
            }
        }
    }
}

In this example we see how we have a button and a box with a second button. The popup fills it's parent (Box) but not the windows, that's correct acording to the docs. The second button opens the Popup and the first one closes it.
The issue starts when trying to close the popup with the first button, basically because the first button becomes unresponsive randomly.  Demo:
https://user-images.githubusercontent.com/16917468/144141363-4dca3f59-49b4-41da-9fda-6ad735b436c0.mp4
For some reason seems that moving the mouse allows the click to work (not sure if it's just a coincidence or related to the issue since doesn't always work).
After seeing that, I thought that I would try add a Text composable to show whenever an action occurs:
fun main() = singleWindowApplication {
    MaterialTheme {
        var lastAction by remember { mutableStateOf("") }
        var showPopup by remember { mutableStateOf(false) }
        Box {
            Column(
                modifier =
                Modifier.background(MaterialTheme.colors.background)
            ) {
                Button(onClick = {
                    lastAction = "Close popup clicked"
                    showPopup = false
                }) {
                    Text("Close popup")
                }

                Box(
                    modifier = Modifier
                        .weight(1f)
                        .fillMaxWidth()
                        .background(Color.Cyan)
                ) {
                    if (showPopup) {
                        Popup(focusable = true, onDismissRequest = { lastAction = "OnDismissRequest called" }) {
                            Box(
                                modifier = Modifier
                                    .fillMaxSize()
                                    .background(
                                        Color(0xBB000000)
                                    )
                                    .clickable { lastAction ="Clicked on box" },
                            )
                        }
                    }
                    Button(onClick = { showPopup = true }) {
                        Text("Open popup")
                    }
                }

                Text("Last action = $lastAction")
            }
        }
    }
}

After adding onDismissRequest to the Popup, clicking on the button has started to work properly if you always used the primary button, however it screwsup again if using a secondary mouse button. Demo:
https://user-images.githubusercontent.com/16917468/144142700-039e643f-ffca-4779-9887-324655b82c44.mp4
Not sure if you have noticed it, but in the last video a new unexpected behavior appeared aside from the unresponsiveness: I was expecting the popup to be limited to the Box area, as we have seen with the first button, however now it's also covering the "last action" Text which is not inside the Box (the Popup's parent).
The main goal of this issue is to remark the unconsistent behavior of the Popup:

How should clicks outside the parent Popup behave?
Is it correct to overlap more components aside from the parent? If yes, why is it covering the next item in the Column but not the previous one?

Compose 1.0.0-rc6 on Linux.
Not sure if related to https://github.com/JetBrains/compose-jb/issues/1485

Thanks for the detailed report!

In my opinion it should provide an option to be positivion relatively to the window instead of the parent

You can pass a custom PopupPositionProvider, as done here

Is it correct to overlap more components aside from the parent? If yes, why is it covering the next item in the Column but not the previous one?

If we don't pass PopupPositionProvider, by default it is aligned by the parent's bounds, but measured by the window's bounds. So if we use fillMaxSize inside Popup, its size equals to the window size. It isn't obvious, and have limited usage, so I think we should cover that in docs, and add something like PopupSizeProvider (not sure yet).
In your second example, we measure Popup content by the window bounds and align it within the parent bounds. Alignment is TopStart by default.

How should clicks outside the parent Popup behave?

We have two issues here:

unpredictable/wrong behavior, when we use focusable=true and onDismissRequest=null. The popup intercepts mousePress and do nothing
wrong behavior when we use focusable=true and onDismissRequest={ showPopup = false } and when we click with the right button outside of Popup (it should close, when we click with the right button).

Сan't reproduce the second one yet. Will look at the first one first.

Sorry for the late response, I've been a bit busy.

You can pass a custom PopupPositionProvider, as done here

Thanks! I've done it and works nicely :+1:

We have two issues here:
1. unpredictable/wrong behavior, when we use `focusable=true` and `onDismissRequest=null`. The popup intercepts `mousePress` and do nothing

2. wrong behavior when we use `focusable=true` and `onDismissRequest={ showPopup = false }` and when we click with the right button outside of Popup (it should close, when we click with the right button).

Сan't reproduce the second one yet. Will look at the first one first.

The second one is a bit... weird. Instead of having a lambda  with showPop = false, simply leave it as an empty lambda.

The second one is a bit... weird. Instead of having a lambda with showPope = false

Oh, in that case it is similar to the first issue, if not the same.
As far as I remember, we don't distinguish between null and empty lambda.
So, we have a wrong/unexpected behavior if onDismissRequest doesn't close the popup.

Another set of complaints about popup behavior: https://github.com/JetBrains/compose-multiplatform/issues/3493

In 1.5.0 Popup has been unified with Android. This issue isn't relevant anymore.

The popup fills it's parent (Box) but not the windows, that's correct acording to the docs.

BTW currently it fills the whole window/screen on both Android and Desktop. Docs here are only about position, not size.

Popup(focusable = true)

it's Popup(properties = PopupProperties(focusable = true)) now

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Remove mamba command and switch to Miniforge3

This is the equivalent of the Compass PR https://github.com/MPAS-Dev/compass/pull/751.

Checklist

[x] User's Guide has been updated
[x] Developer's Guide has been updated
[x] Documentation has been built locally and changes look as expected
[x] Testing comment in the PR documents testing used to verify the changes

Testing
I created a new development environment for polaris using a miniforge3 installation on my laptop.

with this commit, should we now use
./configure_polaris_envs.py  --conda /usr/projects/climate/mpeterse/miconda3 # on LANL IC
./configure_polaris_envs.py  --conda ~/miconda3 # everywhere else

or create some other conda directory? Does it matter if polaris and compass use the same ~/miconda3 directory, if I am using them at the same time? Thanks.

You should do:
./configure_polaris_envs.py  --conda /usr/projects/climate/mpeterse/miniforge3

on LANL IC.  (We don't recommend using Miniconda3 and it would be confusing to call a miniforge3 installation miniconda3 or miconda3.)

or create some other conda directory? Does it matter if polaris and compass use the same ~/miconda3 directory, if I am using them at the same time? Thanks.

They should use the same ~/miniforge3 directory, yes.

It should work to use an existing ~/miniconda3 or ~/mambaforge if you already have one.  You don't need to create a new ~/miniforge3 directory if you already have conda installed somewhere.


python-tonado: add recipe

python-tornado 4.x is needed by Mopidy. meta-oe is currently provides
version 5 only.
Signed-off-by: Oleksandr Kravchuk<EMAIL_ADDRESS>

Is this work  to get python2 on thud for Mopidy?

Is this work to get python2 on thud for Mopidy?

Not the python2, but the specific package, python-tornado that mopidy depends on.

It would be good to give some more background details for this change in the commit message. For example that yocto has removed python2 in thud and mopidy doesn't support python3 and that this should be removed once Mopidy supports python3 yada yada.


Add revert transaction test

https://github.com/nervosnetwork/godwoken/pull/684 enables packaging failed transactions.

It would be better to cover other fields of receipt as well, like receipt.logs and receipt.status.


SKY90 ?

What are your plans for supporting SKY90? Thanks,
/jeff

The SKY90FD PDK is not yet released. I'm sure that SiliconCompiler will explore support when things like that are available.

@mithro : Thanks. we are currently targetting SKY130; will SKY90FD be a compatible swap in these open source tool chains (silicon compiler, openlane)?

@vetter - Unclear at the moment (Bulk verse FDSOI offers some unique challenges), but we will try and make moving between technologies as easy as possible.

Once thesky90 is reased, we will do our best to support it!


[WIP] Add 3D get_value to Shapes

Description
This PR adds the ability to select shapes in 3D by implementing Shapes._get_value_3d. To do so, we find all shapes that are intersected by the cursor ray and then return the index of the one closest to the starting point of the cursor ray (i.e., closest to the user). Additionally, we return the coordinates of the intersection, which allows for further interaction (e.g., placing points on planes).
Type of change

[ ] Bug-fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

References
How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

This is extra WIP, but the main functionality is there. See below for a demo of placing points on the surface of a shape (note this technique would also work for meshes).
https://user-images.githubusercontent.com/1120672/127898013-13c50ce0-edea-4c9a-83c1-e38c5316cc24.mov
The mouse callback:
@shapes_layer.mouse_drag_callbacks.append
def on_click(layer, event):
    shape_index, intersection_point = layer.get_value(
        position=event.position,
        view_direction=event.view_direction,
        dims_displayed=event.dims_displayed,
        world=True
    )

    if (shape_index is not None) and (intersection_point is not None):
        points_layer.add(intersection_point)

Example code
import napari
import numpy as np

shapes_data = np.array(
  [
      [
          [0, 50, 75, 75],
          [0, 50, 125, 75],
          [0, 100, 125, 125],
          [0, 100, 75, 125]
      ],
      [
          [0, 10, 75, 75],
          [0, 10, 125, 75],
          [0, 40, 125, 125],
          [0, 40, 75, 125]
      ],
      [
          [1, 100, 75, 75],
          [1, 100, 125, 75],
          [1, 50, 125, 125],
          [1, 50, 75, 125]
      ]
  ]
)

properties = {'index': [0, 1, 2]}
viewer = napari.view_points(ndim=3, size=3)
shapes_layer = viewer.add_shapes(
  shapes_data,
  face_color=['magenta', 'green', 'blue'],
  edge_color='white',
  blending='additive',
  properties=properties,
  text='index'
)
points_layer = viewer.layers[0]

@shapes_layer.mouse_drag_callbacks.append
def on_click(layer, event):
  shape_index, intersection_point = layer.get_value(
      position=event.position,
      view_direction=event.view_direction,
      dims_displayed=event.dims_displayed,
      world=True
  )

  if (shape_index is not None) and (intersection_point is not None):
      points_layer.add(intersection_point)

viewer.dims.ndisplay = 3
napari.run()

😍 oh my!!!! amazing, love the video! Will pull and have a play later on, so exciting!!!

I think this is ready for review! A couple of discussion items:
get_value_and_intersection()
I added a public method Shapes.get_value_and_intersection() that returns both the index of the first shape under the cursor and the coordinate of the intersection. My rationale for this is twofold:

we have to calculate the intersection points to get the index of the shape since we need to determine which is "on top" (i.e., most in the foreground)
I think many people will want both the index and intersection point. For example, the callback to add points on the surface of nD shapes now looks like this (see the add_points_to_nd_shapes.py example I added):

@shapes_layer.mouse_drag_callbacks.append
def on_click(layer, event):

    start_point, end_point = layer.get_ray_intersections(
        event.position,
        event.view_direction,
        event.dims_displayed
    )
    if (start_point is not None) and (end_point is not None):
        shape_index, intersection_point = layer.get_value_and_intersection(
            start_point=start_point,
            end_point=end_point,
            dims_displayed=event.dims_displayed
        )

        if (shape_index is not None) and (intersection_point is not None):
            points_layer.add(intersection_point)

A couple of question:

Do we want to add this method? In terms of other layers, I think it would make sense to add it to Labels (the coordinate of the surface of the first label encountered), Image (the coordinate of the max/min/surface encountered), and Mesh (coordinate of the face the mouse intersects)
Should there be a convenience method that takes the mouse event object? In this case the callback would look like:

@shapes_layer.mouse_drag_callbacks.append
def on_click(layer, event):

    _, intersection_point = layer.get_value_and_intersection_from_event(
        event
    )

    if intersection_point is not None:
        points_layer.add(intersection_point)

interactive editing
I haven't added the interactive editing (e.g., selecting shapes, moving vertices) in this PR. I think there is a lot of value in adding get_value() in 3D to all of the layers first so that developers can play with the 3D interactivity. Also, I think we need to first add get_value() so that we can experiment with different ways to do the selection, dragging, and adding of elements in 3D. Thoughts?

Thanks for the review, @alisterburt ! I believe I have addressed your comments.

Thanks for the review @sofroniewn ! I'd like to just update the get_index_and_intersection_from_event() method to take the properties from the mouse event as kwargs instead of the event object (as we discussed in the dev meeting yesterday). After that, I think we are good to go!

I'd like to just update the get_index_and_intersection_from_event() method to take the properties from the mouse event as kwargs instead of the event object (as we discussed in the dev meeting yesterday). After that, I think we are good to go!

ah ok, nice - well recalled!

I have refactored shapes.get_index_and_intersection() to take the properties of the mouse event rather than the mouse event.
@alisterburt , would you like to taking another look and then merging if you think it's ready?


tuple attribute error when running pretrain.py

Hi,
I'm currently trying out training the model on the LRS2 dataset. Preprocess executes successfully, but on trying to run the pretrain I run into the following error:
Traceback (most recent call last):
File "audio_visual/pretrain.py", line 106, in
trainingLoss, trainingCER, trainingWER = train(model, pretrainLoader, optimizer, loss_function, device, trainParams)
File "audio_visual\utils\general.py", line 39, in train
for batch, (inputBatch, targetBatch, inputLenBatch, targetLenBatch) in enumerate(tqdm(trainLoader, leave=False, desc="Train", ncols=75)):
File "anaconda3\lib\site-packages\tqdm\std.py", line 1107, in iter
for obj in iterable:
File "anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 346, in next
data = self.dataset_fetcher.fetch(index)  # may raise StopIteration
File "anaconda3\lib\site-packages\torch\utils\data_utils\fetch.py", line 47, in fetch
return self.collate_fn(data)
File "audio_visual\data\utils.py", line 242, in collate_fn
inputBatch = pad_sequence([data[0] for data in dataBatch])
File "anaconda3\lib\site-packages\torch\nn\utils\rnn.py", line 369, in pad_sequence
max_size = sequences[0].size()
AttributeError: 'tuple' object has no attribute 'size'
I've traced it to the use of a tuple to pass both the audio and video inputs from prepare_pretrain_input in utils.py but am unsure how to resolve the problem.

Hi,
Thanks for pointing this out.
Can you replace
    inputBatch = pad_sequence([data[0] for data in dataBatch])

with
    inputBatch = (pad_sequence([data[0][0] for data in dataBatch]),
              pad_sequence([data[0][1] for data in dataBatch]))

in collate_fn function defined in audio_visual/data/utils.py file and then try?
Please let me know if that resolves the issue.

Hi, I replaced the line in question, but am getting a invalid comparison within the collate_fn:
Traceback (most recent call last):
File "D:/Users/arunm/PycharmProjects/AV_Speech_Recognition/audio_visual/pretrain.py", line 106, in
trainingLoss, trainingCER, trainingWER = train(model, pretrainLoader, optimizer, loss_function, device, trainParams)
File "D:\Users\arunm\PycharmProjects\AV_Speech_Recognition\audio_visual\utils\general.py", line 39, in train
for batch, (inputBatch, targetBatch, inputLenBatch, targetLenBatch) in enumerate(tqdm(trainLoader, leave=False, desc="Train", ncols=75)):
File "D:\Users\arunm\anaconda3\lib\site-packages\tqdm\std.py", line 1107, in iter
for obj in iterable:
File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 346, in next
data = self.dataset_fetcher.fetch(index)  # may raise StopIteration
File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data_utils\fetch.py", line 47, in fetch
return self.collate_fn(data)
File "D:\Users\arunm\PycharmProjects\AV_Speech_Recognition\audio_visual\data\utils.py", line 243, in collate_fn
if None not in [data[1] for data in dataBatch]:
TypeError: eq() received an invalid combination of arguments - got (NoneType), but expected one of:

(Tensor other)
didn't match because some of the arguments have invalid types: (!NoneType!)
(Number other)
didn't match because some of the arguments have invalid types: (!NoneType!)

I've pasted the current code of collate_fn  below:
def collate_fn(dataBatch):
"""
Collate function definition used in Dataloaders.
"""
inputBatch = (pad_sequence([data[0][0] for data in dataBatch]), pad_sequence([data[0][1] for data in dataBatch]))
if None not in [data[1] for data in dataBatch]:
targetBatch = torch.cat([data[1] for data in dataBatch])
else:
targetBatch = None
inputLenBatch = torch.stack([data[2] for data in dataBatch])
if None not in [data[3] for data in dataBatch]:
    targetLenBatch = torch.stack([data[3] for data in dataBatch])
else:
    targetLenBatch = None

return inputBatch, targetBatch, inputLenBatch, targetLenBatch

My latest pull request fixes both both of these issues:
For the invalid comparison replace:
if None not in [data[1] for data in dataBatch]:
with
if any(data[1] is None for data in dataBatch) == False

@lordmartian I am trying to reproduce the results you post in this (very nice) repo, could you provide more details regarding the hyper parameters (learning rate, no of words, n-epochs, ets.) for the different pre-training and training steps you followed for the AV model?

@mlomnitz I have used the same values of hyperparameters which are given in the paper. I plan to include a document which lists down the important implementation details in the repo in the near future so that it will be easy for everyone to train from scratch. For now, you can go through the closed issues of the repo. I have mentioned many of the implementation details in the comments therein. Two people (as per my knowledge) had used the code and were able to achieve results close to mine. If something you would like to know is missing, kindly open an issue here and I'll be happy to answer.

@arunm95 you can use @mlomnitz 's solution. Please let me know if you face any other issues. Seems that my last commit has introduced some bugs. I'll go over the changes and rectify the bugs in the next commit.

I have resolved both the bugs in the latest commit.

@lordmartian That change resolved the error, however, I had set numworkers in the config file to 0 in order to avoid a mutliprocess error that was masking the original error. Setting the numworkers to anything other than 0 still causes this error.
File "", line 1, in
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 114, in _main
prepare(preparation_data)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 225, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
run_name="mp_main")
File "D:\Users\arunm\anaconda3\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "D:\Users\arunm\anaconda3\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "D:\Users\arunm\anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\Users\arunm\PycharmProjects\AV_Speech_Recognition\audio_visual\pretrain.py", line 106, in
trainingLoss, trainingCER, trainingWER = train(model, pretrainLoader, optimizer, loss_function, device, trainParams)
File "D:\Users\arunm\PycharmProjects\AV_Speech_Recognition\audio_visual\utils\general.py", line 39, in train
for batch, (inputBatch, targetBatch, inputLenBatch, targetLenBatch) in enumerate(tqdm(trainLoader, leave=False, desc="Train", ncols=75)):
File "D:\Users\arunm\anaconda3\lib\site-packages\tqdm\std.py", line 1107, in iter
for obj in iterable:
File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 278, in iter
return _MultiProcessingDataLoaderIter(self)
File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 682, in init
w.start()
File "D:\Users\arunm\anaconda3\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 46, in init
prep_data = spawn.get_preparation_data(process_obj._name)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 143, in get_preparation_data
Traceback (most recent call last):
File "D:/Users/arunm/PycharmProjects/AV_Speech_Recognition/audio_visual/pretrain.py", line 106, in
_check_not_importing_main()
File "D:\Users\arunm\anaconda3\lib\multiprocessing\spawn.py", line 136, in _check_not_importing_main
trainingLoss, trainingCER, trainingWER = train(model, pretrainLoader, optimizer, loss_function, device, trainParams)
File "D:\Users\arunm\PycharmProjects\AV_Speech_Recognition\audio_visual\utils\general.py", line 39, in train
for batch, (inputBatch, targetBatch, inputLenBatch, targetLenBatch) in enumerate(tqdm(trainLoader, leave=False, desc="Train", ncols=75)):
File "D:\Users\arunm\anaconda3\lib\site-packages\tqdm\std.py", line 1107, in iter
is not going to be frozen to produce an executable.''')
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.
for obj in iterable:

File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 278, in iter
return _MultiProcessingDataLoaderIter(self)
File "D:\Users\arunm\anaconda3\lib\site-packages\torch\utils\data\dataloader.py", line 682, in init
w.start()
File "D:\Users\arunm\anaconda3\lib\multiprocessing\process.py", line 112, in start
self._popen = self._Popen(self)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 89, in init
reduction.dump(process_obj, to_child)
File "D:\Users\arunm\anaconda3\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
BrokenPipeError: [Errno 32] Broken pipe

Kindly open a new issue for this error.


New Sample: Join New Teams

Q
A

New sample?
yes?

What's in this Pull Request?
This adaptive card  extension displays recently created Teams and allows the user to join a team.

@a1mery Thank you so much for the sample. I will get it reviewed and processed as soon as I can.

Thank you @dcashpeterson !


Generated appropriate  tags :)

Open sharer in new window.
#LevelUp #Breeze16 in tweets, use @snu_breeze
Write the meta tag description, as you think might be appropriate to appear on a google search, current one is not appropriate.
Use a better sentence for whatsapp share, one that seems like was written by a human, add link to fb page also in whatsapp share. Use fa icon it has whatsapp http://fontawesome.io/icon/whatsapp/

@rhnvrm , You can see the code. I have used the fa-whatsapp from fontawesome but it seems not working...I can't figure out why, but I'm working on that :)
In the upcoming pull request:-

Open in new page resolved...
Tweets improved as requested...
I'm not able to figure out the text for the meta tag description and the whatsapp share :p Can we take views from the OC regarding that ?


Add multiple claims into RouteClaimsRequirement

At the moment our config on .net core looks like this
"RouteClaimsRequirement": {
  "Claim": "settings_read"
},

Is it possible to add more claims like below.
"RouteClaimsRequirement": {
  "Claim": "settings_read,settings_admin"
},

Otherwise people with admin permissions would end up getting 403 error.

Cant you do
"RouteClaimsRequirement": {       "Claim": "settings_read",      "Claim": "settings_admin"  },
It seems each value pair is evaluated individually. I haven't tried this, but this would seem to work.

thanks, I tried it out. It does not work. ocelot.json becomes an invalid json file. Ends up crashing the gateway.

At the moment our config on .net core looks like this
"RouteClaimsRequirement": { "Claim": "settings_read" },
Is it possible to add more claims like below.
"RouteClaimsRequirement": { "Claim": "settings_read,settings_admin" },
Otherwise people with admin permissions would end up getting 403 error.

It is possible to write your own middleware to fix this issue.
Here some example code, which i would recommend you to modify.
The current middleware
Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){

           // some more code

           var configuration = new OcelotPipelineConfiguration
            {
                AuthorizationMiddleware = async (httpContext, next) =>
                {
                    await OcelotAuthorizationMiddleware.Authorize(httpContext, next);
                }
            };

            app.UseOcelot(configuration);
            }

OcelotAuthorizationMiddleware.cs
public class OcelotAuthorizationMiddleware
    {
        public static async Task Authorize(HttpContext httpContext, Func<Task> next)
        {
            if (ValidateRole(httpContext) && ValidateScope(httpContext))
                await next.Invoke();
            else
            {
                httpContext.Response.StatusCode = 403;
                httpContext.Items.SetError(new UnauthorizedError($"Fail to authorize"));
            }
        }

        private static bool ValidateScope(HttpContext httpContext)
        {
            var downstreamRoute = httpContext.Items.DownstreamRoute();
            var listOfScopes = downstreamRoute.AuthenticationOptions.AllowedScopes;
            if (listOfScopes == null || listOfScopes.Count == 0) return true;
            var userClaimsPrincipals = httpContext.User.Claims.ToArray<Claim>();
            List<string> listOfClaimTypes = new List<string>();
            foreach (var userClaim in userClaimsPrincipals)
                listOfClaimTypes.Add(userClaim.Type);
            foreach (string scope in listOfScopes)
                if (!listOfClaimTypes.Contains(scope)) return false;
            return true;
        }
        private static bool ValidateRole(HttpContext ctx)
        {
            var downStreamRoute = ctx.Items.DownstreamRoute();
            if (downStreamRoute.AuthenticationOptions.AuthenticationProviderKey == null) return true;
            //This will get the claims of the users JWT
            Claim[] userClaims = ctx.User.Claims.ToArray<Claim>();

            //This will get the required authorization claims of the route
            Dictionary<string, string> requiredAuthorizationClaims = downStreamRoute.RouteClaimsRequirement;

            //Getting the required claims for the route
            foreach (KeyValuePair<string, string> requiredAuthorizationClaim in requiredAuthorizationClaims)
            {
                if (ValidateIfStringIsRole(requiredAuthorizationClaim.Key))
                {
                    //Splitting the required claims as an or condition
                    foreach (var requiredClaimValue in requiredAuthorizationClaim.Value.Split(","))
                    {
                        foreach (Claim userClaim in userClaims)
                        {
                            if (ValidateIfStringIsRole(userClaim.Type) && requiredClaimValue.Equals(userClaim.Value))
                            {
                                return true;
                            }
                        }
                    }
                }
            }
            return false;
        }
        private static bool ValidateIfStringIsRole(string role)
        {
            // The http://schemas.microsoft.com/ws/2008/06/identity/claims/role string is nesscary because Microsoft returns this as role claims in a JWT
            // And when directly adding this to the ocelot.json it will crash ocelot
            return role.Equals("http://schemas.microsoft.com/ws/2008/06/identity/claims/role") || role.Equals("Role") ||
                   role.Equals("role");
        }
    }

Hi @patolax !
Have you tried, run and tested the @default-kaas solution above?

Hi @patolax !
Have you tried, run and tested the @default-kaas solution above?

I implemented similar code at previous company. But that is more then 2 years ago and I no longer work there. So I can't check the exact code. The only thing that I rember is that it worked in .Net 5 and .Net 6.

yes, its working ok.


enhance declaration of TableColumn Props

Is your feature request related to a problem? Please describe.
current usage for complex rendering:

{
   title: "test",
   dataIndex: 'test',
   render: (source, index) => {
       ......
       return (
          .....
       )

   }
}

"dataIndex" declaration seems to be redundant because we only focus on the more complex render function.
Either declare "dataIndex" or "render" function, which means when declaring the render function the "dataIndex" key should not exist.
Describe the solution you'd like
export type TableColumnBase<SourceType> = {
  tile?:  string;
   ......
}

export type TableColumn<SourceType> =
{
  dataIndex: string;
}  & TableColumnBase<SourceType>  |
{
  render: (...)=> any
}  & TableColumn<SourceType>

`
Additional context or references
current version: 0.13.3

Duplicate https://github.com/Mezzanine-UI/mezzanine/issues/136


How does it work?

It would be helpful if you could explain the magic behind it. I'm trying to read the source code but it's not very obvious. Thanks!

@noobiwan
The code could be a little cleaner, but you can understand whats going on if you slowly read through everything.
From what I see, the script adds another element to the container, and then tracks that element to get around the issue of circularity (which is the biggest problem with element queries/container queries, and ultimately why the spec was abandoned).
Other than that, there are several events that track the size of the element, etc...

@gbabula Your describe method would break margins.
I have not played enough with css-element-queries to say if it does.

@gajus I don't think it would because the element is styled in a way that prevents affecting the parent.

function attachResizeEvent(element, resized) {
    if (!element.resizedAttached) {
        element.resizedAttached = new EventQueue();
        element.resizedAttached.add(resized);
    } else if (element.resizedAttached) {
        element.resizedAttached.add(resized);
        return;
    }

    element.resizeSensor = document.createElement('div');
    element.resizeSensor.className = 'resize-sensor';
    var style = 'position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: scroll; z-index: -1; visibility: hidden;';
    var styleChild = 'position: absolute; left: 0; top: 0;';

    element.resizeSensor.style.cssText = style;
    element.resizeSensor.innerHTML =
        '
' +
            '

' +
        '
' +
        '
' +
            '

' +
        '
';
    element.appendChild(element.resizeSensor);

    if (!{fixed: 1, absolute: 1}[getComputedStyle(element, 'position')]) {
        element.style.position = 'relative';
    }

    var expand = element.resizeSensor.childNodes[0];
    var expandChild = expand.childNodes[0];
    var shrink = element.resizeSensor.childNodes[1];
    var shrinkChild = shrink.childNodes[0];

    var lastWidth, lastHeight;

    var reset = function() {
        expandChild.style.width = expand.offsetWidth + 10 + 'px';
        expandChild.style.height = expand.offsetHeight + 10 + 'px';
        expand.scrollLeft = expand.scrollWidth;
        expand.scrollTop = expand.scrollHeight;
        shrink.scrollLeft = shrink.scrollWidth;
        shrink.scrollTop = shrink.scrollHeight;
        lastWidth = element.offsetWidth;
        lastHeight = element.offsetHeight;
    };

    reset();

    var changed = function() {
        if (element.resizedAttached) {
            element.resizedAttached.call();
        }
    };

    var addEvent = function(el, name, cb) {
        if (el.attachEvent) {
            el.attachEvent('on' + name, cb);
        } else {
            el.addEventListener(name, cb);
        }
    };

    addEvent(expand, 'scroll', function() {
        if (element.offsetWidth > lastWidth || element.offsetHeight > lastHeight) {
            changed();
        }
        reset();
    });

    addEvent(shrink, 'scroll',function() {
        if (element.offsetWidth < lastWidth || element.offsetHeight < lastHeight) {
            changed();
        }
        reset();
    });
}


disaggregate county hospital data

Closing due to change of plans, see CAN Phase 8.2 API Plan for more information


Permission Denied Error While Using Portkey for bedrock models using langchain

What Happened?
I was trying out Bedrock models on Portkey , however I keep getting  the below error:
PermissionDeniedError: Error code: 403 - {'error': {'message': 'bedrock error: The security token included in the request is invalid.', 'type': None, 'param': None, 'code': None}, 'provider': 'bedrock'}
I have verified the credentials and they are working fine without port key
What Should Have Happened?
This error should not be comming and instead the llm request must go on with status code 200
Relevant Code Snippet
config = {
    "strategy": {
         "mode": "loadbalance"
    },
    "targets": [{
        "virtual_key": os.environ.get("bedrock_virtual_key"),
        "override_params": {"model": "meta.llama3-70b-instruct-v1:0",}

    }]
}
portkey_headers = createHeaders(
    api_key=os.environ.get("api_key"),
    config=config
)

llm = ChatOpenAI(api_key="X", base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers)

llm.invoke("What is the meaning of life, universe and everything?")

This is throwing error: PermissionDeniedError: Error code: 403 - {'error': {'message': 'bedrock error: The security token included in the request is invalid.', 'type': None, 'param': None, 'code': None}, 'provider': 'bedrock'}
Your Twitter/LinkedIn
@kumaria3001

Thanks for the reply, yes indeed that was the issue


Ability to include 'app.css' and 'app.js' as part of the layout.

Fix for #251

This is already possible. See my comment in #251


Add the coreum chain support.

Firehose extractor works for all cosmos networks - is there any particular reason to merge it for coreum?

Firehose extractor works for all cosmos networks - is there any particular reason to merge it for coreum?

The reason is the the Coreum chain eager to integrate the Coreum to all the graph tool. And this is just a first integration.


Feature/add ext dml init fini hook for custom table am

closes: #ISSUE_Number

Change logs
Two hook functions , ext_dml_init_hook and ext_dml_finish_hook have been added. These functions perform some resource initialization and cleanup at the start and end of data modification operations (such as modifyTable, CopyFrom, CreateAs, Matview, etc.).
Why are the changes needed?
we have implemented some custom table am to support custom catalog services and storage formats,  we need to support custom storage formats just like the ao_row/ao_co table.  So we added two hook functions like appendonly_dml_init/appendonly_dml_finish
Does this PR introduce any user-facing change?
If yes, please clarify the previous behavior and the change this PR proposes.
How was this patch tested?
Please detail how the changes were tested, including manual tests and any relevant unit or integration tests.
Contributor's Checklist
Here are some reminders and checklists before/when submitting your pull request, please check them:

[ ] Make sure your Pull Request has a clear title and commit message. You can take git-commit template as a reference.
[ ] Sign the Contributor License Agreement as prompted for your first-time contribution(One-time setup).
[ ] Learn the coding contribution guide, including our code conventions, workflow and more.
[ ] List your communication in the GitHub Issues or Discussions (if has or needed).
[ ] Document changes.
[ ] Add tests for the change
[ ] Pass make installcheck
[ ] Pass make -C src/test installcheck-cbdb-parallel
[ ] Feel free to @cloudberrydb/dev team for review and approval when your PR is ready🥳

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: tuhaihe:x: gongxungongxun seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Guard diagnostic_information against null what()

Printing a char* nullptr to an std::ostream is UB. Since diagnostic_information is used for debugging, I guess it would be good for it to be as robust as possible.

Yes, very good. Thank you!


XAudio2 SourceVoice.State.SamplesPlayed always returns 0 in 64-bit configurations

Hello!
I have attached a simple Visual Studio project that reproduces this issue. Specifically, the issue is that  SourceVoice.State.SamplesPlayed always returns 0 when the project is set to x64 (or Any CPU with "Prefer 32-bit" off), whereas it works properly when the project is set to x86 (or Any CPU with "Prefer 32-bit" on).
This is occurring with SharpDX 3.0.1 (from Nuget) on Visual Studio 2015 Update 1 targeting .Net 4.6.1. (I haven't yet tested any other setups.)
Steps to reproduce:

Load and run the attached Visual Studio project.
A "cannon" sound will play and output will be logged to the console window.
Note that as the sound plays, the "Samples played" counts up.
Go into the project properties, and on the Build tab change the "Platform target" from x86 to x64.
Run the project again. Note that the sound plays but the "Samples played" stays at 0.

Please let me know if there's any more information I can provide in order to help debug this issue. Thanks so much!
Test.zip

Hi, thanks for the report! Currently I have no spare time left for digging into SharpDX issues. PR are welcome.

Okay, so I believe I know exactly what the problem is, but I'm not sure how to fix it since the issue is in a generated file, and I'm not familiar with how SharpDX generates files from the C++ headers.
Specifically, I believe the problem is with how the JIT aligns the VoiceState struct on 64-bit architectures. Here's what the VoiceState structure looks like (without the comments):
[StructLayout(LayoutKind.Sequential)]
public  partial struct VoiceState {
    public System.IntPtr Context;
    public int BuffersQueued;
    public long SamplesPlayed;
}

My hypothesis is that the JIT by default will align the SamplesPlayed on an 8-byte boundary. On x86 the Context IntPtr will be 4 bytes (and BuffersQueued is of course 4 bytes), meaning that the JIT won't insert any padding between BuffersQueued and Samples Played. But on x64 the Context IntPtr will be 8 bytes, which I believe will cause the JIT to insert 4 bytes of padding between BuffersQueued and SamplesPlayed; padding which the C++ API apparently doesn't have.
I verified my hypothesis by manually adding a Pack=4 to the StructLayout attribute...
[StructLayout(LayoutKind.Sequential, Pack=4)]
public  partial struct VoiceState {
    public System.IntPtr Context;
    public int BuffersQueued;
    public long SamplesPlayed;
}

... which fixes the issue on x64 (and still works fine on x86).
However, since VoiceState is in a generated file, I'm not sure how to tell the generator to add the Pack=4 to the VoiceState structure. If you can give me some direction on how to make that change, then I'd be happy to fix the bug and submit a pull request.
Thanks!

Thanks for digging. In the past, I think that the Pack = 4 was generated explicitly, but I removed it at some point because it was not working for some other stuffs. I haven't checked XAudio2, but I suspect that they are introducing some pragma packs in their code.
You can try to add the following line to Mapping-xaudio2.xml:220
    <map struct="XAUDIO2_.*" pack="4" />

That seems to work great!
Incidentally, as I was scanning through the XAudio2 structs to make sure that setting Pack=4 on all of them wouldn't break anything, I noticed that AudioBuffer's Context field had a similar packing issue on x64, which your suggestion also fixes.
I'll go ahead and submit a pull request to fix this.
Thanks for your help!

This got fixed by pull request #710


NH-69217 sw.transaction attribute on otlp traces, metrics

Updates Sampler to add sw.transaction attribute to spans, if experimental ("OTLP export") flag is set.
Dumbs down OTLPMetricsSpanProcessor to match sw.transaction attribute in OTLP metrics.
We can only customize transaction value for spans with the env var SW_APM_TRANSACTION_NAME or AWS_LAMBDA_FUNCTION_NAME, not with the SDK (see Confluence). For now, the latter env var we assume is always there. Backups in case not present are the span's name, else "unknown_service" like Resource in the SDK.
Tests from a mocked lambda environment and requested route with a 3s sleep as follows.
SW_APM_TRANSACTION_NAME: my-cool-txn and AWS_LAMBDA_FUNCTION_NAME: flask-mock-lambda:

traces
response_time metrics

AWS_LAMBDA_FUNCTION_NAME: flask-mock-lambda:

traces
response_time metrics

Please let me know what you think.

Thank you both!


Bug that tries to execute one previous scenario

Steps to reproduce
We have four scenarios running on Firebase TestLab.
However, when executing the latter scenario, we are trying to execute one of the previous scenarios.
Implementation
Currently, I am implementing scenarios with the following configuration

e2e/all_test.dart

"edit credit card"
"remove credit card"
"charge on credit card"
"register credit card".

The contents of those four scenarios are,
In each of them, we run patrolTest.
Finally, we run integration_test on a single file, all_test.dart
patrolTest(...)

Problem
While running the "register credit card" scenario, I am asked to run the previous scenario, "charge on credit card".
As shown in the screenshot.

Hypothesis
I was looking at the logs on Firebase TestLab and found something puzzling.
When I run the first scenario, "edit credit card", I get the following log output
03-03 03:11:36.681:. I/PatrolServer(24844):. PatrolJUnitRunner.runDartTest(e2e.all_test edit credit card): Requested execution
03-03 03:11:36.681:. I/PatrolServer(24844): PatrolAppServiceClient.runDartTest(e2e.all_test edit credit card)
03-03 03:11:36.732: I/flutter(24844):. PatrolAppService.runDartTest(e2e.all_test edit credit card) called
03-03 03:11:36.732: I/flutter(24844):. PatrolAppService: requested execution of test "e2e.all_test edit credit card"
03-03 03:11:36.733: I/flutter(24844):. Patrol (native): configure() started

Now, when we run the second scenario, "remove credit card", we get the following log output
03-03 03:12:27.498: I/PatrolServer(28938):. PatrolJUnitRunner.runDartTest(e2e.all_test remove credit card): Requested execution
03-03 03:12:27.498: I/PatrolServer(28938):. PatrolAppServiceClient.runDartTest(e2e.all_test remove credit card)
03-03 03:12:27.525: I/flutter(28938):. PatrolAppService.runDartTest(e2e.all_test remove credit card) called
03-03 03:12:27.525: I/flutter(28938):. PatrolAppService: registered test "e2e.all_test edit credit card" was not matched by requested test "e2e.all_test remove credit card"
03-03 03:12:27.581: I/flutter(28938):. PatrolBinding: tearDown(): count: 1, results: 1   {edit credit card: success}
03-03 03:12:27.582: I/flutter(28938):. PatrolBinding: finished test e2e.all_test edit credit card, but it was not requested, so its status will not be reported back to the native side
03-03 03:12:27.592: I/flutter(28938): PatrolAppService: registered "e2e.all_test remove credit card"
03-03 03:12:27.592: I/flutter(28938): PatrolAppService: requested execution of test "e2e.all_test remove credit card"
03-03 03:12:27.592: I/flutter(28938): Patrol (native): configure() started

03-03 03:12:27.525: I/flutter(28938): PatrolAppService: registered test "e2e.all_test edit credit card" was not matched by requested test "e2e. all_test remove credit card"

As you can see, the first scenario "edit credit card" is requested in the second scenario "remove credit card" for some reason.
This phenomenon is puzzling!
Is there any solution?
Any information you can provide would be greatly appreciated.
Actual results
The scenario execution should be possible on Firebase TestLab as well as on Firebase TestLab normally.
Logs

Logs
<!-- Replace this line with your logs. Do not remove the backticks! -->

Patrol version
patrol: 2.3.2
Patrol Doctor output

Patrol Doctor output
Patrol CLI version: 2.2.2
Program adb found in /Users/yo/Library/Android/sdk/platform-tools/adb
Env var $ANDROID_HOME set to /Users/yo/.rbenv/shims:/Users/yo/.zplug/repos/zplug/zplug/bin:/Users/yo/.zplug/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/Library/Apple/usr/bin:/Users/yo/fvm/default/bin:/Users/yo/.pub-cache/bin:/Users/yo/Library/Android/sdk/platform-tools:/Users/yo/bin:/Users/yo/Library/Android/sdk
Program xcodebuild found in /usr/bin/xcodebuild
Program ideviceinstaller found in /opt/homebrew/bin/ideviceinstaller

Flutter Doctor output

Flutter Doctor output
[✓] Flutter (Channel stable, 3.13.9, on macOS 14.3.1 23D60 darwin-arm64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] VS Code (version 1.85.2)
[✓] Connected device (2 available)
[✓] Network resources

Same issue here.
I'm testing using patrol for integration tests and when I run patrol test I noticed that if I have tests a, b, c, d. It runs test a, then test a, b, then test a, b, c, then test a,b,c,d.
I'm running on an Android emulator on macos and already enabled to run the test in isolation with clearPackageData in build.gradle.
Any workarounds?
In my case I have 2 files, auth_test and onboarding_test. The first one has one group with 3 patrolWidgetTest methods and the last only one test. I'm using patrol test -d EMULATOR-ID to run all tests.
https://github.com/leancodepl/patrol/assets/65033296/64a93a4a-0006-40f2-a71e-38dd51e10580

You're using a really old version of patrol – 2.3.2. I strongly recommend updating to the latest one.
Re your bug: I remember that this type of problem usually was usually called by not passing nativeAutomation: true to patrolTest() function. In patrol v3 you'd use patrolIntegrationTest() instead.

Can you share your test code?
This looks suspicious:

registered test "e2e.all_test edit credit card" was not matched by requested test "e2e. all_test remove credit card"

I have the same issue with patrol 3.6.1:
I/flutter ( 6494): The Dart VM service is listening on http://<IP_ADDRESS>:45391/3wrqztssBS4=/
I/flutter ( 6494): Patrol (native): NativeAutomatorClient created, port: 8081
I/flutter ( 6494): Patrol (native): initialize() started
I/flutter ( 6494): Patrol (native): initialize() succeeded
I/flutter ( 6494): PatrolBinding: Register Patrol service extensions
I/flutter ( 6494): Patrol (native): NativeAutomatorClient created, port: 8081
I/flutter ( 6494): Patrol (native): NativeAutomatorClient created, port: 8081
I/flutter ( 6494): 00:00 +0: patrol_test_explorer
I/flutter ( 6494): patrol_test_explorer: obtained Dart-side test hierarchy:
I/flutter ( 6494): -- group: ''
I/flutter ( 6494):      -- group: 'Test change notification settings'
I/flutter ( 6494):      -- group: 'Test morning survey'
I/flutter ( 6494):      -- group: 'Test Login and Patient Survey'
I/flutter ( 6494):      -- group: 'Test evening survey'
I/flutter ( 6494):      -- group: 'Test insert survey on different date(morning)'
I/flutter ( 6494):      -- group: 'Test insert survey on different date (evening)'
I/flutter ( 6494):      -- group: 'test privacy notice page'
I/flutter ( 6494):      -- group: 'Test order of surveys in main menu'
I/flutter ( 6494):      -- group: 'Test create of second surveys on the same day'
I/flutter ( 6494):      -- group: 'Test app reset'
I/flutter ( 6494):      -- group: 'Test reset SubmissionTarget'
I/flutter ( 6494):      -- group: 'Test change patient survey'
I/flutter ( 6494):      -- group: 'Test send email note in main menu'
I/flutter ( 6494):      -- group: 'Test send email'
I/flutter ( 6494):      -- group: 'Test local data export'
I/flutter ( 6494):      -- group: 'Test send feedback mail'
I/flutter ( 6494):      -- group: 'Test non existing QR-Code Id'
I/flutter ( 6494):      -- group: 'Test doc has no valid license'
I/flutter ( 6494): PatrolAppService started, address: <IP_ADDRESS>, host: <IP_ADDRESS>, port: 8082
I/flutter ( 6494): Patrol (native): markPatrolAppServiceReady() started
I/flutter ( 6494): 00:00 +1: golden_integration_test Test change notification settings
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test change notification settings"
I/flutter ( 6494): Patrol (native): markPatrolAppServiceReady() succeeded
I/flutter ( 6494): PatrolAppService.listDartTests() called
I/flutter ( 6494): 2024-03-11T15:19:07.385656  0:00:00.005585 GET     [200] /listDartTests
I/flutter ( 6494): PatrolAppService.runDartTest(golden_integration_test Test change notification settings) called
I/flutter ( 6494): PatrolAppService: requested execution of test "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolAppService: requested execution of test "golden_integration_test Test change notification settings"
I/flutter ( 6494): Patrol (native): configure() started
I/flutter ( 6494): Patrol (native): configure() succeeded
---- the relevant log after the first test finishes: ----
I/flutter ( 6494): PatrolBinding: tearDown(): count: 1, results: {Test change notification settings: success}
I/flutter ( 6494): PatrolBinding: finished test golden_integration_test Test change notification settings. Will report its status back to the native side
I/flutter ( 6494): PatrolBinding: tearDown(): test "Test change notification settings" in group "golden_integration_test Test change notification settings", passed: true
I/flutter ( 6494): PatrolAppService.markDartTestAsCompleted(): golden_integration_test Test change notification settings
I/flutter ( 6494): 2024-03-11T15:19:07.424441  0:01:21.196631 POST    [200] /runDartTest
I/flutter ( 6494): 01:21 +2: golden_integration_test Test morning survey
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test morning survey"
I/flutter ( 6494): PatrolAppService: registered test "golden_integration_test Test morning survey" was not matched by requested test "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test morning survey"
I/flutter ( 6494): PatrolAppService: registered test "golden_integration_test Test morning survey" was not matched by requested test "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolBinding: tearDown(): count: 2, results: {Test change notification settings: success, Test morning survey: success}
I/flutter ( 6494): PatrolBinding: finished test golden_integration_test Test morning survey, but it was not requested, so its status will not be reported back to the native side
I/flutter ( 6494): 01:21 +3: golden_integration_test Test Login and Patient Survey
I/flutter ( 6494): [ERROR] 2024-03-11 15:20:28.626626   0:00:00.002403  POST    /runDartTest
I/flutter ( 6494): 'package:patrol/src/native/patrol_app_service.dart': Failed assertion: line 147 pos 12: '_testExecutionCompleted.isCompleted == false': is not true.
I/flutter ( 6494): dart:core                                                                 _AssertionError._throwNew
I/flutter ( 6494): package:patrol/src/native/patrol_app_service.dart 147:12                  PatrolAppService.runDartTest
I/flutter ( 6494): package:patrol/src/native/contracts/patrol_app_service_server.dart 27:28  PatrolAppServiceServer.handle
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test Login and Patient Survey"
I/flutter ( 6494): PatrolAppService: registered test "golden_integration_test Test Login and Patient Survey" was not matched by requested test "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolAppService: registered "golden_integration_test Test Login and Patient Survey"
I/flutter ( 6494): PatrolAppService: registered test "golden_integration_test Test Login and Patient Survey" was not matched by requested test "golden_integration_test Test change notification settings"
I/flutter ( 6494): PatrolBinding: tearDown(): count: 3, results: {Test change notification settings: success, Test morning survey: success, Test Login and Patient Survey: success}
I/flutter ( 6494): PatrolBinding: finished test golden_integration_test Test Login and Patient Survey, but it was not requested, so its status will not be reported back to the native side
I/flutter ( 6494): 01:21 +4: golden_integration_test Test evening survey

OK I dug a bit deeper. I looks like there is something strange happening to the test groups.
In my original code, I had no groups around tests and the resulted log was:
I/flutter ( 6494): -- group: ''
I/flutter ( 6494):      -- group: 'Test change notification settings'
I/flutter ( 6494):      -- group: 'Test morning survey'
I/flutter ( 6494):      -- group: 'Test Login and Patient Survey'
I/flutter ( 6494):      -- group: 'Test evening survey'
I/flutter ( 6494):      -- group: 'Test insert survey on different date(morning)'
I/flutter ( 6494):      -- group: 'Test insert survey on different date (evening)'
I/flutter ( 6494):      -- group: 'test privacy notice page'
I/flutter ( 6494):      -- group: 'Test order of surveys in main menu'
I/flutter ( 6494):      -- group: 'Test create of second surveys on the same day'
I/flutter ( 6494):      -- group: 'Test app reset'
I/flutter ( 6494):      -- group: 'Test reset SubmissionTarget'
I/flutter ( 6494):      -- group: 'Test change patient survey'
I/flutter ( 6494):      -- group: 'Test send email note in main menu'
I/flutter ( 6494):      -- group: 'Test send email'
I/flutter ( 6494):      -- group: 'Test local data export'
I/flutter ( 6494):      -- group: 'Test send feedback mail'
I/flutter ( 6494):      -- group: 'Test non existing QR-Code Id'
I/flutter ( 6494):      -- group: 'Test doc has no valid license'

with a group wraped around all patrolTestcalls, named after the test file:
I/flutter (13187): patrol_test_explorer: obtained Dart-side test hierarchy:
I/flutter (13187): -- group: ''
I/flutter (13187):      -- group: 'bla_test.dart'
I/flutter (13187):           -- test: 'Test morning survey'
I/flutter (13187):      -- group: 'golden tests'
I/flutter (13187):           -- test: 'Test Login and Patient Survey'
I/flutter (13187):           -- test: 'Test change notification settings'
I/flutter (13187):           -- test: 'Test morning survey'
I/flutter (13187):           -- test: 'Test evening survey'
I/flutter (13187):           -- test: 'Test insert survey on different date(morning)'
I/flutter (13187):           -- test: 'Test insert survey on different date (evening)'
I/flutter (13187):           -- test: 'test privacy notice page'
I/flutter (13187):           -- test: 'Test order of surveys in main menu'
I/flutter (13187):           -- test: 'Test create of second surveys on the same day'
I/flutter (13187):           -- test: 'Test app reset'
I/flutter (13187):           -- test: 'Test reset SubmissionTarget'
I/flutter (13187):           -- test: 'Test change patient survey'
I/flutter (13187):           -- test: 'Test send email note in main menu'
I/flutter (13187):           -- test: 'Test send email'
I/flutter (13187):           -- test: 'Test local data export'
I/flutter (13187):           -- test: 'Test send feedback mail'
I/flutter (13187):           -- test: 'Test non existing QR-Code Id'
I/flutter (13187):           -- test: 'Test doc has no valid license'

with the test_bundle.dart containing:
  // START: GENERATED TEST GROUPS
  group('bla_test', bla_test.main);
  group('golden_integration_test', golden_integration_test.main);
  // END: GENERATED TEST GROUPS

I do not unterstand why this groups are missing and where the root group: '' comes from in both cases.

I found my issue: I used runApp to start my application.
patrolTest('Test morning survey', ($) async {
    runApp(   // <<< runApp can not be called multiple times
      app.initMultiRepoProviders(
        child: MainApp(),
      ),
    );
...

If I rewrite it with pumpWidgetAndSettle everything works
  patrolTest('Test morning survey', ($) async {
  await $.pumpWidgetAndSettle(
    app.initMultiRepoProviders(
      child: MainApp(),
    ),
  );

@Yokoi-K do you use runApp?

Sorry for the late reply.
Yes, I'm using runApp.
I gave up on installing patrol due to other factors,
but perhaps if I don't use runApp, I can avoid this problem.

Closing as it looks like resolved. Feel free to reopen or create a new issue


Improve documentation of public methods

This PR goes some way towards improving the documentation of public methods as discussed in #197.

bors r+


[BEAM-8685] sdks/java: google_auth_version 0.19.0

Upgrading the following two libraries to 0.19.0.
        google_auth_library_credentials             : "com.google.auth:google-auth-library-credentials:$google_auth_version",
        google_auth_library_oauth2_http             : "com.google.auth:google-auth-library-oauth2-http:$google_auth_version",

This is preparation for BEAM-8676 (gax-grpc upgrade); com.google.api gax:1.52.0 requires com.google.auth:google-auth-library-oauth2-http:0.19.0 or higher.
Linkage Check
beam-sdks-java-extensions-google-cloud-platform-core

before: https://gist.github.com/suztomo/aec41839abec689eb379fd9c70575325
after: https://gist.github.com/suztomo/be1388f48fb13c75813992cab9400067

Diff:
suztomo@suxtomo24:~/beam6$ diff /tmp/linkagecheck-beam-sdks-java-extensions-google-cloud-platform-core-785609f2 /tmp/linkagecheck-beam-sdks-java-extensions-google-cloud-platform-core-ea012f73
184c184
< (guava-20.0.jar) com.google.common.collect.ImmutableList's method toImmutableList() is not found;
---
> (guava-28.1-android.jar) com.google.common.collect.ImmutableList's method toImmutableList() is not found;

The transitive dependency of Guava in beam-sdks-java-extensions-google-cloud-platform-core got higher version (from 20.0 to 28.1-android) but this missing method has been there even for the old version 20.0.
beam-runners-google-cloud-dataflow-java

before: https://gist.github.com/suztomo/8917ae65a8aa90940b6c090b83d04c0a
after: https://gist.github.com/suztomo/2c0c264f55e44ae6ced36cf6cc4a1114 (same as above)

beam-examples-kotlin

before: https://gist.github.com/suztomo/fe6008ab53694c82c896f9d6c31e9806
after: https://gist.github.com/suztomo/66c4494daab25365f0407a156f2a311d (same as above)

beam-examples-java

before: https://gist.github.com/suztomo/afd80975287007db7800e869c6cb2c54
after: https://gist.github.com/suztomo/64f9ae4aac13c9c1add0a0c73ac17b17 (same as above)

beam-sdks-java-extensions-sql-datacatalog
Linkage Checker fails to resolve dependencies (Bug: https://github.com/GoogleCloudPlatform/cloud-opensource-java/issues/1087 ).

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Choose reviewer(s) and mention them in a comment (R: @username).
[x] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[x] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

 Python build failed. https://builds.apache.org/job/beam_PreCommit_Python_Commit/10669/testReport/junit/(root)/(empty)/apache_beam_examples_streaming_wordcount_it_test/ says:
E     File "/home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_Commit/src/sdks/python/test-suites/tox/py2/build/srcs/sdks/python/target/.tox-py27-cython-pytest/py27-cython-pytest/local/lib/python2.7/site-packages/hamcrest/library/object/hasproperty.py", line 174
E       ),
E       ^
E   SyntaxError: invalid syntax

@iemejia Thank you.

Run Python PreCommit

All green for Java; only Python precommit (which I believe was caused by their flakiness) checks failed.
@lukecwik Would you review and merge this?

R: @lukecwik

Run Python PreCommit

Run Python2_PVR_Flink PreCommit

Waiting on tests before merging.

Run Python PreCommit

21 successful checks


Fix block validation to run outside of invoke goroutines

Moving block validation to run outside of invokes goroutine.
Signed-off-by: Surya Lanka<EMAIL_ADDRESS>

@Mergifyio backport release-2.2


xxHash: 0.8.1 -> 0.8.2

Changes: https://github.com/Cyan4973/xxHash/releases/tag/v0.8.2
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

the darwin test fails :/

You mean the ofborg test? That one is an llvm build timeout failure:

error: building of '/nix/store/496nx49a86dqj7nbr52pj83s54187qkc-llvm-11.1.0.drv!dev' from .drv file timed out after 3600 seconds

In my experience it fails most of the time when any llvm dependency is touched.


Add twitter integration

Is it possible to add Twitter integration in Subliminal to post on twitter about newly downloaded subs?

Subliminal is a multi-threaded subtitle search/download library with simple API regrouping multiple subtitles providers.
It is meant to be used with subliminal CLI or integrated within an application that can provide extra features such as the one you want.
As you can see it is out of subliminal's scope

Fair enough, can be closed.


Inbox list for teams desktop

This is a first pass at the better inbox list for teams. There's 2 modes (expanded or not) which shows all the simple teams or a truncated list.
If the big teams are off screen there's a button on the bottom you can click to collapse the simple teams
The icon in the expanded state is the keybase icon but thats temp until the real asset exist
(cc: @cecileboucheron  we don't have the up arrow in the iconfont)
I also added glamorous to ./styles so we can pull it in correctly from native/desktop
There's some TODO placeholder stuff for mobile. As-is it works like it did before but features of this pr aren't there in this PR (except the filtering logic)

The commits 282d04896af7...4b003f787284 introduce visual changes on linux. :mag_right: 2 changed

Changed: Chat_Inbox-You_Rekey_Selected (before) (after)

Changed: Chat_Inbox-You_Rekey (before) (after)

@keybase/react-hackers this is ready. i'm starting to mobile side as a branch off of this now

The commits 282d04896af7...4ca38e43e965 introduce visual changes on linux. :mag_right: 2 changed

Changed: Chat_Inbox-You_Rekey_Selected (before) (after)

Changed: Chat_Inbox-You_Rekey (before) (after)

The commits 282d04896af7...44ecf0565862 introduce visual changes on linux. :mag_right: 2 changed

Changed: Chat_Inbox-You_Rekey_Selected (before) (after)

Changed: Chat_Inbox-You_Rekey (before) (after)

@keybase/react-hackers bump open for 2 days

I also would like to see a story that looks more like what you see for a real user (with several personal convs and several channels and teams) so you can see the floating tab stuff


Indexing a Geoposition field

Hi,
This is more a question than an issue. I use geoposition to store POI. Then I want to find the POI located near the user. I want to use Postgres earthdistance and cube extensions.
I found this module on github which manages the two:
https://github.com/jneight/django-earthdistance
However for performance reasons it is highly recommended to create an index on the lat and long fields, which I cannot do because the geoposition field is a comma separated string value.
Is there an easy work-around? A hook to save the lat and long to distinct indexable fields on creation / modification?
Or put another way, is it possible to specify the way we want the data to be saved in the database, as two separate decimal fields or as a single comma separated string? That would be a great abstraction!

Did you get any workaround yet ?

Unfortunately no, the current work-around it to not use django-geoposition and generate the two long and lat fields separately.


Update ChecTagGroup button style

Looks like this:

New designs look like this:

We also need to reduce the text size from 15px to 12px

Did https://github.com/chec/ui-library/pull/348 not cover it? It should've

Nope, unless the designs #348 was based on were different to the blog page


Cleanup Logging for python functions

Motivation
Move a lot of logging from .info to .debug.
Also cleaned up the import logging exceptions.
Modifications
Describe the modifications you've done.
Result
After your change, what will change.

rerun integration tests

rerun integration tests


Diancite unbanned

https://twitter.com/serebiinet/status/895524354917662721 (Latest Serebii Update)
Defaulted the format to OU

The NPM build is failing because of an issue with autoChoose

👍


Question

Thanks for the great write-up!
Question: Does using tailwind with styled components mean that there is no need to use purge-css?
And an aside - I tried adding this in as a blog comment but I kept getting the 'Log-in' button (even after logging in with Github). Just an FYI in case it helps. Let me know if a gif would be helpful.

I guess you're asking about the tailwind with styled components setup, which I demoed here.
Yes, in that case you wouldn't need purgecss, as that is handled by the macro setup.
Thanks for the info about the comments, sometimes the login server needs quite some time to wake up. You can just add a comment in GitHub here as  well.
Glad it helped, if you have further questions just ask.

Thanks for the quick response!


Fix the controller runtime issue caused by merge conflict.

Thanks for your review, Kurt, Konstantin! :-)


Build failure when cross-compiling for FreeBSD

Using xz2 in a FreeBSD cross-build environment results in the following error:
https://travis-ci.org/rust-lang-nursery/rustup.rs/jobs/231443067#L1088

Looks like there's a new release of xz, 5.2.3. with the news of:

Use of external SHA-256 code is now disabled by default.
It can still be enabled by passing --enable-external-sha256
to configure.

Looks like that's exactly what we want! I'll test it out.


Adding data extraction and regression for MIMCAP and updating Makefile with that for GF180MCU models

Adding data extraction and regression for MIMCAP and updating Makefile with that for GF180MCU models

@atorkmabrains Ready to review


feat(vscode): Introduce support for Static Web Apps

This adds support so users can create Static Web Apps alongside their Logic Apps when creating through 'Create New Logic App Workspace' command. I've changed how the user is prompted by the wizard, how files are created, and I've added calls to deploy the user's logic app after initialization and then call the Static Web Apps extension.
Some features of the original extension are not compatible at the moment.
Please see more details in my Offboarding document .

@microsoft-github-policy-service agree [company="Microsoft"]

@microsoft-github-policy-service agree

@swghimire @ccastrotrejo

Updated the base branch to the feature branch dev/StaticWebApps as we try to keep everything on main branch ready to ship to prod

Closing as stale, please reopen when ready to review