Unable to use library with Vue 3

""useTemplateRef" is not exported by "node_modules/vue/dist/vue.runtime.esm-bundler.js", imported by "node_modules/vue-zoomable/dist/vue-zoomable.mjs".
On installation of vue-zoomable js library it throws above error.
It seems as if 'useTemplateRef' is not supported by my project which is used by library.

@vishwa-mehta-zygal  please use latest version v1.2.4


[BUG] Country picklist has to have United States

Describe the bug
If you adjust the name 'United States' in the packaged global value set for country to another name (i.e. 'United States of America') code breaks on the registration page where 'United States' is defaulted as the country picklist value. In a packaged state this will make it appear that the registration completes, but no record is recorded for registration.
To Reproduce
Steps to reproduce the behavior:

Go to Setup ->Picklist Value Sets->summit__Country (will display as Country but is namespaced)
Edit 'United States' to 'United States of America'
Register for any event, registration will not progress off of registration page or will progress to confirmation page if only one page.
No registration will be recorded

Additional context
'United States' is hardcoded on registration page class

Included in beta release <IP_ADDRESS>

Included in production release <IP_ADDRESS>


Won't let me compile??

Anyone else getting this? It won't let me compile this I tried using sudo and without sudo and it's still not working. It just stays like for awhile. I can use the official AimTux and use cmake or make it works just fine. Anyone know a fix?

Hey, use ./build instead of "sudo ./build", should work then.

Everything works fine, you have specific problems

i tried with and without sudo and deleted and reinstalled the files and atill didnt work

There really is a problem with cmake

Since a few commits it happened

I don't know how I fixed it but today it worked after checking the gcc version.
Don't think that would do anything to it so probably just try over and over again?

After trying the first time, a retry makes it work.

@Wando1423 Mauladen Whatever you did you fixed it but removing the script thingy. Now it works like perfectly.


tanh at the end of the generator?

Thanks for sharing your nice work.
Your code has tanh layer at the end of the generator while the paper says sigmoid.
When you plot the voxels, threshold is set 0.5 while tanh outputs [-1,1].
Could you explain why you are using tanh and threshold is set 0.5?

If I had to give a reasonable guess I would say step number 1 from ganhacks?
Possibly I am not sure.
https://github.com/soumith/ganhacks


Examples with Data Passing

Hi!
There is an example of your website (screenshot below) of a flow where data is getting passed from one node to another when connected. I can't seem to find the source code for this. Could anyone point me in the direction of where I could see this?

Hi @rahulbrahmal
you can find the source code in the react-flow-docs repo: https://github.com/wbkd/react-flow-docs/tree/main/src/components/HeroFlow

Thank you! Sorry I didn't see that!

Thank you! Sorry I didn't see that!

The example on the homepage doesn't actually use the connections of nodes to pass data, just useState. (You can test this by deleting one of the edges, and the components still change the output) Are there any examples of actual data passing between nodes? For example, node A has some store variable set to x that is controlled by a slider, than can be accessed by node B when connected via an edge.

@eiiot i managed to setup a flow just like you said. i have used rxjs for data subscription/streaming
it works but have one critical issue: race condition, because node data were set in listeners by calling setNodes, some updates would overwrite the others so that some nodes remain unchanged

React Flow 12 (alpha already launched) has some helpers for handling data flow: useHandleConnections, useNodesData and updateNodeData. setNodes, updateNode etc is batched in React Flow 12.


Python support in future versions

Starting an issue to discuss where to go next with Python versions and StackStorm, and how to distribute.
Current StackStorm distributes O/S specific packages with a specific StackStorm version. Currently:

python 3.6 Ubuntu 18
python 3.8 Ubuntu 20
python 3.6 EL 7
python 3.8 EL 8

Python 3.9 and Python 3.10 are available. Python 3.6 has gone EOL (however RHEL are supporting it until 2029).
EL 9 is available with python  3.9 and U22 is available with python ???
What python versions do we want to support?
Do we still want to provide O/S specific packages tied to a particular python, or want to move to a distribution mechanism that doesn't restrict to a prescribed set of python/OS combinations.
Would welcome opinions on:

Do we continue to provide a package distribution tied to particular O/S or want to distribute at different level?
What python versions do we want to support in next release, and perhaps longer term?
Even if we distribute at lower level, do we still define a set of OS/python combinations that we then run through a full install at? (The distribution would probably support others, but we may want to have a subset that we actually run through)
If we do run through CI on OS/python combinations - what combination do we want to go forward and support?
If we distribute at a lower layer what is the preferred way of doing so?
If we distribute at a lower layer do we still provide all 4 current non-containerised installers: manual, bash installer, ansible and puppet?

Popping in some notes from Slack...
Just to throw another spanner into the python release discussions. RH 8 only supports python 3.8 until May 2023. Up to 2024 for python 3.9 and 2029 for python 3.6 - https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle#rhel8_application_streams. RH 9 I believe have python 3.9.
So our upgrade from python 3.6->3.8 on RH, meant we moved to python 3.8 which python support until Oct 2024, but RH only support up to 2023, and actually support python 3.6 for longer.
I'm not sure what this means for Rocky 8, are they following the python or RH supported python versions?
Maybe, adds another argument for not doing the package generations? And perhaps a reason to keep python 3.6, and add 3.9 to the mix...
Just wondering if next release we could add support for python 3.9 but do that without a package build. Even starting with say running unit/integration tests on python 3.9, then publishing python 3.9 wheel and manual instructions.  (By manual I mean producing equivalent of our manual instructions on site, but with the st2 package install replaced with a install of wheel etc - but hopefully we can script up much of that).  If we have that process working, we can then work on putting that into installers...
Or alternatively if we published say the 3.6 or 3.8 wheel that gets generated as part of the current packaging, could we define instructions/scripts on how to install with the current wheel.
The wheel currently
generated by the ST2 packaging process that we throw away is labelled as "any" O/S - but not sure if that really is true and perhaps manylinux would be better....
I'm assuming (but not verified) that the wheel itself at that stage isn't O/S specific). But taking one of the existing python versions and working on it allows to verify the process knowing that it should work on all our current target O/S.
And the wheel and 3.9 could be done in parallel, don't block each other.
Or I suspect someone has a better plan. e.g do we benefit from wheel rather than source distribution?
But at least wanted to give a heads up on the early retirement of python 3.8 on RHEL, and that 3.9 is probably needed for any RH users from mid next year.

If we are going to add Python 3.9, my gut feeling is the effort required to add 3.7 and 3.10 would be minimal (at least worth investigating the difficulty).

@nzlosh  Can we add python 3.9 and Centos 9 to your matrix?
We also do have 3.8 on Centos 8 - its just only until mid 2023.
My gut also is that 3.9 and 3.10 need adding. I'm just wondering if 3.7 is worth it. More on the basis of 3rd party libraries we pull in, as we'll be restricted to 3.7+ libraries... However, I'm not sure that really is an issue for us - as  most of the newer 3rd party versions seem to be for python 3.7+.
However, that also brings into question as to when to drop 3.6. Dropping 3.6 allows us to move up versions, but 3.7 doesn't seem to restrict us. But looking at matrix and our 2 O/S previous idea of support, dropping 3.6 should mean adding either 3.7 + 3.9, or 3.9 and 3.10, or all 3.
If we have the self check running on the github actions, and we manage to do the install without packages, then it makes it probably easier to verify multiple python versions...

Added CentOS 9 to matrix.
You're right, Python 3.7 may not be worth adding since it's going to be EOL in a years time.

Release
Released
Security Support
Latest

3.1
8 months ago (04 Oct 2021)
Ends in 4 years (04 Oct 2026)
3.10.5

3.9
1 year and 8 months ago (05 Oct 2020)
Ends in 3 years (05 Oct 2025)
3.9.13

3.8
2 years and 8 months ago (14 Oct 2019)
Ends in 2 years and 4 months (14 Oct 2024)
3.8.13

3.7
3 years and 11 months ago (26 Jun 2018)
Ends in 1 year (27 Jun 2023)
3.7.13

Table sourced from https://endoflife.date/python
Regarding python 3.6 support, I seem to recall we already hit problems where upstream module dependencies have dropped Python 3.6 because it's EOL and we have to pin to older versions.  This means St2 will miss bug and security fixes the longer the pinning is held.  Our ultimate dependency hell destination will be when the pinned module causes a conflict in a cross dependency that blocks development completely.
I think we need to re-evaluate if it still makes sense for an open source project to limit itself to 2 distributions.  I feel like this decision is a relic of StackStorm corporate days where support contracts were easier to respect on a constrained set of distributions.

I was more thinking we want to support at least 2, rather than limiting to just 2!

If we drop 3.6 and add 3.9 now we'll get functionality on 5 Linux distributions.
Downside, only one Ubuntu version...

Related - perhaps we should also update the st2client binary distribution - its python2.7 - https://pypi.org/project/st2client/#files

If Python 3.7 turns out to be straight forward to integration with 3.9 and 3.10 support, it would mean we can continue to support U1804 without keeping py3.6 support.
Poetry could be a good tool to help manage StackStorm dependencies. They way you can express module dependency versions in relation to python version would invaluable when attempting to manage dependencies across multiple versions of Python.

For building wheels: I have a working / mostly-complete setup that can churn out wheels in my pants experiment. And I'd like some feedback.
Test procedure:

Clone and checkout the pants branch of the st2sandbox/st2 repo.
https://github.com/st2sandbox/st2/tree/pants/
In the root of your checkout, run these (:: means everything. you can replace it with a path to a file or directory):

./pants (to make sure bootstrapping pants works on your machine)
./pants help (a key resource for learning about pants)
./pants package st2common (to build only the st2common wheel and sdist and put it under dist/)
./pants package :: (to build all the wheels and sdists and put them under dist/)
./pants lint --lint-only=black :: (to lint with black and report if it would change anything across the repo)
./pants lint --lint-only=black :: (to feel the power of pants' fine-grained caching)
./pants lint :: (to lint everything - almost all of the lint targets from the Makefile  have been implemented)
./pants lint :: (again to show how pants has cached the results. Since no files have changed, the old results are still valid)
./pants fmt :: (this one runs black to actually reformat files, and regenerate files like the api spec, the metadata schemas, and st2.conf.sample. And, because pants knows about dependencies, it will only regenerate if any of the python files involved in generating those have changed.)
./pants lint fmt :: (you can also add multiple goals, and pants gladly runs all the tools intelligently - ie it will only run black once which covers both lint and fmt, instead of once for each goal)
./pants export :: (to create virtualenvs under dist/virtualenvs - note how every tool gets its own venv so their deps don't mix/interfere with the st2 deps.)

Check out the main lockfile at lockfiles/st2. Every dependency, including transient dependencies, is locked to a particular version! So, CI and local results should not drift any more! To regenerate the lockfile run:

./pants generate-lockfiles --resolve=st2
Also, this is using the latest pip resolver

Now that pants is managing dependencies, some of the Makefile's dependency-related lint targets aren't needed anymore. That leaves only two lint tasks that I have not converted from Makefile over to pants:

rst checking targets (tools: rst-check, readme_renderer, rst-lint)
st2client-install-check: this should be reimplemented as a test as it is not really a lint task. With pants, we can make a test depend on the generated artifacts (wheels in our case) so it can install them and make sure the wheel is working correctly.

I would like to see us publish the wheels to pypi (for a variety of reasons, including easier pack dev environment setup). We can then use those wheels when we build the deb/rpm files to maintain all the current infrastructure as is, at least in the short/mid term.
Long term dropping deb/rpm support is a possibility, but I think publishing the wheels will go a long way towards allowing people to test StackStorm in more environments and see what python/os combos work and which don't.

Here is a CI run where pants is handling all of the lint tasks: https://github.com/st2sandbox/st2/actions/runs/2543416608

udatetime doesn't build on python 3.9. See https://github.com/StackStorm/st2/issues/5346 where it was discussed moving to an alternative https://github.com/closeio/ciso8601

Part of supporting newer versions of Python is the projects dependencies. I took a look at  MongoDB which has its own (release life cycle)[https://www.mongodb.com/support-policy/lifecycles].  We test against MongoDB v4.x but v5 and v6 has been released. The last v4 minor release v4.4 is end of life next year and there needs to be code base updates to support the new major versions.
Looking at the pymongoengine matrix it looks like a move from pymongo==3.11.3 to pymongo==4.3 will give support from MongoDB 3.6 to 6.0 running on Python 3.7 to 3.11
A quick check of the documentation vs the code base shows the following matches:
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#renamed-uri-options
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#tz-aware-defaults-to-false
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#database-collection-names-is-removed
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#collection-save-is-removed
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#collection-count-and-cursor-count-is-removed (perhaps, need to look closer at code base)
I don't have much more time to look at this for the moment.  So I'll just put this here for awareness.

Working on U22.04 support, I've discovered that mongodb does not provided official packages for mongodb-server other than v6.0.  If we want to officially support u22.04 in favour of u18.04, supprting mongodb v6 will be hard requirement.


"domain" mode

what's wrong with domain mode?
if i set this:
class {'::wildfly':
version           => '8.2.0',      install_source    => 'http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz',      java_home         => '/opt/jdk1.7.0_79',      group             => 'wildfly',      user              => 'wildfly',      dirname           => '/opt/wildfly',
mode              => 'domain',
config            => 'domain.xml',
java_xmx          => '512m',      java_xms          => '256m',      java_maxpermsize  => '256m',      users_mgmt        => { 'wildfly' => { username => 'admin', password => '1'}},
}
i get that:
==> web1: Notice: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]/ensure: download archive from http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz to /tmp/wildfly-8.2.0.Final.tar.gz and extracted in /opt/wildfly with cleanup
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
==> web1: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-https]/Augeas[management-https]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[http]/Augeas[http]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Interfaces[public]/Augeas[public]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Interfaces[management]/Augeas[management]: Could not evaluate: Save failed with return code false, see debug
==> web1: Notice: /Stage[main]/Wildfly::Setup/Wildfly::Config::Add_mgmt_user[wildfly]/Wildfly::Config::Add_user[wildfly]/File_line[admin:ManagementRealm]/ensure: created
==> web1: Notice: /Stage[main]/Profile::Maven/Exec[export MVN_PATH]/returns: executed successfully
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[https]/Augeas[https]: Could not evaluate: Save failed with return code false, see debug

@SanSan- Can you post output with --debug execution? I've seen augeas failing due to missing files...

Does it help? It's look like the same output as usual.
DEBUG ssh: stdout: Notice: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]/ensure: download archive from http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz to /tmp/wildfly-8.2.0.Final.tar.gz and extracted in /opt/wildfly with cleanup
INFO interface: info: Notice: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]/ensure: download archive from http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz to /tmp/wildfly-8.2.0.Final.tar.gz and extracted in /opt/wildfly with cleanup
INFO interface: info: ==> web1: Notice: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]/ensure: download archive from http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz to /tmp/wildfly-8.2.0.Final.tar.gz and extracted in /opt/wildfly with cleanup
==> web1: Notice: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]/ensure: download archive from http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz to /tmp/wildfly-8.2.0.Final.tar.gz and extracted in /opt/wildfly with cleanup
DEBUG ssh: stdout:
DEBUG ssh: stderr: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
INFO interface: info: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
INFO interface: info: ==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
DEBUG ssh: stderr:
DEBUG ssh: stdout: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
INFO interface: info: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
INFO interface: info: ==> web1: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
==> web1: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
DEBUG ssh: stdout:
DEBUG ssh: stderr: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug
INFO interface: info: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug
INFO interface: info: ==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug
DEBUG ssh: stderr:

Are you using debian, one time I had to do some tricks to update augeas ( I think you need version > 1 )

i'm using centos 6.5 on vm.
This is output with --debug^
==> web1: Debug: /Stage[main]/Wildfly::Install/Archive[/tmp/wildfly-8.2.0.Final.tar.gz]: The container Class[Wildfly::Install] will propagate my refresh event
==> web1: Debug: Class[Wildfly::Install]: The container Stage[main] will propagate my refresh event
==> web1: Debug: Augeasajp: Opening augeas with root /, lens path , flags 64
==> web1: Debug: Augeasajp: Augeas version 1.0.0 is installed
==> web1: Debug: Augeasajp: Will attempt to save and only run if files changed
==> web1: Debug: Augeasajp: sending command 'set' with params ["/files/opt/wildfly/domain/configuration/domain.xml/server/socket-binding-group/socket-binding[#attribute/name='ajp']/#attribute/port", "${jboss.ajp.port:8009}"]
==> web1: Debug: Augeasajp: Put failed on one or more files, output from /augeas//error:
==> web1: Debug: Augeasajp: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error = put_failed
==> web1: Debug: Augeasajp: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/path = /files/opt/wildfly/domain/configuration/domain.xml
==> web1: Debug: Augeasajp: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/lens = /usr/share/augeas/lenses/dist/xml.aug:153.10-155.60:
==> web1: Debug: Augeasajp: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/message = Failed to match
==> web1:     ({ /#declaration/ } | { /#comment/ = /([^\001-\004-]|-[^\001-\004-])/ } | { /!DOCTYPE/ = /[A-Za-z][.0-9A-Z_a-z-]/ } | { /#pi/ })(<<rec:{ /([:A-Z_a-z][.0-:A-Z_a-z-])/ }>> | { /[:A-Z_a-z][.0-:A-Z_a-z-]/ = /#empty/ })({ /#comment/ = /([^\001-\004-]|-[^\001-\004-])/ } | { /#pi/ })*
==> web1:   with tree
==> web1:     { "#declaration" } { "domain" } { "server" }
==> web1: Debug: Augeasajp: Closed the augeas connection
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[ajp]/Augeas[ajp]: Could not evaluate: Save failed with return code false, see debug
==> web1: Debug: Execreplace memory parameters: Executing check 'grep '-Xms256m -Xmx512m -XX:MaxPermSize=256m' /opt/wildfly/bin/domain.conf'
==> web1: Debug: Executing 'grep '-Xms256m -Xmx512m -XX:MaxPermSize=256m' /opt/wildfly/bin/domain.conf'
==> web1: Debug: Execreplace memory parameters: Executing 'sed -i -e's/-Xms.m -Xmx.m -XX:MaxPermSize=.m/-Xms256m -Xmx512m -XX:MaxPermSize=256m/g' /opt/wildfly/bin/domain.conf'
==> web1: Debug: Executing 'sed -i -e's/-Xms.m -Xmx.m -XX:MaxPermSize=.m/-Xms256m -Xmx512m -XX:MaxPermSize=256m/g' /opt/wildfly/bin/domain.conf'
==> web1: Notice: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]/returns: executed successfully
==> web1:
==> web1: Debug: /Stage[main]/Wildfly::Setup/Exec[replace memory parameters]: The container Class[Wildfly::Setup] will propagate my refresh event
==> web1: Debug: Augeasmanagement-http: Opening augeas with root /, lens path , flags 64
==> web1: Debug: Augeasmanagement-http: Augeas version 1.0.0 is installed
==> web1: Debug: Augeasmanagement-http: Will attempt to save and only run if files changed
==> web1: Debug: Augeasmanagement-http: sending command 'set' with params ["/files/opt/wildfly/domain/configuration/domain.xml/server/socket-binding-group/socket-binding[#attribute/name='management-http']/#attribute/port", "${jboss.management.http.port:9990}"]
==> web1: Debug: Augeasmanagement-http: Put failed on one or more files, output from /augeas//error:
==> web1: Debug: Augeasmanagement-http: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error = put_failed
==> web1: Debug: Augeasmanagement-http: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/path = /files/opt/wildfly/domain/configuration/domain.xml
==> web1: Debug: Augeasmanagement-http: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/lens = /usr/share/augeas/lenses/dist/xml.aug:153.10-155.60:
==> web1: Debug: Augeasmanagement-http: /augeas/files/opt/wildfly/domain/configuration/domain.xml/error/message = Failed to match
==> web1:     ({ /#declaration/ } | { /#comment/ = /([^\001-\004-]|-[^\001-\004-])/ } | { /!DOCTYPE/ = /[A-Za-z][.0-9A-Z_a-z-]/ } | { /#pi/ })(<<rec:{ /([:A-Z_a-z][.0-:A-Z_a-z-])/ }>> | { /[:A-Z_a-z][.0-:A-Z_a-z-]/ = /#empty/ })({ /#comment/ = /([^\001-\004-]|-[^\001-\004-])/ } | { /#pi/ })*
==> web1:   with tree
==> web1:     { "#declaration" } { "domain" } { "server" }
==> web1: Debug: Augeasmanagement-http: Closed the augeas connection
==> web1: Error: /Stage[main]/Wildfly::Setup/Wildfly::Config::Socket_binding[management-http]/Augeas[management-http]: Could not evaluate: Save failed with return code false, see debug

@SanSan- Thank you.
I got the error. domain.xml root element is domain, and standalone.xml root element is server.
We'll need a case statement in:
https://github.com/biemond/biemond-wildfly/blob/master/manifests/config/interfaces.pp
https://github.com/biemond/biemond-wildfly/blob/master/manifests/config/socket_binding.pp

@SanSan- Domain mode socket-binding management is way more complex than I foresee. I'll prepare a PR that limits socket binding configuration for standalone mode.
I suggest you handle socket-binding using wildfly_cli before I came up with a better solution.
For example: /socket-binding-group=standard-sockets/socket-binding=http/:write-attribute(name=port,value=8080)

@SanSan- Hope PR #38 will fix your problem.
Be advised that you'll need
class { 'wildfly':
    mode => 'domain',
    domain_config => 'domain.xml'
}

instead of config

@jairojunior , confirm. I did as you wrote. Now when i add domain_config => 'domain.xml' to 'wildfly' class definition, i get:
..
==> web1: Debug: importing '/tmp/vagrant-puppet-4/modules-2/wildfly/manifests/params.pp' in environment production
==> web1: Debug: Automatically imported wildfly::params from wildfly/params into production
==> web1: Error: Invalid parameter domain_config at /tmp/vagrant-puppet-4/modules-0/profile/manifests/wildfly.pp:25 on node web1
..
where wildfly.pp:25 is the end of 'wildfly' class definition. 'Cause these params (domain_config, host_config) didn't declare in init.pp for wildfly class.
PS: And if i just change mode to 'domain' w/o set any config, i pass it. But it failing on datasource definition:
..
==> web1: Error: /Stage[main]/Role::Deploy/Wildfly::Standalone::Datasources::Driver[Driver postgresql]/Wildfly::Util::Resource[/subsystem=datasources/jdbc-driver=postgresql]/Wildfly_resource[/subsystem=datasources/jdbc-driver=postgresql]/ensure: change from absent to present failed: Could not set 'present' on ensure: Failed with: JBAS014883: No resource definition is registered for address [
==> web1:     ("subsystem" => "datasources"),
==> web1:     ("jdbc-driver" => "postgresql")
==> web1: ] for {"driver-xa-datasource-class-name":"org.postgresql.xa.PGXADataSource","driver-name":"postgresql","address":[{"subsystem":"datasources"},{"jdbc-driver":"postgresql"}],"operation":"add","driver-module-name":"org.postgresql"} at 13:/tmp/vagrant-puppet-4/modules-2/wildfly/manifests/util/resource.pp
..

@SanSan- my bad. Forgot to push init.pp
Regarding datasource, it is meant to work in standalone mode only, that's why its called wildfly::standalone::datasources::driver =)
Domain changes generally acts on a specific profile, so, instead of:
/subsystem=datasources/jdbc-driver=postgresql
we would have this path in domain mode:
/profile=full-ha//subsystem=datasources/jdbc-driver=postgresql
You could easily implement a wildfly::domain::datasources::driver based on the standalone version. You'll only need a profile_name parameter.
As a matter of fact, we could have a single configuration definition with a profile_name parameter and it will be suitable for both operation modes, domain and standalone.
But, I don't like to use domain mode with Puppet. More info here: https://github.com/cpitman/puppet-jboss_admin/issues/68#issuecomment-95934493

@jairojunior, oops that my fault (w datasource).
yeah, i think, i will implement standalone features for domain cluster.
Thank you for help.


Garbage collector

Currently some operations like adding and removing strings, adding and removing styles produces a lot of garbage.
To see a small example look at the branch:
https://github.com/ironcalc/IronCalc/tree/feature/nicolas-garbage-collector
There are other ways to achieve this. One would be to clean after ourselves each time we do anything that could potentially create garbage:

delete cells, columns, rows
change cells
change styles
change columns width, rows height,
....

It would be nice to be able to state categorically that when a user deletes a cell or its contents, that the information isn't retained outside of Undo history (and have a way to clear that history for sensitive documents, if it's persisted).


npm create vite@latest command prompts for package name

Describe the bug
While creating a new vite project using npm create vite@latest, if the project name includes names with spaces, the prompt asks for package name from the user

When given a package name like (react, vue) in lowercase, the prompt switches to select a framework

If given a name with uppercase as first character, error shows up

Reproduction
N/A
Steps to reproduce
Run npm create vite@latest, when prompted for project name, give a name with space in between
System Info
System:
    OS: Windows 10 10.0.19045
    CPU: (4) x64 Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz
    Memory: 3.04 GB / 7.89 GB
  Binaries:
    Node: 20.18.0 - C:\Program Files\nodejs\node.EXE
    npm: 10.8.2 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Chromium (129.0.2792.89)
    Internet Explorer: 11.0.19041.4355

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

I'd assume it's working intended. create vite is simply asking name of package.json to scaffold the project, which doesn't allow space nor upper case.


Problems with kubernetes example

Im having some trouble following the kubernetes example, more specifically on the relabel part:
https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml#L25-L33
Any of these relabel rules results on the following error on startup:
Jan 12 17:15:05 monitoring docker[6082]: prometheus, version 0.16.1 (branch: stable, revision: 968ee35)
Jan 12 17:15:05 monitoring docker[6082]: build user:       @84057be02ab6
Jan 12 17:15:05 monitoring docker[6082]: build date:       20160111-15:30:09
Jan 12 17:15:05 monitoring docker[6082]: go version:       1.5.1
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Main process exited, code=exited, status=1/FAILURE
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Unit entered failed state.
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Failed with result 'exit-code'.
Jan 12 17:15:05 monitoring docker[6082]: time="2016-01-12T17:15:05Z" level=info msg="Loading configuration file /prometheus/cfg/prometheus.yml" source="main.go:196"
Jan 12 17:15:05 monitoring docker[6082]: time="2016-01-12T17:15:05Z" level=error msg="Couldn't load configuration (-config.file=/prometheus/cfg/prometheus.yml): relabel configuration requires a regular expression" source="main.go:208"

Im using the latest prometheus image at docker hub. Am I doing something wrong ?

Sorry, looks like we've got examples out of sync with releases - in this case sensible defaults for relabel regexes to reduce verbosity of config. The syntax in the example requires master. You can use prom/prometheus:master & that should work.

New default values were introduced in master. Please check the same file at
the 0.16.1 tag, which is the version you are running.
The example should be in sync with the code, the latest Docker tag points
to the last release.
On Tue, Jan 12, 2016, 6:26 PM Tiago César Katcipis<EMAIL_ADDRESS>wrote:

Im having some trouble following the kubernetes example, more specifically
on the relabel part:
https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml#L25-L33
Any of these relabel rules results on the following error on startup:
Jan 12 17:15:05 monitoring docker[6082]: prometheus, version 0.16.1 (branch: stable, revision: 968ee35)
Jan 12 17:15:05 monitoring docker[6082]: build user:       @84057be02ab6
Jan 12 17:15:05 monitoring docker[6082]: build date:       20160111-15:30:09
Jan 12 17:15:05 monitoring docker[6082]: go version:       1.5.1
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Main process exited, code=exited, status=1/FAILURE
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Unit entered failed state.
Jan 12 17:15:05 monitoring systemd[1]: prometheus.service: Failed with result 'exit-code'.
Jan 12 17:15:05 monitoring docker[6082]: time="2016-01-12T17:15:05Z" level=info msg="Loading configuration file /prometheus/cfg/prometheus.yml" source="main.go:196"
Jan 12 17:15:05 monitoring docker[6082]: time="2016-01-12T17:15:05Z" level=error msg="Couldn't load configuration (-config.file=/prometheus/cfg/prometheus.yml): relabel configuration requires a regular expression" source="main.go:208"
Im using the latest prometheus image at docker hub. Am I doing something
wrong ?
—
Reply to this email directly or view it on GitHub
https://github.com/prometheus/prometheus/issues/1312.

Using the prometheus:master image made everything work fine, thanks @jimmidyson. Now im having other problem.
Im trying to scrap information from my RabbitMQ instance, that is running inside k8s. I added the exporter on the same pod as the rabbit and exported the container port.
rc file:
apiVersion: v1
kind: ReplicationController
metadata:
  name: rabbitmq
spec:
  replicas: 1
  selector:
    app: rabbitmq
  template:
    metadata:
      name: rabbitmq
      labels:
        app: rabbitmq
    spec:
      containers:
      - image: rabbitmq:3.5.4-management
        name: rabbitmq
        volumeMounts:
        - mountPath: /var/lib/rabbitmq
          name: rabbitmq-vol
        ports:
        - containerPort: 5672
          name: service
        - containerPort: 15672
          name: management
      - image: kbudde/rabbitmq-exporter
        name: rabbitmq-exporter
        volumeMounts:
        - mountPath: /var/lib/rabbitmq-exporter
          name: rabbitmq-vol
        ports:
        - containerPort: 9090
          name: exporter
      volumes:
        - name: rabbitmq-vol
          persistentVolumeClaim:
           claimName: rabbitmq

svc file:
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    name: rabbitmq
  annotations:
    prometheus.io/scrape: "true"
spec:
  ports:
    - port: 5672
      name: service
      targetPort: service
      protocol: TCP
    - port: 9090
      name: exporter
      targetPort: exporter
      protocol: TCP
  # just like the selector in the replication controller,
  # but this time it identifies the set of pods to load balance
  # traffic to.
  selector:
    app: rabbitmq

Then I check the running service, the endpoint is there:
Name:			rabbitmq
Namespace:		default
Labels:			name=rabbitmq
Selector:		app=rabbitmq
Type:			ClusterIP
IP:			<IP_ADDRESS>
Port:			service	5672/TCP
Endpoints:		<IP_ADDRESS>:5672
Port:			exporter	9090/TCP
Endpoints:		<IP_ADDRESS>:9090
Session Affinity:	None
No events.

Using the default configuration, found on the docs, I got no data (and no warning or error on the logs). If I configure prometheus to manually scrap the endpoint <IP_ADDRESS>:9090, it works, so it is not connectivity.
I thought I could have missed the annotation, but when I tried to create it I got the error:
root@195da9ce6e6b:/harbor/data# kubectl -s http://<IP_ADDRESS>:8080 annotate svc rabbitmq prometheus.io/scrape="true"
error: --overwrite is false but found the following declared annotation(s): 'prometheus.io/scrape' already has a value (true)

So my rabbitmq svc is already annotated. Here is my whole config ( is where the address of the master would be, im working with ip right now, not DNS):
      global:
        scrape_interval:     15s
        evaluation_interval: 15s
        external_labels:
          monitor: 'core'
      scrape_configs:
        - job_name: 'prometheus'
          scrape_interval: 5s
          scrape_timeout: 10s
          target_groups:
            - targets: ['<IP_ADDRESS>:9100']
        - job_name: 'k8s-cluster'
          scrape_interval: 5s
          scrape_timeout: 10s
          kubernetes_sd_configs:
          - api_servers:
            - 'http://<master-ip>:8080'
            bearer_token_file: bearer_token
            kubelet_port: 10255
            in_cluster: true
          relabel_configs:
          - source_labels: [__meta_kubernetes_role]
            action: keep
            regex: (?:apiserver|node)
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
          - source_labels: [__meta_kubernetes_role]
            action: replace
            target_label: kubernetes_role
        # Scrape config for service endpoints.
        #
        # The relabeling allows the actual service scrape endpoint to be configured
        # via the following annotations:
        #
        # * `prometheus.io/scrape`: Only scrape services that have a value of `true`
        # * `prometheus.io/scheme`: If the metrics endpoint is secured then you will need
        # to set this to `https` & most likely set the `tls_config` of the scrape config.
        # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
        # * `prometheus.io/port`: If the metrics are exposed on a different port to the
        # service then set this appropriately.
        #
        - job_name: 'kubernetes-service-endpoints'
          kubernetes_sd_configs:
          - api_servers:
            - 'http://<master-ip>:8080'
            bearer_token_file: bearer_token
            kubelet_port: 10255
            in_cluster: true
          relabel_configs:
          - source_labels: [__meta_kubernetes_role, __meta_kubernetes_service_annotation_prometheus_io_scrape]
            action: keep
            regex: endpoint;true
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
            action: replace
            target_label: __scheme__
            regex: (https?)
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
          - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
            action: replace
            target_label: __address__
            regex: (.+)(?::\d+);(\d+)
            replacement: $1:$2
          - action: labelmap
            regex: __meta_kubernetes_service_label_(.+)
          - source_labels: [__meta_kubernetes_role]
            action: replace
            target_label: kubernetes_role
          - source_labels: [__meta_kubernetes_service_namespace]
            action: replace
            target_label: kubernetes_namespace
          - source_labels: [__meta_kubernetes_service_name]
            action: replace
            target_label: kubernetes_name

Any idea of what I may be doing wrong ?

Does the pod show up as a target in the Prometheus status page? You may need to annotate the service with the port number to use like: prometheus.io/port: "9090".

@jimmidyson I was pretty stupid, taking a look on the status page made the problem quite clear. It is trying to scrap rabbitmq on the 5672 port, which is the first exported port.
I thought the default port was 9090, but it seems to be the first exported one (on k8s, if you dont mention the port name it is an ambiguity, since there is multiple ports exported on the service).

Ah OK! So the prometheus.io/port annotation should work for you.

It worked, but by default it tried to scrap on "/" instead of "/metrics". Shouldn't "/metrics" be the default ?

It worked, thanks @jimmidyson :-).
I can add an example on the pod + service description to make RabbitMQ work on this setup. If it seems to be a good idea, where is the best place for me to add it on the project ?

It certainly should default to /metrics - I'll fix that now.
Prometheus doesn't really have external example setup so not sure where best to put it. @fabxc @brian-brazil Any thoughts? Seems useful to me, using RabbitMQ as an example to show the configuration of the Kubernetes services required for discovery.

@jimmidyson Maybe in a contrib folder.

@sdurrheimer Nice idea.
@katcipis PR welcome I'm sure.

@katcipis The problem with the scrape path was just a small change to example relabeling - https://github.com/prometheus/prometheus/pull/1313/files

@jimmidyson just tested here, worked like a charm ;-).
I noticed that when I omit the relabeling prometheus tries to scrap everything from k8s (all pods, assuming the default DNS name of them).
Is this expected ?

To quote @jimmidyson : "You can do this via relabelling. See https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml#L53-L56 for an example. What this is doing is only keeping Kubernetes services that are annotated with prometheus.io/scrape=true. I find it works best to whitelist services in this way."
Does that help?
I assume this issue is solved. Please re-open with more information if not.


Really annoying but super one-off bug

https://github.com/RoyaleAPI/cr-api-ux/issues/357
When you go to expand the post, the expansion button essentially covers a link behind. So even with one click on the expansion button, most times, instead of expanding, it opens the link behind.
It’s a little finicky to repro, but if you imagine the expansion button having an upper half and a bottom half and click on it so you click the bottom half of it, I can repro it every time.
Anything that can be done?
Please try it a few times if it fails. I can almost guarantee with a few attempts you’ll see what I mean

FYI you don’t have to tap the button to expand, just tap anywhere. Maybe we could improve the design a little so that’s clear, or make the button overlay disable interaction behind it.
Sent with GitHawk

Oh so the purpose of the button is not as an opener but as a signifier that there more to view?
And yeah I def think disabled interaction behind the the button overlay would make a lot of sense!
Thanks for the insight


Display Zabbix Dashboards and group status

Hello.
Really good work with this project, is amazing! I have some questions, can you help me?
¹How i can display a Dashboard from zabbix (tried text panel with html but display black screen)?
²How i can display host group status (without IT Services)? I can't get all hosts groups using Table, im testing with zabbix Admin user for API auth....
³There is another way to display zabbix triggers (table)?

Take a look at this example http://play.grafana-zabbix.org/d/000000088/system-status-dashboard?orgId=2


Unsubscribe deleted addresses

Newly added addresses are subscribed for automatic payment detection. If any of these address are deleted, such subscription should also be deleted.

In the future we may also want to unsubscribe from used addresses that are part of a bip 70 setup or xpub.


Is there any way to mute the sound of the agent's game window?

I can hear the sound of the agent's window while playing against it. Such as the sound of buildings and units.

There is no directly control of sound through Blizzard API, you can mute it on the agent's window on your own

Got it.


When i .execute() my converter i get : (Could not access target file), even tho it works in other computers

com.documents4j.throwables.FileSystemInteractionException: Could not access target file
at com.documents4j.util.Reaction$FileSystemInteractionExceptionBuilder.make(Reaction.java:180)
at com.documents4j.util.Reaction$ExceptionalReaction.apply(Reaction.java:75)
at com.documents4j.conversion.ExternalConverterScriptResult.resolve(ExternalConverterScriptResult.java:70)
at com.documents4j.conversion.ProcessFutureWrapper.evaluateExitValue(ProcessFutureWrapper.java:48)
at com.documents4j.conversion.ProcessFutureWrapper.get(ProcessFutureWrapper.java:36)
at com.documents4j.conversion.ProcessFutureWrapper.get(ProcessFutureWrapper.java:11)
at com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:78)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)

could it be from the MS-word version ? idk

Did you set correct access rights? Maybe the target folder has not given write access?

hi , thanks for ur response, it worked after i installed a printer on this computer, it's weird


Add indicators on projects, regarding the available designs issues and the design tags found

Based on a technical solution we are looking for at #60, this issue is about providing indicators of available (open) design issues for each project, both on the "projects" page (in each project) and on each project page. Apart from numeric indicators, we can also show the names of the design tags we found on them, including the "good first issue" tag (if that concerns design tasks).
This way, visitors may quickly identify which projects have open design needs, how many, and what kind.

If you look at the examples we refer to for quickstarts (this is what we tell projects to do) - there are some suggestions on how to structure the internal workflows and issue management.
We should def. also adapt them – or get inspired by those guides.....


Lotus + Rack::Chunked streaming

Rack::Chunked streaming does not work out of the box. There are two issues here.
1. Lotus' rendering policy
Lotus::RenderingPolicy#render wraps any non-nil body in an array. In order for Rack::Chunked to work, existing enumerables should not be wrapped. I monkey-patched this by changing line 30 of the rendering policy to leave the response if body.respond_to?(:each).
On line 69 the rendering policy checks if the body is #empty? - this won't work for Rack::Chunked::Body, since it doesn't have an empty? method by default, so I had to add one in.
2. Lotus Server
I actually haven't investigated this at all, so I can't give a good cause. I was thrilled to get my code working with rackup so I'm probably going to move forward with that. That said, the above code is not sufficient to get Rack::Chunked working with lotus server

I have a gist outlining how I got Rack::Chunked to work: https://gist.github.com/berfarah/6cae66fb4ffe9e383cb5

@berfarah Hello, have you tried to add ::Rack::Chunked to the entire application middleware stack or to config.ru?

@jodosha I'll revisit this now.

I've committed sample applications here
There are four branches:

config.ru middleware (doesn't work)
config.ru with monkey patching (works with rackup -s puma but not lotus s
application.rb middlware (doesn't work)
application.rb with monkey patching (works with rackup -s puma but not lotus s

Looked into it. Created a sample application as suggested by @berfarah. Application is at https://github.com/pascalbetz/lotus-streaming and the "hacks" are at https://github.com/pascalbetz/lotus-streaming/blob/master/lib/streaming_hacks.rb.
There are two ways to start the server:
rackup -s Puma
lotus s
You can see the streaming in action at:
lotus s
rackup -s Puma
When you open the page in a browser and you see "one", "two", "three" appear one by one, with a pause of 500ms => streaming works. If everything appears after waiting for about 1s => streaming does not work.
As @berfarah has described streaming does not work with lotus s while it works with rackup -s Puma.
What i found is that the problem seems to stem from shotgun/ code reloading, not hijack/rack/chunked or so. If i start the server with
lotus s --code_reloading=false then streaming works.
@jodosha any ideas? I don't know much about shotgun.

Forgot to mention: once i know why lotus s is not working with code reloading i can start to implement the changes required for streaming to work in a less hackish way.

Looked into shotgun. Seems like the problem is here:
https://github.com/rtomayko/shotgun/blob/master/lib/shotgun/loader.rb#L88
The child reads the body (chunks of the stream) and writes it into the @writer, after that it closes the stream and only then the parent returns the body to the client.
AFAICT streaming will not work with shotgun. Since it's planned to remove shotgun anyway (see #249) i'd say i concentrate on making the streaming code provided by @berfarah  a  bit cleaner. If i understand correctly, then Lotus does not want to monkeypatch (@jodosha ?) Suggestions/Feedback welcome.

@pascalbetz I've written a change to the rendering_policy.rb for this that will fix this with rackup, writing the test now.

Nice.
FYI (since i can not comment on the patch):
response[BODY] = Array(body) unless body.nil? || body.respond_to?(:each)

nil does not respond to each so this could be simplified (might not be easier to read though).

Hey @pascalbetz, I've made some updates on the branch. #size isn't a valid method for Rack::Chunked::Body, so I've had to resort to uglier methods.
Also, I'm not seeing what you mean about nil. Can you elaborate?
https://github.com/lotus/lotus/compare/master...berfarah:feature-streaming
I can add you as a collaborator, if you'd like, on https://github.com/berfarah/lotus/tree/feature-streaming

Never mind about the nil thing. I actually think that, instead of simplifying the boolean expression,  we should move it to it's own method so it has a name.
def wrap_body?(body) or something like that?

And: perhaps we can add a note that with shotgun enabled streaming does not work. If you come to the same conclusion about shotgun:-)

I can confirm that disabling shotgun worked for me. However, I'm still struggling to get my tests to produce a streaming outcome in my branch

@berfarah @pascalbetz You're awesome! :tophat:
First of all: the check. What @berfarah did is right, we need to introspect the body and decide what to do.
There is a conceptual duplication, because we do the same both in #render and #view_for. So @pascalbetz suggestion to wrap the body is great.
Now, I'd just introduce a new type Body, that does all that checks internally and exposes an API that is meaningful to Rack and RenderingPolicy. In other words:
def render(env, response)
  # ...
  response[BODY] = Body.new(body)
end

Then we can remove the check introduced in #view_for, because Body responds to #empty?.
This is only conceptually right, I don't know if Rack complains about this new type or what.. but I think it's a viable solution.

@jodosha
This should work, AFAIK rack only requires each to work. By adding empt? this new class can encapsulate everything. Could look like this (lunchbreak coding):

class BodyWrapper
  def initialize(body)
    @body = body
  end

  def empty?
    @body.respond_to?(:empty?) && @body.empty?
  end

  def each(*args, &block)
    wrapped_body.each(*args, &block)
  end

  private

  def wrapped_body
    if @body.respond_to?(:each)
      @body
    else
      Array(@body)
    end
  end

end

and then in StreamingPolicy:
    def render(env, response)
      response[BODY] = ::BodyWrapper.new(response[BODY])
      body = _render(env, response)
      response[BODY] = ::BodyWrapper.new(body)
      response
    end

Which is not yet perfect because we need to wrap the body twice, once before passing it to _render and once before passing the result back to the caller.
@berfarah
FYI: the use ::Rack::Chunked in the action is not needed for me, do you think it's needed?

@pascalbetz I was thinking to:
require 'delegate'

class Body < SimpleDelegator
  def initalize(body)
    @body = body.respond_to?(:each) ? body : Array(body)
  end

  def empty?
    @body.respond_to?(:empty?) && @body.empty?
  end
end

We just need to check if Rack doesn't get confused by SimpleDelegator.
Instead of wrap twice in #render, why we don't just make _render to return an instance of Body, so we can just assign it once?

@berfarah i don't like delegators. They make it hard to debug and understand whats going on. Especially since Rack only needs each as interface.
The other part (not wrapping twice) sounds cool.

@pascalbetz Ok to remove the delegator part, but I think the wrapping must happen on object initialization.
class Body
  def initalize(body)
    @body = body.respond_to?(:each) ? body : Array(body)
  end

  def empty?
    @body.respond_to?(:empty?) && @body.empty?
  end

  def each(&blk)
    @body.each(&blk)
  end
end

I've noticed that Rack::Chunked::Body responds to #close as well. It's probably a good idea to implement it too. :+1:

@jodosha @pascalbetz If I wrap the body in _render then I run into method missing errors with the default template. Is this abstraction worth it? It seems like we might be over-complicating the code trying to simplify it.

@pascalbetz https://github.com/lotus/lotus/issues/303#issuecomment-149853341 around ::Rack::Chunked, I still need that in the application or lotus s won't chunk the response. This is because lotus s removes ::Rack::Chunked here

I'm still having trouble actually creating a streaming server in tests. My integration test still refuses to actually return a chunked response, despite my being able to run rackup and lotus s in the fixture and get what I'm looking for. I think the issue lies somewhere with the way rack's test server works, but I haven't found anything conclusive.
Can either of you have a look at the test and given me feedback on what might be going wrong?
https://github.com/lotus/lotus/compare/master...berfarah:feature-streaming
(on a final note, I think I'll remove the sleep 0.5s from the test so it doesn't slow down the suite)

@jodosha I know you use SimpleDelegator (seen it in the code in other places). I think it would be overkill here and as mentioned it also makes debugging/searching more complicated.
Wrapping on initialization sounds good. We must add close as well, something like this?
def close
  @body.close if @body.respond_to?(:close)
end

FYI: here is the spec of BODY: http://www.rubydoc.info/github/rack/rack/master/file/SPEC#The_Body
@berfarah then let's get it to a state where it's working and tested and then we can refactor/improve it.
For the test, we should remove the timeout, yes. For playing around i need it in order to see streaming working:-)
I will look at the test case this evening and get back to you if i have anything to add.
If you create PR, then we can discuss there and give feedback on specific lines of code. Not sure how @jodosha and the core team handles this but i like PRs for discussion:-)
About the chunked middleware. Need to test that again in that case.

@pascalbetz  I can do a PR request, I just didn't want to submit a broken test. What do you think, should I submit it anyway?

Solved by #375


Parsing ISO 8601 / RFC 3339 datetime string?

What's the correct way to parse a ISO 8601 / RFC 3339 datetime string?
This is very common in json communication.
On the server side we are using Rust for our API and DateTime::to_rfc3339() to convert the datetimes to String for the json API, which can also be expressed with the format string "%+":
> %+: Same to %Y-%m-%dT%H:%M:%S%.f%:z, i.e. 0, 3, 6 or 9 fractional digits for seconds and colons in the time zone offset.
So it has a variable number of digits for the fractional seconds, depending on the timestamp in question.
If it falls on a second boundary, it has 0 fractional second digits, like "1970-01-01T00:00:00+00:00".
Also it has the timezone at the end.
How can I parse this ISO 8601 / RFC 3339 datetime string in my PureScript frontend?

I think at the moment writing a parser using purescript-parsing or something like that is probably your best bet, as I guess the format language we have in here at the moment isn't expressive enough for that.

@Boscop you could build multiple formats and use unformatParser like this:
myParser
  =  unformatParser format1
 <|> unformatParser format2
 <|> unformatParser format3

parse str = runParser str myParser

Note, you might wanna use try,  but it should be possible to order formats in such a way that it's not needed.

@safareli Thanks. But I also need support for microseconds like "2017-11-21T05:16:29.120116+00:00" and it doesn't support that:
https://github.com/slamdata/purescript-formatters/blob/v3.0.0/src/Data/Formatter/DateTime.purs#L122
Would it be possible to add support for microseconds (6 digits) (and maybe nanoseconds (9 digits))? :)

There'll be a bit of a problem there since the DateTime representation that is being parsed/formatted is only millisecond-precise.
You could just create the format string at the top level and re-use it, then the parse cost is at startup. Lazy might well be another option. But I'd suggest constructing the format commands directly rather than using the string parsing method as another option: #22 🙂

@garyb But how can I make it re-use the evaluated value?
I currently do this:
fmt_rfc3339 = parseFormatString "YYYY-MM-DDTHH:mm:ss+00:00"
fmt_german = parseFormatString "DD.MM.YYYY, HH:mm"

humanTime s = either id id do
  decode <- fmt_rfc3339
  encode <- fmt_german
  datetime <- unformat decode s
  pure $ format encode datetime

Is that the most efficient way to do it?

There'll be a bit of a problem there since the DateTime representation that is being parsed/formatted is only millisecond-precise.

That's ok, it can round to the nearest millisecond.. Or even just truncate. It should still be able to parse it though.. :)

Yes parseFormatString parses format string into Format value.  if you are declaring format on top level you can also do this so if format was invalid for some reason you get an error on start up:
fmt_rfc3339 :: Format
fmt_rfc3339 = case parseFormatString "YYYY-MM-DDTHH:mm:ss+00:00" of
  Left err -> unsafeCrushWith $ "format must have been valid " <> show err
  Right x -> x
fmt_german :: Format
fmt_german = case parseFormatString "DD.MM.YYYY, HH:mm" of
  Left err -> unsafeCrushWith $ "format must have been valid " <> show err
  Right x -> x

humanTime s = either id id do
  datetime <- unformat fmt_rfc3339 s
  pure $ format fmt_german datetime

If you {nano,micro}seconds are in the end of the input string, and you are willing to play with parser combinatorics you can use unformatParser to get datetime and then discard rest of the string. (runPwhich use used to create unformat function adds eof parser to unformatParser)

Would you accept a PR that adds formatters (SSS6,Milliseconds6) and (SSS9,Milliseconds9)?
Currently, I can't parse this: "2019-08-07T10:16:58.055246Z"


[RFC] New Input component

New Input component
Problem description
The current Input component looks like this:
API
<Input value="123" icon="search" placeholder="Search..." />

DOM structure:

  <input type="text" placeholder="Search..." value="123" />

Rendered component:

This introduces a few issues. Since it directly creates an HTML <input /> element (implementation detail), it does not support a set of user scenarios:
1. Styling the <input />
It's impossible to target the <input /> element in order style it (e.g.: change the height of the input through styles) because it's not implemented as a shorthand slot.
Also, custom styles passed as prop will be set for the wrapping
 instead of <input />:
<Input placeholder="Search..." styles={{ backgroundColor: 'red' height: '80px' }} />

renders:

instead of expected:

2. Setting HTML attributes for the <input />
It's impossible to target the <input /> element in order to set attributes for it (e.g.: setting tabIndex="-1" to the <input /> element so that it's skipped by keyboard navigation).

passing tabIndex="-1" as prop adds it to the wrapping
 so it doesn't work:

<Input placeholder="Search..." tabIndex="-1" />

generates

  <input type="text" placeholder="Search..." value="" />

passing input={{ tabIndex:"-1" }} as prop does not target the <input /> element because it's not implemented as a shorthand slot:

<Input placeholder="Search..." input={{ tabIndex:"-1" }} />

generates

  <input type="text" placeholder="Search..." value="" />

instead of expected

  <input type="text" placeholder="Search..." value="" tabindex="-1" />

3. Setting HTML attributes for the wrapping

Because of implementation details, some HTML attributes (the ones specific to <input />) end up in the <input /> element instead of the wrapping
:
<Input placeholder="Search..." role="presentation" />

generates

  <input type="text" placeholder="Search..." role="presentation" value="" />

instead of expected

  <input type="text" placeholder="Search..." value="" />

Proposed solutions
Both solutions rely on 2 main concepts:
i. Creating an additional standalone InputBase component
InputBase component will have the following structure:
Props:
interface IInputBaseProps {
  as?: any // TODO: decide if we want it
  className?: string
  defaultValue?: React.ReactText
  fluid?: boolean
  inline?: boolean
  onChange?: ComponentEventHandler<IInputProps>
  placeholder?: string
  value?: React.ReactText
  type?: string
  styles?: IComponentPartStylesInput
  variables?: ComponentVariablesInput
}

API
<Input placeholder="Search..." />

DOM structure
<input type="text" placeholder="Search..." value="" />

For simple scenarios where other actions / elements are not needed, InputBase is all the user needs. It will also fix all scenarios mentioned in the Problem description:
1. Styling the <input />
<InputBase placeholder="Search..." styles={{ backgroundColor: 'red' height: '80px' }} />

2. Setting HTML attributes for the <input />
<InputBase placeholder="Search..." tabIndex="-1"  />

3. Setting HTML attributes for the wrapping

N.A.
ii. Reimplementing Input using InputBase as shorthand
For scenarios like:

input with search icon;
clearable input;
clearable input with search icon;

Solution 1: wrapper prop
Input will leverage InputBase and use it internally.
All the props sent as <Input ...{props} /> will be passed to the InputBase unless the user clearly specifies they are for the wrapping element using the wrapper prop.
Props:
interface IInputProps extends IInputBaseProps {
  clearable?: boolean
  icon?: ItemShorthand
  wrapper?: ItemShorthand
}

API
<Input {...inputProps} wrapper={wrapperProps} />

e.g.:
<Input
  placeholder="Search..."
  icon="search"
  clearable
  wrapper={{ role: "presentation" }}
/>

Component structure
<ElementType ...> //

  <InputBase ... />  // <input />
  <Icon ...>  //
</ElementType>

DOM structure

  <input type="text" placeholder="Search..." value="" />

This will solve all the scenarios mentioned above in the following fashion:
1. Styling the <input />
<Input
  placeholder="Search..."
  icon="search"
  clearable
  styles={{ backgroundColor: 'red' height: '80px' }}
/>

2. Setting HTML attributes for the <input />
<Input placeholder="Search..." tabIndex="-1" clearable />

3. Setting HTML attributes for the wrapping

<Input placeholder="Search..." wrapper={{ role: "presentation" }} />

Solution 2: input slot
Input will leverage InputBase and use it as a shorthand slot, the same it does for Icon. The structure will be:
Props:
interface IInputProps extends IInputBaseProps {
  clearable?: boolean
  icon?: ItemShorthand
  input?: ItemShorthand
}

API

preferred:

<Input placeholder="Search..." icon="search" clearable />

shorthand alternative 1 or when we need to target the <input />:

<Input input={{ placeholder: "Search..." }} icon="search" clearable />

shorthand alternative 2 or when we need to target the <input />:

<Input input={<InputBase placeholder="Search..." />} icon="search" clearable />

Component structure
<ElementType ...> //

  <InputBase ... />  // <input />
  <Icon ...>  //
</ElementType>

DOM structure

  <input type="text" placeholder="Search..." value="" />

This will solve all the scenarios mentioned above in the following fashion:
1. Styling the <input />
<Input input={{ placeholder: "Search...", styles: { backgroundColor: 'red' height: '80px' } }} icon="search" clearable />

2. Setting HTML attributes for the <input />
<Input input={{ placeholder: "Search...", tabIndex: "-1" }} clearable />

3. Setting HTML attributes for the wrapping

<Input placeholder="Search..." role="presentation" />

In general I think a lot of this makes sense. This also addresses a similar issue to #201 as far as usability and semantics with, "What is a  vs a ?"
I would possibly suggest that instead of <InputBase /> we use <InputWrapper />. Unless that is diverging from other SomethingBase naming conventions already starting to be used in Stardust.

We decided to go with solution 1, implemented in #326

InputBase represents the input element and is usable only with it in fact, may be HtmlInput will be better? HtmlLabel for label looks fine, too.

Implemented in #326 and merged. Details:

created an Input component consisting of an <input /> element wrapped with a
;
used partitionHTMLProps to decide what props (<Input {...props} />) go to the <input /> element or wrapping
;
used input slot to target the <input /> element  and wrapper slot to target wrapping
 when partitionHTMLProps does not work as expected:

<Input {...partitionedProps} input={inputProps} wrapper={wrapperProps} />

e.g.:
<Input
  placeholder='Search...'
  dir='ltr'
  tabIndex={2}
  disabled={false}
  role='presentation'
  input={{ dir: 'rtl', tabIndex: 0 }}
  wrapper={{ disabled: true, role: 'checkbox' }}
/>

solved and merged in #326 details:

created an Input component consisting of an <input /> element wrapped with a
;
used partitionHTMLProps to decide what props (<Input {...props} />) go to the <input /> element or wrapping
;
used input slot to target the <input /> element  and wrapper slot to target wrapping
 when partitionHTMLProps does not work as expected:

<Input {...partitionedProps} input={inputProps} wrapper={wrapperProps} />

e.g.:
<Input
  placeholder='Search...'
  dir='ltr'
  tabIndex={2}
  disabled={false}
  role='presentation'
  input={{ dir: 'rtl', tabIndex: 0 }}
  wrapper={{ disabled: true, role: 'checkbox' }}
/>


[Figma kit] Map Card component

Card is one of our building blocks for the design system with a number of variations within each type. We need to map out what the needs are for Card so we can scope adding it to the design kit.

[x] Card
[x] Card static
[x] Logo card
[x] Pictogram card


Kitematic hangs

when trying to remove images the app hangs and becomes unresponsive.

Thanks for the issue!

@claytantor This issue should be fixed in the newer version of Kitematic. Please re-try.
If the issue still exists, please let us know! Thanks


initial openbsd support added

This is one commit that adds a mostly verbatim copy of the node_linux.go for OpenBSD. The only difference is the absence of the NOATTIME flag.
With the latest commits the unit tests and the test suite pass. Note that to run on OpenBSD you need the modifications in the openbsd_tests branch. Some of those are portable so they could move upstream until the suite has been rewritten in a proper programming language :see_no_evil:
Thanks for the awesome work on restic!

looks good, thanks for your contribution!

I don't like the code duplication :-(

Ah sorry, my bad, I didn't see https://github.com/restic/restic/commit/1723be5a506a832f364ae257610aae97b2c54bf5. Cool.

Heh, I already thought that you'd complain about the code duplication ;)


[RFC]  handle ttyfd out event priorly when write buffer is full

Signed-off-by: Gao feng<EMAIL_ADDRESS>

why EPOLLPRI is needed?


keyfinder

Seeing if a fresh branch will pass the integration build test.

Seems you figured out how to get the tests to pass! I'll review this code today or tomorrow and merge it. Casual inspection seems good to me.

Sorry, tomorrow became 5 days later. At some point, it might make sense to also have the keyfinder in the encrypt/decrypt/sign functions too. It might be useful.


Controllers, Models, Core and everything is empty, where is the custom code?

I don't see where did you put the custom code?

I'm sorry for the late response. I am rebuilding this from scratch and moving from codeigniter to laravel 5.1. also I won't be using MySQL. I'll be using MongoDB for the data repo. Will be updating this during August


Display inverted text inside pie/doughnut chart with some angle

Hi Team,
In the below screenshot I am using below javascript code at line 12401 of Chart.bundle.js (V2.1.6).
showChartValues is added as global options at line 9661 of Chart.bundle.js (V2.1.6).
//Keshav  showChartValues
//debugger;
  var showChartValues = this._chart.config.options.showChartValues;
  if (showChartValues) {
      var labelPos = this.tooltipPosition();
      var dsIndex = this._datasetIndex;
      var dpIndex = this._index;

      // Get Value for current point
      var textValue = this._chart.config.data.datasets[dsIndex].data[dpIndex];

      ctx.beginPath();
      ctx.fillStyle = "#fff";
      ctx.textBaseline = "top";
      ctx.textAlign = "center";

      // Draw Value in the chart arc
      if (textValue > 0)
          ctx.fillText(textValue, labelPos.x, labelPos.y);
  }

Can you help me in display text upside down (inverted)

and starting from the outer radius of the arc.

@KeshavHeda to draw the text upside down, you can do the following:
ctx.save();
ctx.translate(labelPos.x, labelPos.y); // before rotate, move 0,0 to text point to make fill line more straightforward
ctx.rotate(Math.PI); // rotates canvas by 180 degrees
ctx.fillText(textValue, 0, 0); // at right position because of translate
ctx.restore(); // resets canvas back to previous transform

@etimberg -> i tried your code and was not able to get what i needed. I have created a fiddle which is not dislaying in output but is working properly locally.
https://jsfiddle.net/y6b2bgt3/8/
I have used below javascript code.
Please see what xPos and yPos should be set so that text starts at the starting arc radius (left,top) position for that particular segment in below shown screen format.
var ctx = this._chart.ctx,
vm = this._view,
sA = vm.startAngle,
eA = vm.endAngle;
  ctx.beginPath();

  ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);
  ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);

............................................. // extra code
//Keshav  showChartValues
//debugger;
  var showChartValues = this._chart.config.options.showChartValues;
  if (showChartValues) {

      var labelPos = this.tooltipPosition();
      var dsIndex = this._datasetIndex;
      var dpIndex = this._index;

      // Get Value for current point
      var textValue = this._chart.config.data.datasets[dsIndex].data[dpIndex];

      ctx.beginPath();
      ctx.fillStyle = "#000";
      ctx.textBaseline = "top";
      ctx.textAlign = "top";

      ctx.save();
      ctx.translate(labelPos.x, labelPos.y); // before rotate, move 0,0 to text point to make fill line more straightforward
      ctx.rotate((Math.PI / 2)); // rotates canvas by 90 degrees

      var xPOS = 0;
      var yPOS = 0;

      if (textValue > 0) // Draw positive Value in the chart arc
          ctx.fillText(textValue, xPOS, yPOS);
      ctx.restore(); // resets canvas back to previous transform
  }

@KeshavHeda what do you want to change about the picture above?

@etimberg  -> Sorry, maybe the needed feature was not described clearly.
I have attached screenshot below depicting any of the three ways in which I would be able to display the values. This will help me make my chart look better for functional display.
I was able to invert the text by rotating label position with (Math.PI / 2). Just need help of getting in proper left/right , inside/outside position to draw the text. we can use these as 3 options of display and put it in some chart config option feature. The center option will never work if segment is very small. That's my suggestion.
Please advise if this is possible. I am also trying to get the co-ordinates from mine side meanwhile.

This is definitely possible. Probably better to ask on stack overflow if you weren't able to figure out the coordinates yourself.


util: fix unit-test for GetClusterMappingInfo()

Unit-testing often fails due to a race condition while writing the
clusterMappingConfigFile from multiple go-routines at the same time.
Failures from make containerized-test look like this:
=== CONT  TestGetClusterMappingInfo/site2-storage_cluster-id_mapping
    cluster_mapping_test.go:153: GetClusterMappingInfo() = <nil>, expected data &[{map[site1-storage:site2-storage] [map[1:3]] [map[11:5]]} {map[site3-storage:site2-storage] [map[8:3]] [map[10:5]]}]
=== CONT  TestGetClusterMappingInfo/site3-storage_cluster-id_mapping
    cluster_mapping_test.go:153: GetClusterMappingInfo() = <nil>, expected data &[{map[site3-storage:site2-storage] [map[8:3]] [map[10:5]]}]
--- FAIL: TestGetClusterMappingInfo (0.01s)
    --- PASS: TestGetClusterMappingInfo/mapping_file_not_found (0.00s)
    --- PASS: TestGetClusterMappingInfo/mapping_file_found_with_empty_data (0.00s)
    --- PASS: TestGetClusterMappingInfo/cluster-id_mapping_not_found (0.00s)
    --- FAIL: TestGetClusterMappingInfo/site2-storage_cluster-id_mapping (0.00s)
    --- FAIL: TestGetClusterMappingInfo/site3-storage_cluster-id_mapping (0.00s)
    --- PASS: TestGetClusterMappingInfo/site1-storage_cluster-id_mapping (0.00s)

By splitting the public GetClusterMappingInfo() function into an
internal getClusterMappingInfo() that takes a filename, unit-testing can
use different files for each go-routine, and testing becomes more
predictable.

Show available bot commands
These commands are normally not required, but in case of issues, leave any of
the following bot commands in an otherwise empty comment in this PR:

/retest ci/centos/<job-name>: retest the <job-name> after unrelated
failure (please report the failure too!)
/retest all: run this in case the CentOS CI failed to start/report any test
progress or results

The issue #2380 and the fix  https://github.com/ceph/ceph-csi/pull/2381 didnt address this issue ? or are we seeing the issue even now ?

The issue #2380 and the fix #2381 didnt address this ? or are we seeing the issue even now ?

It does not seem to have been sufficient. make containerized-test still regularly fails for me.

The issue #2380 and the fix #2381 didnt address this ? or are we seeing the issue even now ?

It does not seem to have been sufficient. make containerized-test still regularly fails for me.

Verified at my end too that it fails:
--- FAIL: TestGetClusterMappingInfo (0.00s)
    --- PASS: TestGetClusterMappingInfo/site1-storage_cluster-id_mapping (0.00s)
    --- PASS: TestGetClusterMappingInfo/site3-storage_cluster-id_mapping (0.00s)
    --- PASS: TestGetClusterMappingInfo/cluster-id_mapping_not_found (0.00s)
    --- PASS: TestGetClusterMappingInfo/mapping_file_not_found (0.00s)
    --- PASS: TestGetClusterMappingInfo/mapping_file_found_with_empty_data (0.00s)
    --- FAIL: TestGetClusterMappingInfo/site2-storage_cluster-id_mapping (0.00s)

/retest ci/centos/mini-e2e-helm/k8s-1.21

/retest ci/centos/mini-e2e-helm/k8s-1.21

Failed to provision minikube VM with #2264


Update Excel.Application.GetSaveAsFilename.md

Docs Build status updates of commit 3da85bc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

api/Excel.Application.GetSaveAsFilename.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Thanks for the tip!


zone

hey there, cant create recources in another zone, cold you pls tell how i can i? already changed the default zone value in version.tf file

hi

Hi,

option 1: If you want to create the same resources in several regions you can use alias: Multiple Provider Configurations

option 2: you can use terragrunt . Define region as a variable in version.tf, and with terragrunt you can create .hcl files for each region and pass the name of the region as a variable

Acording the region you must change the AZS in variables.tf

If you want to create in the same region but in several AZS, just add those AZS in variables.tf

actually, i ve changed azs to mine, but it says you are alowed to create them only in us-east-1, but i ve mentioned eu-central-1
have you got any glue about that?

you must change the region in versions.tf
remove us-east-1 and set eu-central-1

i know, and i already set them up, error is the same

ohhhh, i got it

okay, should i wait ?

depends on if you want to create a vpc and the eks cluster at same time
if u already have a vpc you can remove that module from main.tf and set your subnets directly in vpc_config
or u can wait, i will update that to set a region

what are you using this for?

i want to create them at the same time, actually just tend to create eks from scratch for stg env

okay waiting for you to update

I recommend u to create the vpc first and then the cluster
to maintain them

For now I updated those repos
U can use but, take care using them hhahahha


Missing mock type information for Mockery\Expectation::getMock()

Mockery::mock() returns a Mockery\MockInterface. MockInterface::shouldReceive() et al returns an Mockery\Expectation, which in turn has a getMock() method to return the MockInterface the Expectation belongs to.
The problem is that phpstan says the return type of Expectation::getMock() is Mockery\MockInterface with no type information on what was originally mocked. So for example
interface A {
    foo(): void
}

function getMock(): A
{
    return Mockery::mock(A::class)
        ->shouldReceive('foo')
        ->getMock();
}

will cause the following phpstan error: Function getMock() should return A but returns Mockery\MockInterface.
Of course the code in getMock() can be rewritten to not be fluent so that the return value of Mockery::mock() is returned instead, however in many cases I mock objects inline in some other expression and when I do that it's really helpful to be able to use the fluent way of writing the expectations.
Is it possible to change the type of the return value of Mockery\Expectation::getMock() to include the type information of the original mock? With generics I guess it should be something like Mockery::mock(T): MockInterface<T>, MockInterface<T>::shouldReceive(): Expectation<T> and Expectation<T>::getMock(): MockInterface<T>.

The problem is that non of these classes/interfaces are currently generic. The mocks are intersection types. We could probably make Expectation generic with T, and we could write a dynamic return type extension for shouldReceive so that when called on MockInterface&Foo, it returns Expectation<Foo>.


Fixes #364 fix(most components): utilize em instead of rem in font-size, padding…

Question for reviewers: Should this necessitate a v2 branch? Font-sizes, style overrides, and general look/feel of the components may change.

:tada: This PR is included in version 1.14.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


fix typos in documentation and default middleware template issue

@Saboor-Hakimi any news?

@Saboor-Hakimi it seams that the ci is failing. Can I get you to look at it please

I close it for inactivity. Feel free to reopen 🙌


Fix WeChat issue

For issue #1218
Changes:

change weChatCreateMessage and weChatCloseMessage  to  weChatMessage
cache WeChat AccessToken with accessTokenAt
code refactor & format.

Test config:
global:
  resolve_timeout: 5m
  wechat_api_secret: 'xxxx'

route:
  group_by: ['alertname']
  receiver: 'wechat'

receivers:
- name: 'wechat'
  wechat_configs:
  - corp_id: 'xxxx'
    to_party: '1'
    agent_id: 'xxx'

Work with this config.

Thanks for the contribution! Few easy changes and then this should be good to be merged

Show Demo:

fixed


module_variable_optional_attrs is deprecated in latest terraform version

Hi guys,
this part of the code is no longer supported in the latest version of terraform:
experiments = [
module_variable_optional_attrs,
]
Cheers,
Alex

Hi Alex,
i am very sorry we did not see your Report.
We fixxed it today with Version v5.6.0


RefCall variants

Hi there! We are testing clairS-TO with the --print_ref_calls option. My question is: what does the RefCall flag mean? Could you further elaborate on it?
I am aware that in other software it can mean that the variant was proposed as mutation but later is rejected by the variant caller; however, I would appreciate if you can provide further information on what it means in ClairS-TO.
Thank you very much and thank you as well for your tool!
Regards!

Hi @sq101 as for your questions:
a) ClairS-TO first extracts variant candidates through a simple heuristic approach, and then our neural networks classify whether these variant candidates are real variants or not. Those candidates rejected by our neural networks as not real variants are flagged as RefCall.
b) RefCalls are not LowQual variants. LowQual variants are those variants that have been classified as real variants by our neural networks but have not passed subsequent quality control filters. But RefCalls are those rejected by our neural networks and classified as reference calls.
c) RefCall flags allow us to obtain a full record of every variant candidate that ClairS-TO was asked to classify. RefCalls are more likely to be true negatives (true reference calls) and an indication of sequencing artifacts as you said. In addition, it allows users to design different filtering strategies in the event they want to increase recall but inevitably increasing a large number of false positives.
I hope these explanations can give you some insights. Thanks a lot for your interest on ClairS-TO.
Lei


fix(docs): Add links to setup-data keys

What ❔
Add link to prover setup-keys json file and add initial file
Why ❔
Checklist

[ ] PR title corresponds to the body of PR (we generate changelog entries from PRs).
[ ] Tests for the changes have been added / updated.
[ ] Documentation comments have been added / updated.
[ ] Code has been formatted via zk fmt and zk lint.

CI is merge queue is now failing due to unrelated issue, i'm merging this


wireless: gs2200m: Fix recvfrom_request() in gs2200m_main.c

Summary

I noticed that wget causes ASSERT in gs2200m_main.c recently.
Finally, I found that it sends a wrong ack message in
recvfrom_request() when the socket is closed passively
This commit fixes this issue.

Impact

gs2200m only

Testing

Tested with spresense:wifi_smp

See https://github.com/apache/incubator-nuttx/pull/6041 as well


build(release): add semantic release packages

Description
add semantic release plugins

:tada: This PR is included in version 4.1.0-develop.1 :tada:
The release is available on:

v4.1.0-develop.1
GitHub release

Your semantic-release bot :package::rocket:


[spiking] batch source freshness metadata

resolves #
docs dbt-labs/docs.getdbt.com/#

Problem

Solution

Checklist

[ ] I have read the contributing guide and understand what's expected of me
[ ] I have run this code in development and it appears to resolve the stated issue
[ ] This PR includes tests, or tests are not required/relevant for this PR
[ ] This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

Spike report written up here: https://github.com/dbt-labs/dbt-bigquery/issues/938#issuecomment-2108026040


ToolError is unnameable from outside

https://github.com/austinleroy/ebml-iterable/blob/37e160c38f1a78a7f006d124fa808a772be7b0a9/src/errors.rs#L67-L78
One of the variants of TagIteratorError uses the ToolError type, but the latter is not exported, making it "unnamable" from outside. This is the kind of situation described in rust-lang/rust#34537. I'd like to access data stored in this error, but there's no way to extract it.
Can you consider exporting ToolError (and maybe reexport it in webm-iterable)?

Thanks for bringing this to my attention! The fact that it wasn't already exported was simply an oversight.  I will make the change and push up version 0.3.2 to resolve this.


entrance = secondary_entrance is a void tag

Hello,
iD suggests entrance = secondary_entrance, however this key is not found in the wiki nor was it discussed on tagging talk lists.
best regards

Hi @opendcc, I assume you mean that tag appears in the suggestion list like this?

These suggestions are the most-used values and are automatically retrieved from the TagInfo API when the field loads. There are thousands of undocumented tags in the OSM database that could potentially get suggested. If a tag is deprecated, let us know and we can filter it out of the list.

Sorry, I can not confirm.
You're claiming, according to TagInfo this value is amoung the most commonly used. However, it was iD with its proposal who pushed up TagInfo. You're claiming 'common used', but yourself are creating this usage count. That is not the correct way to define values, you're not alone.
The same applies to main_entrance. There is already a value main, iD comes up with a new value with same meaning.
br Wolfgang

The way it works is that the most commonly used values get suggested to users unless iD has marked them as depreciated.  If those values are duplicates or just bad in particular, then letting the maintainers know which values should no longer be suggested would be helpful.
Another solution is to do a large scale edit removing the tag from the OpenStreetMap database.  This is update iD within 24 hours.

Hello,
thanks for answering.
entrance=main_entrance is deprecated, use entrance=main instead. entrance=main_entrance was used around Cambridge back in 2012 and never got standard. Then there was large gap and in 2019 this value popped up with iD entries again.
According to discussions on the openstreetmap forum, entrance=secondary_entrance should no be used, please use entrance=secondary instead.
We will try to update all existing main_entrance / secondary_entrance to the approriate value.
best regards

You're claiming 'common used', but yourself are creating this usage count.

In general, the use of taginfo in field suggestions can only exacerbate already popular values, not cause them to be popular in the first place, since the suggestions are sorted starting with the tags that are already most frequently used. (However, some tags have only a few popular values followed by a long tail of uncommon ones, so any list of more than a few values can generate some organic usage, especially as users type in the first few characters of the value they want.)
According to osm tag history, the tag’s usage has been steadily increasing since 2016. I don’t see any changes to the preset from that timeframe, so there must’ve been some other factor at play besides iD.
For those of us who don’t follow the forums very closely, can you link to the discussion wheee it was decided that secondary_entrance should no longer be used? Thanks!

Hello,
if you run a overpass query on secondary_entrance ( http://overpass-turbo.eu/s/PhI ), you'll find a hotspot of usage in Cambridge (UK), all changesets created by user davidearl. That is the single source of secondary_entrance, back in 2011/2012. In this case, the strategy of iD (expanding a uncommon, single user value as selection value) lead to a wider introduction of a this tag - without any documention in wiki and with syntax errors in other tools. That is not the way a collaberate work should go.
A discussion on https://forum.openstreetmap.org/viewtopic.php?id=68307 showed the common feeling, that similar to entrance=main a secondary entrance should be tagged as entrance=secondary.
In general: I think it would be good method to do a check on the wiki before offering a uncommon, selden use tag value in iD to newbies.

Hello,
I also set up a request for mechanical edit (unify secondary and entrance_secondary) on<EMAIL_ADDRESS>

I guess I don’t understand why iD didn’t lead to wider usage between 2013 (when the preset was added) and 2016 (after which usage began to climb).
In an ideal world, iD would have dedicated presets and fields for every established key and value, but there are a lot of established keys and values, so this is a fallback for when no dedicated field is available. If iD didn’t have a taginfo-powered Type field, it would still “promote” it via the raw tag editor, which would be much less useful without taginfo.
If someone were to contribute a PR that turns the field into a combo field with a fixed set of values, that would allow us to translate the values and generally improve the user experience for this preset.

In general: I think it would be good method to do a check on the wiki before offering a uncommon, selden use tag value in iD to newbies.

It wouldn’t be prudent to do this in an automated fashion for the taginfo-based fallback field. Unfortunately, plenty of approved values don’t have their own pages on the wiki yet – they’re only documented on the key’s page or on the page of some related tag. Wikignomes like me are chipping away at the problem, but it’s going to be a problem for a long time. There are also keys whose values are open-ended (documented as “User-defined values” on the wiki).
On the other hand, if someone were to contribute a custom combo field for the entrance key, they could manually curate the list, taking into consideration the approved status of any value. iD has accepted many such PRs in the past.

In this case, the strategy of iD (expanding a uncommon, single user value as selection value) lead to a wider introduction of a this tag - without any documention in wiki and with syntax errors in other tools.

This might be a feature request for taginfo itself. Taginfo already collects statistics on how many people have last touched a feature with a given key, but it doesn’t collect that statistic for values. Additionally, the taginfo API doesn’t expose that statistic or offer a way to filter suggestions by a minimum number of mappers.
As an aside, OSM is partly a folksonomy based on mappers coining new tags when appropriate, those tags percolating up as other mappers embrace and eventually document them. At least that’s the OSM I started out with years ago. iD’s integration with taginfo effectively ensures that a broad spectrum of mappers can participate, not just those who know about taginfo. The wiki’s tag proposal process exists parallel to this organic process, but the tension between the two won’t be resolved solely by hiding unapproved values from iD users. (Not all of us are newbies. 🙂)

Hello,
I understand your arguments, however we must improve the current situation. There is some wrong mapping around (like entrance=female, entrance=no or entrance=main_entrance), currently iD helps to spread out this wrong mapping and it takes a lot of effort to catch and fix all this stuff. Effectively, this unreflected offering of the 'top 30' tags brings in a lot of chaos and messes up the data base.
I would agree to maintain a list of acceptable items in the combo field.

As an aside, OSM is partly a folksonomy based on mappers coining new tags when appropriate, those tags percolating up as other mappers embrace and eventually document them.

I think there is still a way to enter value not on the list. So restricting the list to a managed selection will not stop invention of new tags (but will stop spreading of wrong tags!).
Please help to keep OSM clear and usable!

(bold was not intended ..)

Hello Quincy,
looking more closer to this issue:
The university of cambrigde (see https://wiki.openstreetmap.org/wiki/University_of_Cambridge#Building_entrances)  is using it's own tagging values to create their university map. These tagging values have never been documented in a wiki. This leads to different tagging for the same situation: inside Cambridge, an main entry is entrance=main_entrance (below 1000 targets), all other places in the world use entrance=main (except those places, where a newbie has used the iD proposal of main_entrance) 400000 targets.
For emergency exits the wiki declared entrance=emergency as correct value (9000 targets). Cambridge uses fire_exit (300 targets). And iD is offering this value as proposal.
Also interesting is entrance=private (should be entrance=*, access=private): again this value spreads out in the world.
This behavior leads to questions and discussions with newbies (why is this values offered in the menu when it not the recommended one, why is my entry not shown in the map) an I think we should work on reducing this errors.
What needs to be done to get a list fo correct values? I've seen some entries on /iD/blob/master/data/presets/, however the documentation is not fully clear to me.
best regards

What needs to be done to get a list fo correct values?

@opendcc The options property of fields can be used to limit the list to known values. But again, a cleaner solution is just to mark all the errant values as deprecated so they'll be filtered out and iD can offer to upgrade them.


Allow floor/round etc of numbers

Investigate the possibility of allowing numbers to be rounded in various different ways.

If we integrate Math.js as part of #34, that may possibly resolve this one. It has a lot of built in functions for formula parsing. If there aren;t any built in version of round etc. then we can easily imlement them.

Resolved in pull request #76
You can now use various mathematical functions in notations, including ones for rounding.
Some examples:
round(4d10/3): round([3,6,1,1]/3) = 3.7  // round the result to the nearest whole number
floor(4d10/3): round([3,6,1,1]/3) = 3.6  // round the result down to the nearest whole number
ceil(4d10/3): round([3,6,1,1]/3) = 3.7   // round the result up to the nearest whole number