K8SPXC-360: Use HAProxy info from version service

Test name
Status

init-deploy
passed

big-data
failed

scaling
passed

recreate
passed

storage
failed

self-healing
passed

limits
passed

scaling-proxysql
failed

restore-to-encrypted-cluster
failed

self-healing-advanced
failed

upgrade
failed

demand-backup
failed

monitoring
passed

upgrade-consistency
passed

operator-self-healing
passed

scheduled-backup
failed

security-context
passed

monitoring-2-0
passed

affinity
passed

demand-backup-encrypted-with-tls
failed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

init-deploy
passed

storage
passed

recreate
passed

big-data
failed

scaling
passed

self-healing
failed

scaling-proxysql
passed

limits
failed

upgrade
passed

self-healing-advanced
failed

restore-to-encrypted-cluster
passed

monitoring
passed

upgrade-consistency
passed

security-context
passed

operator-self-healing
passed

demand-backup
passed

monitoring-2-0
passed

affinity
passed

one-pod
failed

auto-tuning
passed

scheduled-backup
failed

proxysql-sidecar-res-limits
passed

demand-backup-encrypted-with-tls
passed


yourls_get_favicon_url() is dead

http://www.google.com/s2/u/0/favicons?domain=example.com has gone missing. Find replacement ASAP.

Unfortunately, it looks like to me that if you're logged into a google account, the call to s2/ still points to s2/u/0.

Not for me

Logged into a Google Apps account, s2/u/0/ redirects to: plus.google.com/_/favicon?domain=example.com. s2 proceeds as expected. In both cases, I get the same favicon.

I second @ElliotFriend.

Weird, s2 is erroring for me. I'll try rolling my install up to HEAD and
seeing if that resolves it.
On Wed, May 20, 2015, 2:22 PM Léo Colombaro<EMAIL_ADDRESS>wrote:

I second @ElliotFriend https://github.com/ElliotFriend.
—
Reply to this email directly or view it on GitHub
https://github.com/YOURLS/YOURLS/issues/1803#issuecomment-104043218.

For what it's worth, updating to HEAD seemed to have fixed it.


Update spackage to use spack dependencies instead of submodules

PR Summary
This PR and its Gitlab counterpart are used to prepare singularity-eos and its spackage to be upstreamed to spack/spack.

PR Checklist

[ ] Adds a test for any bugs fixed. Adds tests for new features.
[ ] Format your changes by using the make format command after configuring with cmake.
[ ] Document any new features, update documentation for changes made.
[ ] Make sure the copyright notice on any files you modified is up to date.

@rbberger this is listed as WIP. Is it ready for review?

@Yurlungur ready for review. once merged, we need to change the references to this branch back to main. both in .gitlab-ci.yml and the singularity-eos/package.py.


Slider: avoid clicking triggering right after dragend

Please makes sure these boxes are checked before submitting your PR, thank you!

[ ] Make sure you follow Element's Contributing Guide.
[ ] Make sure you are merging your commits to dev branch.
[ ] Rebase before creating a PR to keep commit history clear.
[ ] Add some descriptions and refer relative issues for you PR.

#1546

顺便问下 之前那个限制minmax那边的哪去了。。。

@Kingwl 哪个？

#1478
这个


Delete prefix

Prevent OMB from trying to delete existing topics, including those it probably shouldn't delete

$ grep ^reset driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml
reset: true
$ sudo bin/benchmark -d driver-redpanda/redpanda-ack-all-group-linger-10ms.yaml workloads/1-topic-1-partition-1kb.yaml driver-redpanda/deploy/workloads/1-topic-100-partitions-1kb-4-producers-10k-rate.yaml  -t swarm
...
[boilerplate deleted]
...
03:37:34.073 [main] INFO - Using SwarmWorker workers topology
03:37:34.306 [main] INFO - --------------- WORKLOAD : 1 topic / 1 partition / 1Kb --- DRIVER : Redpanda---------------
03:37:35.012 [main] INFO - Created 1 topics in 266.115264 ms
03:37:35.027 [main] INFO - Created 1 consumers in 9.33021 ms
03:37:35.034 [main] INFO - Created 1 producers in 6.600273 ms
03:37:35.034 [main] INFO - Waiting for consumers to be ready
03:37:41.084 [main] INFO - All consumers are ready
03:37:41.092 [main] INFO - ----- Starting warm-up traffic (30m) ------
^Cubuntu@ip-10-0-0-47:/opt/benchmark$ rpk topic list
NAME                     PARTITIONS  REPLICAS
test-topic-HIS6p_w-0000  1           3

Run a subsequent time, I see that the topic name has changed, so I think this is correctly deleting things.
03:37:58.719 [main] INFO - --------------- WORKLOAD : 1 topic / 1 partition / 1Kb --- DRIVER : Redpanda---------------
03:37:59.331 [main] INFO - Created 1 topics in 213.207202 ms
03:37:59.344 [main] INFO - Created 1 consumers in 8.237658 ms
03:37:59.350 [main] INFO - Created 1 producers in 5.751003 ms
03:37:59.351 [main] INFO - Waiting for consumers to be ready
03:38:05.392 [main] INFO - All consumers are ready
03:38:05.400 [main] INFO - ----- Starting warm-up traffic (30m) ------
03:38:15.664 [main] INFO - Pub rate 48808.526 msg/s / 47.665 MB/s | Cons rate 48859.609 msg/s / 47.714 MB/s | Backlog: -0.522 K | Pub Latency (ms) avg: 7.399 - 50%: 7.390 - 99%: 12.623 - 99.9%: 14.154 - Max: 19.185 | Pub Delay Latency (us) avg: 41.745 - 50%: 39.000 - 99%: 72.000 - 99.9%: 79.000 - Max: 680.000
03:38:15.682 [main] INFO - E2E Latency (ms) avg: 9.624 - 50%: 9.574 - 99%: 15.356 - 99.9%: 17.401 - Max: 6015.871
^Cubuntu@ip-10-0-0-47:/opt/benchmark$ rpk topic list
NAME                     PARTITIONS  REPLICAS
test-topic-KykYFyc-0000  1           3

oh, and just to confirm I also tried runs with additional topics in the server and they were correctly ignored during the delete.


Make sure required PVC is created in reconciler test 👶

Changes
When I was working on #1417 (which added the ability to create PVCs for
the Volume Resource and has since been abandoned) I was surprised to
realize that the reconciler test for the PipelineRun controller doesn't
verify that the PVC has been created. It does make sure its attached and
this is covered by the end to end tests that wouldn't work without it,
but I thought it made sense to test here too since we can.
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[x] Includes tests (if functionality changed/added)
[n/a] Includes docs (if user facing)
[x] Commit messages follow commit message best practices

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.

/lgtm

/test pull-tekton-pipeline-integration-tests

/test pull-tekton-pipeline-integration-tests


Word shows in the speaker's gaming page.

At the beginning of each turn, the speaker’s page should display the given word and an instruction.

Mockup UI:


First commit of redis cache utilising predis

@Spuds not sure if you want this as part of the core, or if I am doing this the right way.
The ip for the redis server is hardcoded currently, so if you do a checkout edit this line to what your ip is to get it working.
$this->obj	= new \Predis\Client('tcp://<IP_ADDRESS>:6379');
I will change and work out how to add multiple different servers if you are happy using predis. It seems to work ok otherwise.

I picked the Redis.php file from this PR and renamed it to Predis.php because I also added a method to use the pecl phpredis extension.
I'm still unsure what to do about the predis libray itself.  I'm inclined to add that to composer and start using the vendor library in place of the ext library going forward.  Then this would be added to the suggest section and the core would only have the single interface file to translate elk speak to predis speak.
Also sorry this took me so long to get to, life happens!

For completeness, the new PR is https://github.com/elkarte/Elkarte/pull/3801
It has both methods and also adds (back again) the cache password and UID values as Redis can have auth() enabled so we need to support that.  I did not add that to the predis method just yet but did test it with phpredis

Closed as this was incorporated in https://github.com/elkarte/Elkarte/pull/3801


Question-sortablelist

Hi,
in surveyjs when i use sortablelist then it gives me two column on top of each other, then i can drage from column to the other column which is on top,
if i want to have these two column next to each other, how can i have it?
i need to have thoseto columns next to each other then i drag items from left column to the right side column,
Best Regards

I hope styled solution will work for you - https://plnkr.co/edit/HrRvIs6utNJhUcBGalsf?p=preview
I've used the following CSS:
.sjs-sortablejs-root {
width: 100%;
}
.sjs-sortablejs-root > div {
vertical-align: top;
display: inline-block;
width: 48% !important;
}
.sjs-sortablejs-root > div:last-child {
margin-left: 2%;
}
https://surveyjs.answerdesk.io/ticket/details/T2117


fix(tabs): fix tab css cursor

fix tab cursor for hover state on non-disabled tab.

Fixes #5247

just a note that i changed the order of the css styles to match the ones for uib-tab.disabled - i think Bootstrap actually provides a recommendation for style ordering but I don't know what it is off the top of my head.

Crap, I just saw this:  https://github.com/angular-ui/bootstrap/blob/master/CHANGELOG.md#breaking-changes.  If we don't want to merge this, I understand.

I'm fine with this being merged - less differences from prior tab behavior.


Lowering functions with default parameter values

GLSL doesn't support default values on function parameters, so we need to eliminate their use during lowering.
A simple strategy would be to lower the original function, and then generate a bunch of helpers that take fewer parameters and call the original with the default values plugged in.
The main down-side of that approach is that it could cause problems if the signature of the generated functions matches any existing function of the same name (although that should have created ambiguity in the first place).
Another alternative is to lower the call sites differently, by plugging in the default-value expression for missing arguments. That would handle many simple cases, but would create problems if the default-value expression ever relied on the lexical context of the original function.
I think we should go with the first option, and rely on a more general renaming pass to solve the collisions if they ever arise.

This issue was opened for the source-to-source case. Now this needs to be handled by the IR.
The simple answer is to generate extra IR functions with fewer parameters that forward with the defaulted argument values. Let's plan to do that.


How to use the update command to update the name of a Host?

Can this command be used to update the name of a App Service Plan?
e.g.
az appservice plan update --ids "{id}" --name "newname"

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f99cdf3a-4fd3-e949-aabe-1b26fe828444
Version Independent ID: 1c2e7517-1275-9e30-db67-393c0451055f
Content: az appservice plan
Content Source: src/azure-cli/azure/cli/command_modules/appservice/_help.py
Service: app-service
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

also posted to SO: https://stackoverflow.com/questions/59188644/how-to-update-the-name-of-a-app-service-plan-using-azure-portal-or-cli

What would be also awesome. Is that if the Docs were to include how to
CHANGE app Service plan for a WebApp,
then it would work around a bug in the Azure Portal.

there is no way to rename & existing resource. Thanks.


Add openfga v1

Add openfga interface v1:

Adds grpc endpoint
Pass the URL as is instead of each component separately
Adds the option to use a DNS hostname instead of IP

cc @canonical/identity @alesstimec

I removed the address (IP) from the databag. Are there use cases where in k8s environment we would prefer to use an IP over a dns name? Perhaps for cross-controller relations (k8s-metal)? Is it enough to get the IP address from juju (not sure how this works).
If we want to keep the address, then we could pass both the URLs, dns and IP, and have a function in the lib so that the requirer charm chooses which one it wishes to use.

when ingressing with nginx, as it only supports IP backends.

@nsklikas I can't see the diffs between commits as you're force-pushing 😂  but looks ok to me now!


integer sizes

we need macros for these to handle AOCF variants.
typedef intptr_t MPI_Aint;
typedef int64_t  MPI_Offset;
typedef int64_t  MPI_Count;

typedef int MPI_Fint;

Fixed via #18.


setterAction, applySet, applyCall, applyDelete

Added the model property option setterAction so that it automatically implenents model prop setters wrapped in actions.
Added applySet, applyDelete, applyCall to be able manipulate data without the need to use modelAction.

Coverage increased (+0.3%) to 89.064% when pulling 3ceb50ef46a6f2ca464814f3d500b1958600583f on setterAction into 6a04aa57f1f4161997a938e6574c14004fb9d3ec on master.


Ease GraphQLite security annotations tests

Currently, if you want to test the security of a GraphQL endpoint, you have to write the query or mutation by hand.
It would be great to have a sort of wrapper which could generate/simulate the query or mutation for us.

Probably a duplicate of #252


Weird issue when using use_enum_values in Pydantic v2

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
I encountered an extremely weird issue when using use_enum_values in a pydantic model. It works as expected in most of the cases but when I add a field which is a list of another model and if that other model multiple fields which has the same enum type as the original model, the enum value fails to serialize to string when using model_dump.
Example Code
from enum import Enum
from typing import Optional

from pydantic import BaseModel, ConfigDict, conlist

class Currency(Enum):
    USD = "USD"
    CAD = "CAD"

class MyBaseModel(BaseModel):
    model_config = ConfigDict(
        use_enum_values=True,
    )

class TestModel(MyBaseModel):
    currency: Currency
    amount: int

class PreferredCurrencies(MyBaseModel):
    currency_one: Optional[Currency] = None
    currency_two: Optional[Currency] = None

# Model similar to TestModel with addition of an extra field 'preferred_currencies'
class TestModel2(MyBaseModel):
    preferred_currencies: Optional[conlist(item_type=PreferredCurrencies)] = []
    currency: Currency
    amount: int

m1 = TestModel(currency=Currency.USD, amount=100)
print(m1.model_dump(exclude_none=True))  # Output: {'currency': 'USD', 'amount': 100}

m2 = TestModel2(
    currency=Currency.USD,
    amount=100,
)
print(
    m2.model_dump(exclude_none=True)
)  # Output: {'preferred_currencies': [], 'currency': <Currency.USD: 'USD'>, 'amount': 100}

Python, Pydantic & OS Version
pydantic version: 2.9.2
        pydantic-core version: 2.23.4
          pydantic-core build: profile=release pgo=false
                 install path: /Users/pranab/.pyenv/versions/3.12.5/envs/my-env/lib/python3.12/site-packages/pydantic
               python version: 3.12.5 (main, Sep 20 2024, 23:47:29) [Clang 15.0.0 (clang-15<IP_ADDRESS>)]
                     platform: macOS-15.0-arm64-arm-64bit
             related packages: typing_extensions-4.12.2
                       commit: unknown

@mpranab7890,
Thanks for the report. At a first glance, definitely looks like a bug. Probably a good first issue for someone looking to get their hands dirty in some schema building code!

Hi there, I'd like to take up this issue as a first-time contributor! Indeed, there is a difference between the schemas for the currency field depending on whether I remove preferred_currencies from TestModel2, as observed in TestModel2.__pydantic_core_schema__. Will be looking into it.

Hi there,
I believe these piece of code is responsible for the issue.
The comment states: "we just always rebuild if the class has a generic origin," but the actual behavior of the code is different. The rebuild occurs when the class does not have a generic origin. Therefore, I believe that the correct condition at line 697 should be:
       if cls.__pydantic_generic_metadata__['origin']

That seems right! If needed, I can add a test that is a more minimal example of what OP provided.

could I create a new pull request for this @sydney-runkle ?

Please go for it, I ran into a failed test with a recursive json schema after applying that fix and couldn't figure it out 😅

Internal details of the issue:

The core schema for PreferredCurrencies is generated. During schema cleaning, because Currency is referenced twice and because enum schemas have a reference available, the core schema roughly looks like this:

{
│   'type': 'model',
│   'cls': <class '__main__.PreferredCurrencies'>,
│   'schema': {
│   │   'type': 'model-fields',
│   │   'fields': {
│   │   │   'currency_one': {
│   │   │   │   'type': 'model-field',
│   │   │   │   'schema': {
│   │   │   │   │   'function': {'type': 'no-info', 'function': operator.attrgetter('value')},
│   │   │   │   │   'schema': {'type': 'definition-ref', 'schema_ref': '__main__.Currency:94912979623376'},  # <-- inlined
│   │   │   │   │   'serialization': {'type': 'function-plain', 'function': <function GenerateSchema._enum_schema.<locals>.<lambda> at 0x79ca5910e2a0>},
│   │   │   │   │   'type': 'function-after'
│   │   │   │   },
│   │   │   │   'metadata': {}
│   │   │   },
│   │   │   'currency_two': {
│   │   │   │   'type': 'model-field',
│   │   │   │   'schema': {
│   │   │   │   │   'function': {'type': 'no-info', 'function': operator.attrgetter('value')},
│   │   │   │   │   'schema': {'type': 'definition-ref', 'schema_ref': '__main__.Currency:94912979623376'},  # <-- inlined
│   │   │   │   │   'serialization': {'type': 'function-plain', 'function': <function GenerateSchema._enum_schema.<locals>.<lambda> at 0x79ca5910e3e0>},
│   │   │   │   │   'type': 'function-after'
│   │   │   │   },
│   │   │   │   'metadata': {}
│   │   │   }
│   │   },
│   │   'model_name': 'PreferredCurrencies',
│   │   'computed_fields': []
│   }
}

The schema for the __main__.Currency:94912979623376 enum is:
{
│   'type': 'enum',
│   'cls': <enum 'Currency'>,
│   'members': [<Currency.USD: 'USD'>, <Currency.CAD: 'CAD'>],
│   'ref': '__main__.Currency:94912979623376',
│   'metadata': {'<stripped>'}
}

and as we can see, it was inlined for both fields. Note that the core schema for the two fields are of type function-after. It's basically an after validator that will do getattr(enum_value, 'value'), essentially converting Currency.USD/CAD to 'USD'/'CAD'. This is only done if use_enum_values is used.

We generate the core schema for TestModel2. We enter the core schema generation for field TestModel2.preferred_currencies. because it refers to PreferredCurrencies, we use the cached __pydantic_core_schema__ property from it. _generate_schema_from_property has the effect of calling _unpack_refs_defs:
https://github.com/pydantic/pydantic/blob/fba836a616d301b8dadf48d404bb4791642f1bf5/pydantic/_internal/_generate_schema.py#L717-L726

Meaning the definition for the Currency enum from the previous code block will be added to the definitions of the current GenerateSchema class (and notice that it is the schema without the after validator!).

We enter the core schema generation for field TestModel2.currency. Because the definition of the Currency enum is already in the saved defs, it is reused as is.

So at first glance, looks like the ref of the enum schema is not put at the right place. Instead (if use_enum_values is used), it should be put on the after validator schema. However, what happens if the PreferredCurrencies did not have use_enum_values set, but TestModel2 did? Haven't tested, but I believe we will end up with the same issue. Perhaps a different reference should be generated, depending on the use_enum_values (not ideal)? Could https://github.com/pydantic/pydantic-core/issues/1337 solve the issue?

Impressing debugging, @Viicos. I suspect there are many bugs related to edge cases like this one re refs/defs management in the schema building process.


Error loading the extension

I get the following error:

Uncaught Error: Extension "prettify" could not be loaded. It was either not found or is not a valid extension.

I load it as stated in the docs:
var converter = new Converter({extensions: ['prettify']});

I wonder if anyone is still actively using this extension. npm suggest that there are barely 100 weekly downloads for this extension, whereas showdowjs itself has over 300k per week. Is there some other way of "prettifying" the code without using this extension that people tend to prefer?

I recommend using PrismJS to take care of the code blocks highlighting.
Showdown generates code blocks starting with this kind of markup:
<code class="js language-js">
    ...

PrismJS will detect the language-js class (assuming you have installed prism with support for javascript) and it will do its job.


⚠ Jerry Savelle Ministries International Australia has degraded performance

In 4ebd505, Jerry Savelle Ministries International Australia (https://jsmiaustralia.org) experienced degraded performance:

HTTP code: 200
Response time: 8229 ms

Resolved: Jerry Savelle Ministries International Australia performance has improved in 41de442 after 6 minutes.


90-test_store.t fails on MSYS2/mingw

The above test is failing on msys2/mingw with lots of errors like this:
Couldn't open file or uri file;C:\msys64\home\Matt\openssl\test\certs
1972:error:02016002:system library:stat:No such file or directory:crypto/store/loader_file.c:812:file;C:\msys64\home\Matt\openssl\test\certs
1972:error:2C064069:STORE routines:ossl_store_get0_loader_int:unregistered scheme:crypto/store/store_register.c:217:scheme=file;C
../../util/shlib_wrap.sh ../../apps/openssl.exe storeutl 'file:/home/Matt/openssl/test/certs' => 1
not ok 194

Sure enough trying that command from the msys2 command line I get much the same result. The reason is due to msys2 file mangling. The Msys2 shell converts things it thinks are UNIX style filenames into native filenames before passing them to the application. Running this command from the command line succeeds:
$ MSYS2_ARG_CONV_EXCL="*" ../util/shlib_wrap.sh ./openssl storeutl 'file:/c:/msys64/home/Matt/openssl/test/certs'

The problem here is that it requires knowledge of the msys install location, i.e. "c:/msys64/". Not sure how to get that.
Thoughts @levitte?

No thoughts so far, but am willing to make a test of my own...  I'm not aware of this file mangling stuff, do you have a quick pointer to reference documentation on it?

Unfortunately not, I've not managed to find a good reference on it. Google has various references but nothing definitive that I can find.

Found some here:
http://www.mingw.org/wiki/Posix_path_conversion
This is frustrating...

I think that the cleanest we can do is to avoid the tests if file: URIs without the authority part when testing in mingw.  I'm currently checking if cygwin has the same issue

Current openssl (1.1.0g) tests work on MSYS2 with
MSYS2_ARG_CONV_EXCL="file" make test
This solves a path conversion error in the _pem tests. Note that some other tests actually need the path conversion of MSYS2, so MSYS2_ARG_CONV_EXCL="*" is too much.


Pass CA cert as secret rather than string in capi-provider-agent

/lgtm

/hold

/hold cancel
/lgtm

/approve

/retest-required

/retest-required


Create alicejw.markdown author file

create author card for OpenSearch technical writer
Description
[Describe what this change achieves]
Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

closing as duplicate/i created a direct PR from project-website to replace this one.


Injection exploit in git-info

As reported in https://github.com/sorin-ionescu/prezto/issues/1267:

git-info seems to not do proper escaping when retrieving the branch name. For example, setting the branch to ./an_executable will run the local executable. An example repo can be found here.

Actually, when branch is named like $(./an_executable). Need to check how our version of git-info and our prompts are reacting to this.

The "Injection exploit" title from the issue you linked is a bit sensationalized. I guess technically, but we're dealing with a shell environment here; it's all pure "command execution" anyway.


ISDK-2147: Add iOS 12.0 compatibility notice.

Please note that the KB link is not final.

I'm closing this PR based upon findings that iOS 12.0-beta5 no longer has runtime symbol conflicts with RTC classes.


Struggling to understand the new TabStop functionality along with new Scrolling behavior

Hello,
I recently converted my application Retrowarden to the v2 Terminal GUI.  Many improvements so i am very excited to see v2 continue to develop.
One major area of confusion i have is tab behavior and scrolling.  I removed all the old ScrollBar code i had, but i am struggling to make scrolling work in the application.  It would seem that in order to be compliant with "Keyboard Required" tenet, the appropriate place for me to handle the need to scroll to the control which is about to receive focus is the AdvanceFocus method?  I want to make sure that the intention is for the developer to manage this via AdvanceFocus (or some other method/event), and not have it just be default behavior of the underlying system to make sure that the control with focus is visible.  If the intention is for the developer to manage making sure the control that receives focus is viewable, I would really appreciate an example if possible, as i am struggling with making this work in v2.
As a precursor to that, however, is an understanding of how the new TabStop functionality is supposed to work.  I have gone through my application's Views and set TabStop appropriately for all of them (I think).  I have added them in the order in which i wanted them to be tabbed, even though there is no longer a way to set tab order directly.  I still do not understand how the underlying system is
determining the order of tab navigation for views.  Whenever i Tab through the controls, many are skipped and the order is not Top Left to Bottom Right as you would expect.  To take advantage of the fact that my application has several common controls across detail input forms, i created the following structure.
+----------------------------+
+ Common Header Controls     +
+ (part of base class)       +
+----------------------------+
+----------------------------+
+ Custom Detail View         +
+ (part of derived class)    +
+----------------------------+
+----------------------------+
+ Common Footer Controls     +
+ (part of base class)       +
+----------------------------+

At runtime, depending on which type of item the user wants to add/edit, i swap in a "Detail View" of the appropriate type in the middle of the common header and footer controls.  The Views contained in this Detail View never receive focus via a Tab key press.  I suppose i could just create separate views for each item type and duplicate the common controls to get rid of the hierarchy, but i would prefer not to do that.  I had a similar problem in V1, and the solution was for me to sprinkle in some calls to FocusFirst along with setting the TabOrder custom after the Views had all been assigned.  I cannot set TabOrder any longer (the code is currently commented out in my project), so i am not sure how to get the application to consistently tab through the controls in the order that a user would expect.  Even for those that it tabs to, the order kind of bounces around and is not in an order a user would expect.
Describe the solution you'd like
I would like to either understand how to make the current v2 tabbing system work, or have fine-grained control over the order in which the controls i place on the screen are tabbed.  On the surface, the v1 solution of TabOrder made sense, but the underlying view composition didn't seem to respect those when you set them before the views were added at runtime, hence the need for me to go back with a custom method and override whatever the order was.  I appreciate the new TabStop style, but without any way to directly influence the order in which the controls get focus, I don't know how to make that work.
For scrolling, just an example of how it is intended to work with keyboard events would be helpful.  I don't see any other method in v2 that would be the appropriate place to check to see if a control is visible based on is x/y relative to the ViewPort other than AdvanceFocus (e.g. no Enter or GotFocus).  An example that shows the intended behavior for an application to check a View's position relative to the visible part of the screen and what to call to advance the scrolling so that the control is visible would be great.
Thank you for all the great work!

As a precursor to that, however, is an understanding of how the new TabStop functionality is supposed to work. I have gone through my application's Views and set TabStop appropriately for all of them (I think). I have added them in the order in which i wanted them to be tabbed, even though there is no longer a way to set tab order directly. I still do not understand how the underlying system is determining the order of tab navigation for views. Whenever i Tab through the controls, many are skipped and the order is not Top Left to Bottom Right as you would expect. To take advantage of the fact that my application has several common controls across detail input forms, i created the following structure.

First, thank you for posting all this! I'm eager to both help you and ensure that the new design actually works and makes devs happy. It's entirely possible you've found real issues that need to be addressed!!
The tab order in v2 is very simple: The order is the order in which the Views exist in the View.Subviews list.
+----------------------------+
+ Common Header Controls     +
+ (part of base class)       +
+----------------------------+
+----------------------------+
+ Custom Detail View         +
+ (part of derived class)    +
+----------------------------+
+----------------------------+
+ Common Footer Controls     +
+ (part of base class)       +
+----------------------------+

I'm a bit confused by the base/derived stuff going on here. Perhaps your issue is you should be using composition instead of inheritance. I'd have:

appView - The main container View. It would have n (n >= 2) subviews, Added in this order:
header = MyHeaderVIew()
detailview1 = SomeView()
...
footer = MyFooterView()

All focusable views must have CanFocus = true and in the above if any focusable view has TabStop = TabBehavior.TabStop things should just work.

For scrolling, just an example of how it is intended to work with keyboard events would be helpful.

Please see https://github.com/gui-cs/Terminal.Gui/pull/3820, which will likely be merged to v2_develop today. It completely revamps ScrollBar and scrolling and the new examples (and scrolling.md) should make this all clear. If it doesn't, then I have more work to do ;-).

I don't see any other method in v2 that would be the appropriate place to check to see if a control is visible based on is x/y relative to the ViewPort other than AdvanceFocus (e.g. no Enter or GotFocus). An example that shows the intended behavior for an application to check a View's position relative to the visible part of the screen and what to call to advance the scrolling so that the control is visible would be great.

Why do you need to know if a control is visible or not?
Assuming there's actually a good reason, the algo would be something like this:
bool isVisible = Viewport.Contains(isVisibleView.Frame.Location) && Viewport.Contains(isVisibleView.Location with { X = isVisibleView.X + isVisibleView.Width, Y = isVisibleView.Y + isVisibleView.Height);

This would be true IFF the entire subview was visible. The algo for determining if just a part is visible is much tricker. I'd use the new Region class for this.
HOWEVER, there is a TON of complexity in doing something USEFUL with this info. That complexity is what has prevented me from investing in an API. It's a really hard problem to make it completely general purpose.
... which brings me back to WHY? Why do you think you need such functionality?

Can you help me get to the point where I can run your current code such that I get real data so i can test? I've never used bitwarden....

As a precursor to that, however, is an understanding of how the new TabStop functionality is supposed to work. I have gone through my application's Views and set TabStop appropriately for all of them (I think). I have added them in the order in which i wanted them to be tabbed, even though there is no longer a way to set tab order directly. I still do not understand how the underlying system is determining the order of tab navigation for views. Whenever i Tab through the controls, many are skipped and the order is not Top Left to Bottom Right as you would expect. To take advantage of the fact that my application has several common controls across detail input forms, i created the following structure.

First, thank you for posting all this! I'm eager to both help you and ensure that the new design actually works and makes devs happy. It's entirely possible you've found real issues that need to be addressed!!
The tab order in v2 is very simple: The order is the order in which the Views exist in the View.Subviews list.
+----------------------------+
+ Common Header Controls     +
+ (part of base class)       +
+----------------------------+
+----------------------------+
+ Custom Detail View         +
+ (part of derived class)    +
+----------------------------+
+----------------------------+
+ Common Footer Controls     +
+ (part of base class)       +
+----------------------------+

I'm a bit confused by the base/derived stuff going on here. Perhaps your issue is you should be using composition instead of inheritance. I'd have:
* `appView` - The main container View. It would have n (n >= 2) subviews, `Add`ed in this order:

* `header = MyHeaderVIew()`

* `detailview1 = SomeView()`

* ...

* `footer = MyFooterView()`

All focusable views must have CanFocus = true and in the above if any focusable view has TabStop = TabBehavior.TabStop things should just work.

Thank you for that insight.  I will think about using a composite methodology to construct the overall detail view.  Basically, each detail view "inherits" some common properties from the parent.  For example, every item which can be saved in the application has an "Item Name", so i have a base View with a Label and TextField for storing the item name.  The base View also has the "Save" and "Cancel" buttons.
I need to think about where i might use that common view type (the base class) in other parts of the application, but a composite pattern might work.

I just ported your code to the latest v2_develop. Would you like a PR?
Not sure everything is working because I can't get past login, but it should help.

 This is a great opportunity for me to ensure I understand how a "real" dev (not one of us maintainers) does things naturally!

Can you help me get to the point where I can run your current code such that I get real data so i can test? I've never used bitwarden....

Hi  - sure, i have some test credentials that you can use.  The app is in a tricky state right now, but you should be able to see the two issues on one of the detail forms.  What you should do it go to Vault - Connect and put these credentials in<EMAIL_ADDRESS>with password "otGZkrC7kWPd6g" (both without quotes).  You should then see the vault screen loaded with some test items.  The top one should be highlighted and you can press 'F3' to edit that item.  Since that is a item of type "Login", the detail form that is loaded is a LoginDetailView.  You will see that the first control to get focus is the combo box for "Folder".  Pressing Tab will move the focus back to Item Name text field, etc.  After 3-4 tabs, the cursor will disappear.  That is because Focus has skipped all the middle controls and gone down past the bottom of the view port, to the button for "New Custom Field".  Then it goes to "Save", then "Cancel", then back up to the "Folder" combobox.  All of the controls in the middle are never given focus.

I just ported your code to the latest v2_develop. Would you like a PR?
Not sure everything is working because I can't get past login, but it should help.

Sure that would be great!

haha sorry about that - forgot about the setup part. The file is bw.exe. you need to download the CLI application from Bitwarden Help CLI

With the new FileDialog you can actually place a restriction on what user can pick

    class BwDotExe : IAllowedType
    {
        /// <inheritdoc />
        public bool IsAllowed (string path)
        {
            return Path.GetFileName (path).Equals ("bw.exe");
        }

        /// <inheritdoc />
        public override string ToString () { return "bw.exe"; }
    }
    private void CreateDialog ()
    {
        var ofd = new FileDialog ()
        {
            MustExist = true,
            AllowedTypes = [new BwDotExe ()]
        };
        Application.Run (ofd);

        if (!ofd.Canceled)
        {
            MessageBox.Query ("you picked", ofd.Path, "Ok");
        }

Thank you for that suggestion - I will integrate that!

What font do you have in your Terminal setup?

I'm trying to figure out why you're not getting the right glyphs for buttons.
With that font, I get:

I was able to login once. Now each time I run the app and try to login I get

I was able to login once. Now each time I run the app and try to login I get

I am sorry about that.  That will happen if the app crashes - I haven't fixed that yet.  For now, you can go to a command prompt and type bw logout and that should log you out.
Pressing escape to exit the app also doesn't fire the logic to make sure the user session is cleaned up.

@dasien perhaps this will be easier with a smaller sample app? Could you whip up an app that uses your infrastructure that demos the focus/scrolling you want to achieve?
One thing I noticed in your code is you use a ton of absolute layout, where you' are specifying absolute values for locations/sizes of views. You will simplify your overall solution and reduce a ton of fragility by changing to using computed layout.

@tig hmm let me see if I can just get some dummy data loaded in those detail views and make one of them a separate project.  Once you are logged in, it should just be a matter of pressing F3 to edit the first selected item in the list view and from there the scrolling and tabbing behavior is apparent.
I do use computed layout some on the main form, where I have very few control which end up filling the parent form.  Where I have a lot of input controls, however, I am not sure that computed layout is going to be helpful, but I could experiment with that.
Are you having issues getting to the detail form now?

I am going to create a "Debug" VaultRepository so that you can put the application into a mode where it doesn't try to make CLI calls and just returns some default data.  I tried to just extract the detail forms but there is just too much complexity there.
Give me the evening to create this and the way to put the application in Debug mode and that should make it much easier to not have to worry about the CLI/Bitwarden parts and just navigate around the UI.

@tig   Ok i pushed an update that makes it so you don't need to use the CLI.  In the Program class, you can pass a boolean value to MainView that will put the application in debug mode.  In this mode, it will not try to login or fetch actual data from a vault, it will just load some static data.  You can't save anything in this state, but this should get the application to where you can see the scrolling and tab behavior.  When you do Vault -> Connect, you can put any values in for your login and you should then see the vault contents in the ListView.  Press F3 to edit one of the items and a detail form will come up where you can see the first field doesn't have focus and tabbing bounces the focus around.  Scrolling to the currently focused control is also not happening.
I will clean up this debug mode so things can be temporarily written, but this should be enough to show what we are trying to see.

As a precursor to that, however, is an understanding of how the new TabStop functionality is supposed to work. I have gone through my application's Views and set TabStop appropriately for all of them (I think). I have added them in the order in which i wanted them to be tabbed, even though there is no longer a way to set tab order directly. I still do not understand how the underlying system is determining the order of tab navigation for views. Whenever i Tab through the controls, many are skipped and the order is not Top Left to Bottom Right as you would expect. To take advantage of the fact that my application has several common controls across detail input forms, i created the following structure.

First, thank you for posting all this! I'm eager to both help you and ensure that the new design actually works and makes devs happy. It's entirely possible you've found real issues that need to be addressed!!
The tab order in v2 is very simple: The order is the order in which the Views exist in the View.Subviews list.
+----------------------------+
+ Common Header Controls     +
+ (part of base class)       +
+----------------------------+
+----------------------------+
+ Custom Detail View         +
+ (part of derived class)    +
+----------------------------+
+----------------------------+
+ Common Footer Controls     +
+ (part of base class)       +
+----------------------------+

I'm a bit confused by the base/derived stuff going on here. Perhaps your issue is you should be using composition instead of inheritance. I'd have:

appView - The main container View. It would have n (n >= 2) subviews, Added in this order:
header = MyHeaderVIew()
detailview1 = SomeView()
...
footer = MyFooterView()

All focusable views must have CanFocus = true and in the above if any focusable view has TabStop = TabBehavior.TabStop things should just work.

I never really answered this, but this is effectively what is happening.  The "base" view has the header and footer controls and a variable called "_subView" that is assigned the appropriate detail view.

As a precursor to that, however, is an understanding of how the new TabStop functionality is supposed to work. I have gone through my application's Views and set TabStop appropriately for all of them (I think). I have added them in the order in which i wanted them to be tabbed, even though there is no longer a way to set tab order directly. I still do not understand how the underlying system is determining the order of tab navigation for views. Whenever i Tab through the controls, many are skipped and the order is not Top Left to Bottom Right as you would expect. To take advantage of the fact that my application has several common controls across detail input forms, i created the following structure.

First, thank you for posting all this! I'm eager to both help you and ensure that the new design actually works and makes devs happy. It's entirely possible you've found real issues that need to be addressed!!
The tab order in v2 is very simple: The order is the order in which the Views exist in the View.Subviews list.
+----------------------------+
+ Common Header Controls     +
+ (part of base class)       +
+----------------------------+
+----------------------------+
+ Custom Detail View         +
+ (part of derived class)    +
+----------------------------+
+----------------------------+
+ Common Footer Controls     +
+ (part of base class)       +
+----------------------------+

I'm a bit confused by the base/derived stuff going on here. Perhaps your issue is you should be using composition instead of inheritance. I'd have:

appView - The main container View. It would have n (n >= 2) subviews, Added in this order:
header = MyHeaderVIew()
detailview1 = SomeView()
...
footer = MyFooterView()

All focusable views must have CanFocus = true and in the above if any focusable view has TabStop = TabBehavior.TabStop things should just work.

Circling back to this.  I think I have solved 1 of the 3 problems I had.  The "Custom Detail View" is now receiving tabs.  The issue was in my code.  I was not setting CanFocus = true on the top level custom view.
I still have two issues - one is the tab order of controls and the other is scrolling.
For the first one, "The tab order in v2 is very simple: The order is the order in which the Views exist in the View.Subviews list." - Ok that makes sense, but that makes the question then, "What causes that order to be what it is?"  On my View I add two labels, which are marked as CanFocus = false.  Then I add a TextField with CanFocus = true and then a ComboBox also with CanFocus = true.  There are more controls added, but for the purpose of this question we don't need to look beyond these (I don't think).
When the View loads, the ComboBox has focus and is listed as the [0]th element in the parent View list of SubViews, so I am not sure why that is happening.  I can put a hack in and just set the HasFocus property of the TextField to true, but the underlying order is still wrong, so pressing Tab from that field doesn't advance to the next field (which should be the ComboBox according to how I added them to the parent View and how the controls are laid out visually).
The 3rd problem is the scrolling to a control with focus so that it is in the visible part of the View and I haven't made any progress on when to check for that, etc.  I will have an update in a bit that fixes a little more tab order stuff so that all the controls are assigned to the View in the order I want them to be tabbed through.

I created a simple test view to illustrate the issue i am having with the ComboBox getting the focus when the form loads and the tab order being non-intuitive because of how things are ordered in SubViews.  In this example, even though the controls are added to the parent in the order Label, TextField, ComboBox, TextField, the order in the SubViews arrary is ComboBox, Label, TextField, TextField, so the tabbing starts with the ComboBox, then goes to the first TextField, then to the next TextField`.
Visually, it should go TextField (upper left focusable control), then ComboBox, then the next TextField.
This is using 2.0.0-v2-develop.2329

        private Terminal.Gui.Label label;

        private Terminal.Gui.TextField textField;

        private Terminal.Gui.ComboBox comboBox;

        private Terminal.Gui.TextField textField2;

        public TestView()
        {
            InitializeComponent();
        }

        private void InitializeComponent() {
            this.textField2 = new Terminal.Gui.TextField();
            this.comboBox = new Terminal.Gui.ComboBox();
            this.textField = new Terminal.Gui.TextField();
            this.label = new Terminal.Gui.Label();
            this.Width = Dim.Fill(0);
            this.Height = Dim.Fill(0);
            this.X = 0;
            this.Y = 0;
            this.Visible = true;
            this.Arrangement = Terminal.Gui.ViewArrangement.Fixed;
            this.TextAlignment = Terminal.Gui.Alignment.Start;
            this.label.Width = Dim.Auto();
            this.label.Height = 1;
            this.label.X = 8;
            this.label.Y = 4;
            this.label.Visible = true;
            this.label.Arrangement = Terminal.Gui.ViewArrangement.Fixed;
            this.label.Data = "label";
            this.label.Text = "Heya";
            this.label.TextAlignment = Terminal.Gui.Alignment.Start;
            this.Add(this.label);
            this.textField.Width = 17;
            this.textField.Height = 7;
            this.textField.X = 14;
            this.textField.Y = 4;
            this.textField.Visible = true;
            this.textField.Arrangement = Terminal.Gui.ViewArrangement.Fixed;
            this.textField.Secret = false;
            this.textField.Data = "textField";
            this.textField.Text = "Heya";
            this.textField.TextAlignment = Terminal.Gui.Alignment.Start;
            this.Add(this.textField);
            this.comboBox.Width = 29;
            this.comboBox.Height = 2;
            this.comboBox.X = 38;
            this.comboBox.Y = 4;
            this.comboBox.Visible = true;
            this.comboBox.Arrangement = Terminal.Gui.ViewArrangement.Fixed;
            this.comboBox.Data = "comboBox";
            this.comboBox.Text = "";
            this.comboBox.TextAlignment = Terminal.Gui.Alignment.Start;
            this.Add(this.comboBox);
            this.textField2.Width = 21;
            this.textField2.Height = 1;
            this.textField2.X = 14;
            this.textField2.Y = 6;
            this.textField2.Visible = true;
            this.textField2.Arrangement = Terminal.Gui.ViewArrangement.Fixed;
            this.textField2.Secret = false;
            this.textField2.Data = "textField2";
            this.textField2.Text = "Heya";
            this.textField2.TextAlignment = Terminal.Gui.Alignment.Start;
            this.Add(this.textField2);
        }
    }

Thank you for that update - good to know I wasn't going crazy with adding things and them not being in the order in which I added them! I cleaned up some of my code in this area as well, to make the add order clearer.
@tig Could you point me to an example for how to implement scrolling based on the OP above?  Am I correct that the appropriate place to do that is AdvanceFocus()?  I am trying to determine if the control that is about to get focus is in the Viewable area of the screen and if not, move the viewable area so that it is visible.
Basically, as I am tabbing through the controls on a View I want to make sure that the one that is about to get focus is in the viewable area of the parent View, and if not, "scroll" the view so that the control about to get focus is viewable.

@tig Could you point me to an example for how to implement scrolling based on the OP above? Am I correct that the appropriate place to do that is AdvanceFocus()? I am trying to determine if the control that is about to get focus is in the Viewable area of the screen and if not, move the viewable area so that it is visible.
Basically, as I am tabbing through the controls on a View I want to make sure that the one that is about to get focus is in the viewable area of the parent View, and if not, "scroll" the view so that the control about to get focus is viewable.

I've been noodling on this... Would you be willing to submit a PR that does this:

Add a ViewportSettings.ScrollToMakeFocusedViewVisible flag - this behavior will only be enabled if a dev sets this flag.
Add a View.ScrollToMakeViewVisible(View view) API (in View.Content.cs).
On line 594 of View.Navigation.cs, in SetHasFocusTrue() add:

if (SuperView?.ViewportSettings.HasFlag(ViewportSettings.ScrollToMakeFocusedViewVisible)
{
  SuperView?.ScrollToMakeViewVisible(this);
}

The ScrollToMakeViewVisible (View view) API would:

Determine how far in the x and y direction the Viewport would need to be scrolled to make view fully visible. It would call ScrollHorizontal()/ScrollVertical() with these values.

I think this should work pretty well!

Yes i will work on that, sounds like fun and the solution makes sense.  It's Thanksgiving week and i have all my kids in town, so it may be a slow week for hobby coding :)

@tig I have the code staged to commit, but i wanted to make sure i put some kind of tests in.  Is SetFocusTests.cs the appropriate place?  All i can really test from a unit test perspective is that after the move, the ViewPort and parent View.Frame are aligned and the SubView is visible.

@tig I have the code staged to commit, but i wanted to make sure i put some kind of tests in. Is SetFocusTests.cs the appropriate place? All i can really test from a unit test perspective is that after the move, the ViewPort and parent View.Frame are aligned and the SubView is visible.

Yes.


Update the keyword.txt file

The keyword file need to be updated to the current availble functions, objects and constants.

Stats node: new exposed values
Live node: new exposed values

deleted string extraction functions

Updated the file with the latest code modifications in commit:
bb271bbf028022a25a01c92fce8f8e0104418855


Create a binder where you can pass a type and it will register methods as callbacks (design needed)

Forked from #311

Related #290

Proxy generation work tracked in #290

Assigning to myself.

Cutting this feature for


Added Preferred Gender Pronoun field and removed the logo from the payments page.

Other than my comment, it looks good!


AJM address M and D comments

This PR has work to address remaining comments from M and D.

@cclarkson I ended up doing a bit more editing than I originally intended, but hopefully all to the good. Very happy to discuss.

Thanks Chris. I have one more piece of work to do, which is to make the supplementary tables with the SNP data in. I'll work on that today and send you a PR asap.


Hey.    Don’t have an issue as I have not installed yet.   Today I run homeseer onPi and then I connect a HomeKit plugin to homeseer.  Love to eliminate homeseer and go direct.   How many people do you have using the plug in now?   Looks like I can use the default setting and won’t have to add specific devices.  That would be great as I have 30+ devices.

Describe Your Problem:

Logs:
Show the Homebridge logs here, remove any sensitive information.

Plugin Config:
Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

Plugin Version:
Homebridge Version:
Node.js Version:
NPM Version:
Operating System:

Hi @Tesla-P100FX, I'm not really sure how many use the plugin but I'd guess somewhere between 50 and 100 based on how many weekly downloads I'm getting. There was a weird spike of nearly 2000 downloads back in October 2020 but I don't think they were genuine users of the plugin (but I could be wrong).
As I said before though, if you have issues getting it working please provide the following details and I'll see if I can help you out:

Homebridge version
Plugin version
Copy of the config.json file (with sensitive information removed)
Copy of Homebridge logs (with Homebridge in DEBUG mode)


Update example RN 0.38.0 & React 15.4.0

Thank you so much, i just going to fix CSSNodeAPI and publish a new release.

Fixes shipped at 0.0.11

Thank you for your work. Works like a charm.


Q: Hosting the app as a Flask compatible web app in Dataiku

I'm a big fan of low code environments such as Tableau and Dataiku DSS and the latter has the capability to host webapps, but they only support a few specific (and one general webapp) category. Dash, Boke (and R shiny, but I want to focus on Pyhon).
There is also the "generic webapp" category which allows the user to create an HTML file, CSS, JS and a python backend, but that backend uses FLASK for its routing.
I am not very familiar with all the nitty gritty differences between WSGI and ASGI types of applications servers so I aooplogize if this is a silly question, but is there a way to host a streamsync/uvicorn app in this environment such as dataiku, where I don't have access to the NGINX configurations...
See more on dataiku webapps here for some background: https://doc.dataiku.com/dss/latest/webapps/index.html

I tried the following (thanks chatGPT)
HTML file

Javascript
$.get(getWebAppBackendUrl('/hello'), function(data) {
    const iframe = document.getElementById('myIframe');
    iframe.contentWindow.document.open();
    iframe.contentWindow.document.write(data);
    iframe.contentWindow.document.close();
});

Backend
import dataiku
import pandas as pd
from flask import redirect, request

import streamsync.serve
import uvicorn
import os
import threading

# Your Uvicorn ASGI app
def run_uvicorn():
    app_path = os.environ['MY_APP_PATH']
    print(app_path)
    mode = "run" # run or edit

    asgi_app = streamsync.serve.get_asgi_app(app_path, mode)

    uvicorn.run(asgi_app,
               host="<IP_ADDRESS>",
               port=5000,
               log_level="warning")

@app.route('/hello')
def first_call():
    return redirect("http://<IP_ADDRESS>:5000")

t = threading.Thread(target=run_uvicorn)
t.start()

(The MY_APP_PATH has the location of the main.py and ui.json etc.)
It does seem to run the hello app, but the redirection does not seem to work. This probably is too naieve a solution, since ASGI etc. using web sockets and this is not using that and probably requires more sophisticated soltuion that is beyond me ATM.
These are the logs I get form dataiky
2023-09-27 15:42:16,198 INFO Starting Webapp backend
2023-09-27 15:42:16,198 INFO Serving dependencies for html
2023-09-27 15:42:16,199 INFO Serving html
2023-09-27 15:42:16,199 INFO Starting backend for web app: TEST.z912iCE
/DSS/data/code-envs/python/streamsync/lib/python3.10/site-packages/fastapi/openapi/models.py:55: DeprecationWarning: `general_plain_validator_function` is deprecated, use `with_info_plain_validator_function` instead.
  return general_plain_validator_function(cls._validate)
/DSS/data/code-envs/python/streamsync/lib/python3.10/site-packages/pydantic_core/core_schema.py:3898: DeprecationWarning: `general_plain_validator_function` is deprecated, use `with_info_plain_validator_function` instead.
  warnings.warn(
/DSS/data/code-envs/resources/python/streamsync/ss-hello/ss-hello-world
2023-09-27 15:42:16,482 INFO Started backend on port 38299
2023-09-27 15:42:16,491 INFO <IP_ADDRESS> - - [27/Sep/2023 15:42:16] "GET /__ping HTTP/1.1" 200 -
2023-09-27 15:42:16,506 INFO From app log:
Stdout message during initialisation
Hello world!

From app log:
Stdout message during initialisation
Hello world!

2023-09-27 15:42:16,506 INFO From app log:
Stdout message during initialisation
Hello world!

2023-09-27 15:42:16,778 INFO <IP_ADDRESS> - - [27/Sep/2023 15:42:16] "GET /__ping HTTP/1.1" 200 -

Also tried this as JS to na avail...
document.getElementById('myIframe').src = "http://<IP_ADDRESS>:5000";

Well...I made it work!
In the end it was incredible simply to make it work, not sure why I struggled so much before :)
There was a small added complication, since I am running dataiku on a docker container, but this is all I needed to do

Ensure the port (5000) in my case, is open on docker (So -p 5000:5000 for docker command)
Create a simple one line HTML file with the hard code iP address for my local machine

<iframe src="http://<IP_ADDRESS>:5000">

Run the uvicorn app in a separate thread

import dataiku
import pandas as pd
from flask import redirect, request

import streamsync.serve
import uvicorn
import os
import threading

# Your Uvicorn ASGI app
def run_uvicorn():
    app_path = os.environ['MY_APP_PATH']
    print(app_path)
    mode = "run" # run or edit

    asgi_app = streamsync.serve.get_asgi_app(app_path, mode)

    uvicorn.run(asgi_app,
               host="<IP_ADDRESS>",
               port=5000,
               log_level="warning")

t = threading.Thread(target=run_uvicorn)
t.start()

And that's it! Now I can run my app inside dataiku as a webapp, allowing all the benefits of dataiky and streamsync!

Thanks for conducting and more importantly sharing this research.
@FabienArcellier also worked on a way to speed up deployment of Streamsync in a cloud environment via Gitpod (quite impressive) https://github.com/FabienArcellier/blueprint-streamsync
Looks like these options would work well for the official documentation.


missing return type on init method

Description
Not technically a bug, but an extra phpstan warning that could be avoided by default. Currently the generator doesn't add a return type on the module's init method, which throws an immediate phpstan warning.
Steps to reproduce

Create new module with phpstan type checking enabled
run phpstan and observe warning: "Method modules\mymodule\Module::init() has no return type specified."

I am pretty sure this goes for plugins as well.
Should be as straightforward as $class->getMethod('init')->setReturnType('void'); in generators/Module.php > writeModuleClass
Additional info

Craft version: any
PHP version: any
Database driver & version: any
Plugins & versions: any

Good call, and thanks for the PR! Merged in for the next release, however that will need to go out after Craft 4.4.11 is released as it depends on a pending bug fix (craftcms/cms@c371e21977aef2cde85dd1ba4c91bcb456b884db).

Generator 1.5.0 is out with those changes. Thanks again!


Refine histogram to fill in bar that school is in.

Background
Currently the histogram in the tool overlays a line for the selected school. Instead of this we want the bar that the school is in to be highlighted.
Task

Work out how to do this
Implement

Discussed with internal statistics colleagues and agreed to leave as line.


Rename definitions function definitions

Close #884.

Codecov Report

Merging #901 (7790be5) into main (5350751) will increase coverage by 0.12%.
The diff coverage is 99.16%.

@@            Coverage Diff             @@
##             main     #901      +/-   ##
==========================================
+ Coverage   84.31%   84.44%   +0.12%
==========================================
  Files         385      385
  Lines       39541    39859     +318
==========================================
+ Hits        33340    33658     +318
  Misses       6201     6201

Impacted Files
Coverage Δ

lib/ast-hir/src/prelude_module_modifier.rs
0.00% <0.00%> (ø)

lib/ast/src/ast/function_definition.rs
100.00% <ø> (ø)

lib/hir-mir/src/main_function_compiler.rs
0.00% <0.00%> (ø)

lib/hir-mir/src/test_function_compiler.rs
0.00% <0.00%> (ø)

lib/hir/src/analysis.rs
100.00% <ø> (ø)

lib/hir/src/analysis/type_checker.rs
99.24% <ø> (+0.03%)
:arrow_up:

lib/hir/src/ir/function_declaration.rs
82.35% <ø> (ø)

lib/hir/src/ir/function_definition.rs
100.00% <ø> (ø)

lib/hir/src/test/ir/function_definition.rs
100.00% <ø> (ø)

lib/mir/src/ir/function_declaration.rs
100.00% <ø> (ø)

... and 47 more

Continue to review full report at Codecov.

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


Allow you to customize the path to knife config files

The path to knife.rb is currently harcoded to $HOME/.chef/knife.rb.  Mine lives elsewhere.
Set KNIFE_CONF_PATH in your .zshrc to override $HOME/.chef/knife.rb.  Not setting that variable leaves it as it behaved before.
The plugin attempts to get the path to the cookbooks from the knife.rb conf file.  However, the knife.rb conf allows ruby in the cookbook_path definition (in my case cookbook_path is "#{current_dir}/../cookbooks"). Since zsh is not using ruby to parse the conf file, it fails to expand variables like #{current_dir}.  Rather than try and use ruby to interpret knife.rb (which is scary), I added an override for the cookbook directory.  Set KNIFE_COOKBOOK_PATH in your .zshrc to skip examining knife.rb for the cookbook_path.

This fixed #592


Comparing HashSet with List does not find differences

When comparing a HashSet<T> to another collection type like List<T>, the differences are not returned.
var hashSet = new HashSet<int> { 1 };
var list = new List<int> { 2 };

var compare = new CompareLogic();
compare.Config.IgnoreObjectTypes = true;

var result = _compare.Compare(hashSet, list);
// result.AreEqual is true

I had a dig through the other issues and the Wiki but couldn't find anything specific to HashSets.

@TimSirmovics The compare .NET Objects Library does not support something like that.  The IgnoreObjectTypes is more at the class level.  So if you have a Customer object and a Vendor object both deriving from a Person object with similar properties then you can compare that.  There has been no implementation made for comparing lists of different types.  This would be an enhancement.

@GregFinzer Looking at unit test CollectionsSame in CompareCollectionsTests, this test creates 2 collections with different types and uses the IgnoreObjectTypes to make the comparison work.
It seems that CollectionComparer was written to compare any two objects that implement ICollection, but HashSet<T> only implements ICollection<T> and not ICollection so this comparer is not used.
Would you be happy for me to see if I can get CollectionComparer working with ICollection<T>? And if so are you still happy for this to work because of  IgnoreObjectTypes?

@TimSirmovics Yes that sounds like a wonderful enhancement.  Please remember to add your test above to the test project.  Thanks so much!

Closing inactive issue.

Can we reopen this issue? This looks to be quite critical for what the library is supposedly meant to achieve.

@shihalv Sure, please implement this functionality with a unit test and I will merge in the pull request.

I had a look at this and implemented a GenericCollectionComparer inserted into the RootComparer immediately after the existing CollectionComparer, along with unit tests.
This caused some other unit tests to fail, some of which I am not sure how to proceed.
CompareDynamicTests.CompareLogicShouldHandleExpandoObjects()
Although ExpandoObject implements ICollection<KeyValuePair<string, object>>, you cannot access the properties of that interface.
I'm not too familiar with this object or dynamic in general, so I just excluded this type from the GenericCollectionComparer.
There may be a better solution.
CompareIndexerTests.TestIndexerLengthNegative()
This test compares two ListClass<Person>, which implement ICollection<Person>.
Currently this is dealt with by the ClassComparer, but would not get picked up by the GenericCollectionComparer.
The result is 3 differences, the 3rd of which is the index of the last item in List 1, [3], which List 2 doesn't contain.
This different is identified by the IndexerComparer.
My problem is the implementation of IgnoreCollectionOrder within the IndexerComparer.
The documentation for Comparing Lists of Different Lengths says that the comparison will end as soon as it reaches the end of one of the lists.
This is how the CollectionComparer works, it stops at the end of list 2 and does not register a difference.
The implementation in IndexerComparer also looks at this option, but will compare to the end of the longest list, registering differences for each index missing from one of the lists.
I would assume we would want the GenericCollectionComparer to act the same as  CollectionComparer, however that would be a breaking change, at least for this test case.
@GregFinzer thoughts?

With over 15 million downloads as of right now we want to prevent any breaking changes.   Implement similar to what is there today to get all the tests to pass.  If the counts of the collections are different then simply log a difference and exit immediately otherwise compare the collection items.  You might need to implement something in the IgnoreOrderLogic for your GenericCollectionComparer as well.

Yeah.. I'm just going to leave it.
There are inconsistencies in how collection differences are reported, depending on which comparer you end up in.
I don't want to add any breaking changes but the end result in my opinion is confusing.. using the same options and changing the collection types will give you different results.

Ok @TimSirmovics thanks for looking into this.


changes made for Redundant jump statements #684

Changes provided for Issue #684

Thanks for the PR.
While you did follow the instructions that were provided in #684, they were unfortunately not detailed enough (our fault). Please make the following changes to every changed line:

The "link to related SonarCloud issue" was meant to be a permanent link to a SonarCloud document that describes the issue (similar to how Microsoft does CA1812). Unfortunately, no such document for "SonarCloud S3626" comes up in a Google search, I had to search for "Code Analysis S3626" to get a hit: https://rules.sonarsource.com/csharp/RSPEC-3626.  This SonarCloud scan setup is temporary, not a permanent URL that we should put in the source code. We are working on an official SonarCloud setup in #709, but it isn't ready yet.
Do not add an additional line for the comment, place the comment after the code that is commented on the same line. Include the // also.

Example
// continue; // LUCENENET: Removed redundant jump statements. https://rules.sonarsource.com/csharp/RSPEC-3626

Thanks @NightOwl888, For the detail, I make changes asap.


Add a proposals dir and some future proposals

Signed-off-by: Brent Salisbury<EMAIL_ADDRESS>

Added some skeleton future proposals along with the immediate milestone-1 changes.

Closing for this process
   1. We open an issue for a feature/idea etc…
   2. We open a PR, linked to above issue, that contains a design
   3. Design is reviewed and merged
   4. Someone can open a PR to implement it
   5. The issue is finally closed when the implementation PR lands


Crash using fluid and non fluid modules in same pipe

I placed a pipe with a fluid filter, and a non fluid extraction module, the server crashed, and won't load.
I have fixed it by temporarily removing the mod.
Crash Report: https://pastebin.com/GtmP2Ux7

A normal pipe

Yeah you need a fluid pipe for fluid modules, I will work on fixing it so that you can't insert fluid modules into non-fluid pipes

Should be fixed in v0.4.2


[PoC] Write PostgreSQL spec tests using Testinfra to compare with Serverspec

Is your spike related to a problem or idea? Please describe.

Serverspec has no integration with Ansible - inventory is parsed by additional Ruby code (spec_helper.rb)
Running remote commands (in order to gather facts) inside a test is not supported. Instead "external" methods are used (which is not convenient) which use lower level calls (e.g. Specinfra.backend.run_command or Net::SSH.start).
Tests are not always concise. When you need to perform any processing on the output (e.g. stdout.force_encoding('UTF-8')), you have to use RSpec (longer) syntax.
Serverspec is Ruby based which requires knowing additional language and having additional developer tools (VS Code extensions, linting rules).

Describe the outcome you'd like

Comparison of tools: ServerSpec vs Testinfra based on real life case (PostgreSQL tests).

What is the reason or source for the spike

It is supposed that using Testinfra instead of Serverspec can give us some significant benefits.

Additional context
Example of migration from ServerSpec to Testinfra:
https://github.com/freedomofpress/securedrop/pull/1616
Molecule uses Testinfra as the default verifier (Serverspec is also available), see docs.
Additional info
https://testinfra.readthedocs.io/en/latest/
https://dev.to/koh_sh/using-testinfra-with-ansible-4n7b
Ansible integration
https://testinfra.readthedocs.io/en/latest/backends.html#ansible
https://testinfra.readthedocs.io/en/latest/modules.html#ansible

DoD checklist

[ ] Reader is able to understand the results of spike
[ ] The results of the spike are presented in a table (to show simply what are compared or researched parameters) / not applicable
[ ] Each value / cell in the results table is described more deeply below
[ ] Demo of the spike (automated as much as possible)
[ ] Design doc updated

Not going todo anymore spikes for Epiphany.


Added "when_any" feature

As described in issue #17 I have implemented the second Option: when_any
I would appreciate any feedback and what else I need to implement/change!
Best regards! :)

Hey @rsinger86,  Gentle ping! :)
Any Feedback on this PR?
Best regards,
Dario

Thanks, I really appreciate the contribution. However, I refactored things a bit internally in the last couple months, and during the process, I ended up adding this feature.


Revert "chore: added JSON files linting check (#35395)"

Description
This reverts commit 486662a2ed37a9e616d478c5ce296426d522c9c8.
Fixes #Issue Number
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test tags=""
:mag: Cypress test results

[!CAUTION]
If you modify the content in this section, you are likely to disrupt the CI result for your PR.

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[x] No

Closing this due to a merge conflict.
Another PR raised here: https://github.com/appsmithorg/appsmith/pull/35445


trouble with setting PYTHONPATH via envdir

Here is the directory structure I have set up for this scenario:
.
├── env
│   └── PYTHONPATH
├── lib
│   └── mypackage
│       ├── __init__.py
│       └── settings.py
└── myscript.py

3 directories, 4 files

And this is the command I am using to instantiate myscript.py: envdir env python myscript.py, where myscript.py tries to import mypackage. Because mypackage is nested inside the lib folder, myscript.py cannot see the package unless the PYTHONPATH is changed.
This is the traceback I get after running the above command:
Traceback (most recent call last):
  File "myscript.py", line 1, in <module>
    from mypackage.settings import *
ImportError: No module named mypackage.settings

If I set the PYTHONPATH manually in my current shell, it works though:
export PYTHONPATH="lib:$PYTHONPATH"
python myscript.py

I thought it might have something to do with being a relative PATH so I put the absolute path to the lib folder in my PYTHONPATH environment variable file and ran envdir again but it still didn't work.
I can see that the variable is definitely getting set by running the env command.
➜   testenvdir  envdir env env | grep "PYTHONPATH"
PYTHONPATH=PYTHONPATH="/Users/johria/Development/testenvdir/lib:$PYTHONPATH"

Do you have any ideas why this might not be working?

I created a repository with the test setup I showed above: https://github.com/AlJohri/testenvdir


Fix entrypoint for SDK 51. Update babel transforms

Please verify the following:

[X] yarn test jest tests pass with new tests, if relevant
[ ] yarn lint eslint checks pass with new code, if relevant
[X] yarn format:check prettier checks pass with new code, if relevant
[X] README.md (or relevant documentation) has been updated with your changes

Describe your PR
Since my upgrade to Expo 51.0.17 my EAS local build for iOS didn't work anymore. I had to change the entrypoint in the package.json. A brand new Expo project had it configured that way, instead of the old reference to node_modules
Along the way I saw the babel-proposal being incorporated into babel, so changed the devDependencies.

Interesting, I just built a dev and prod iOS build without any issues.
That being said I like the idea of keeping it in step with the Expo template, will review

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Expose change blockers in application API

This adds a "changeBlockers" field to the application
API (/application/v4/tenant/tenant1/application/application1).

I see #5084 was already created. Do we only want to display "is it blocked now"? Or list all known block windows?

Imho just displaying if it is blocked now is sufficient, I don't think this is worth spending too much effort on ...

@bratseth / @mpolden : Could we discuss on Wednesday? The additional information available here (over #5084) would allow us to answer part two of the "why is this not deploying" question, i.e. "when can we expect it to deploy".

Yes, I think knowing when the window opens up again is useful. Reopening until we conclude.

I'm in Warzaw ... anyway, not against adding more info, it's just more effort than I was prepared to spend, but no point in discussing that when the effort is in the past.

Merge?


The exported data is empty and the FBMN analysis fails

My operating system: windows 11
My mzmine version: 3.6.0

When I export data using GNPS mode, the exported data is empty and FBMN displays an error after running for a few minutes. What is the reason and how can I solve it?

Hi,
please use the search function before opening an issue every few minutes. This has been described multiple times.

您好，请在每隔几分钟打开一个问题之前使用搜索功能。这已经被描述过很多次了。

Hello, I tried all the previous methods and the results are still the same. Would you please give me some advice?

Please do not open multiple issues for the same thing. This is a community project and the documentation and old issues contain a lot of information.


The interface for defining rules is uncomfortable

I mean this issue to be a part of Boost Review.
The interface for defining rules in Boost.Parser has certain shortcommings relative to the similar feature in Boost.Spirit.
First, it uses macros. And one may ask if in C++17 we need to use macros for this. Especially that Boost.Spirit didn't have to.
Second, it uses macros in a potentially disturbing way. It departsfrom the referential transparency that good macros usually follow: it depends on the existence of names in the user space, but they are not mentioned as macro parameters. I refer to this:
BOOST_PARSER_DEFINE_RULES(doubles);

And this fails to compile because it expected that I would also define doubles_ref. When a new person comes to maintain code using this library, this will add to the steep learning curve. Also, if I have a convetion to append _ref to some variables for my own purposes, I may find that my conventions can no longer work when I start to use Boost.Parser.
Imagine that another library, say SuperBindings, also introduced such convention: that you have to use macros and that variables need to have shadow variables with a prefix of _ref. Then I wouldn't be able to use SuperBindings and Boost.Parser together. This reminds me of the constraints of C,where you do not have namespaces, and every library has to prefix its function with some gl_, and hope that it picked a unique prefix.
Also, when it is a macro, my intuition fails me as to where I can put it. If It was a variable, or a function, I would know where in my program to put it, because this follows normal C++ rules. When it is a macro, it can be any chunk of the syntax and I have no intuition where to put it? Can I put it at block scope? I learned that I cannot: I need to put it in a namespace-scope. But any namspace, or does it have to be some specific namespace?
Also, if I ever need to debug the program, the debugger will take me to declaraitons tht I never put in my code, and I do not recognize, because they were hidden under a macro.
Third, it forces me to declare rules in (some) namespace scope. So I cannot declare rules at block scope. But this was possible with Boost.Spirit. Boost.Spirit also offered me a way to specify the diagnostic text only when I want it, and not force me to do it always, even if I don't need it.

This is weird.  Where do you think I got this idiom from?  It comes from from Boost.Spirit.

My knowledge of Boost.Spirit rules comes from this part of the docs: https://www.boost.org/doc/libs/1_84_0/libs/spirit/doc/html/spirit/qi/reference/nonterminal/rule.html
Also, a live example:
https://godbolt.org/z/E4dzj5Gah

Spirit 2 is a very old library.  The later work on Spirit looks like this:
https://live.boost.org/doc/libs/1_68_0/libs/spirit/doc/x3/html/spirit_x3/tutorials/roman.html#__tutorial_spirit_define__

Thanks for the link.
In that case this Issue doesn't make much sense.
I must say that to the docs for the X3 version are not easily reachable from the Boost docs page.


[backport] Fix deprecated numpy.typeDict utilization

Backport of #5388 by @emcastillo

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit 31b68dfe64723ac91689506cc7c6056024d8dfeb, target branch v9) succeeded!


can't rsync 0-byte file to mount

encrypted mount on gdrive. trying to rsync a 0 byte file onto the mount breaks rsync.
I'm guessing that because you don't flush unwritten handles, it doesn't update the directory cache before the rename?  This wouldn't be a problem except for a file that didn't previously exist.  Of course I'm guessing without looking at code, so who knows.
here's everything:
bittaurus@bugs ~ $ uname -a
Linux bugs.are.everywhere 4.9.20-hardened-bugs-r1 #2 SMP Sun Apr 9 10:02:56 2017 x86_64 Intel(R) Pentium(R) CPU G850 @ 2.90GHz GenuineIntel GNU/Linux

bittaurus@bugs ~ $ rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

bittaurus@bugs ~ $ rclone --version
rclone v1.37-093-gb510c70cβ
- os/arch: linux/amd64
- go version: go1.8.3

bittaurus@bugs ~ $ rsync -a /home/bittaurus/0bytes /home/bittaurus/w
rsync: rename "/home/bittaurus/w/.0bytes.4toVlh" -> "0bytes": No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

bittaurus@bugs ~ $ rclone -vv mount b:Downloads ~/w
2017/08/13 18:31:35 DEBUG : rclone: Version "v1.37-093-gb510c70cβ" starting with parameters ["rclone" "-vv" "mount" "b:Downloads" "/home/bittaurus/w"]
2017/08/13 18:31:37 INFO  : Encrypted drive 'b:Downloads': Modify window is 1ms
2017/08/13 18:31:37 DEBUG : Encrypted drive 'b:Downloads': Mounting on "/home/bittaurus/w"
2017/08/13 18:31:37 mount helper error: fusermount: failed to open /etc/mtab: Permission denied
2017/08/13 18:31:37 DEBUG : : Root:
2017/08/13 18:31:37 DEBUG : : >Root: node=/, err=<nil>
2017/08/13 18:31:54 DEBUG : /: Attr:
2017/08/13 18:31:54 DEBUG : /: >Attr: attr=valid=1m0s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2017/08/13 18:32:37 DEBUG : /: Lookup: name="0bytes"
2017/08/13 18:32:38 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2017/08/13 18:32:38 DEBUG : /: Lookup: name="0bytes"
2017/08/13 18:32:38 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2017/08/13 18:32:38 DEBUG : /: Lookup: name=".0bytes.4toVlh"
2017/08/13 18:32:38 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2017/08/13 18:32:38 DEBUG : /: Create: name=".0bytes.4toVlh"
2017/08/13 18:32:38 DEBUG : /: >Create: node=.0bytes.4toVlh, handle=.0bytes.4toVlh (w), err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: Attr:
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: >Attr: a=valid=1m0s ino=0 size=0 mode=-rw-r--r--, err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: Setattr: a=Setattr [ID=0x9 Node=0x2 Uid=1070 Gid=1070 Pid=64072] mode=-rw------- handle=INVALID-0x0
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: >Setattr: err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: Attr:
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: >Attr: a=valid=1m0s ino=0 size=0 mode=-rw-r--r--, err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh (w): Flush:
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: WriteFileHandle.Flush ignoring flush on unwritten handle
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh (w): >Flush: err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh (w): Release:
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: WriteFileHandle.Release closing
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: Setattr: a=Setattr [ID=0xc Node=0x2 Uid=1070 Gid=1070 Pid=64072] atime=2017-08-13 18:32:38.961168396 +0000 UTC atime=now mtime=2017-08-13 18:19:00.990790176 +0000 UTC handle=INVALID-0x0
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: >Setattr: err=<nil>
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: Attr:
2017/08/13 18:32:38 DEBUG : .0bytes.4toVlh: >Attr: a=valid=1m0s ino=0 size=0 mode=-rw-r--r--, err=<nil>
2017/08/13 18:32:38 DEBUG : /: Lookup: name="0bytes"
2017/08/13 18:32:38 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2017/08/13 18:32:38 DEBUG : /: Rename: oldName=".0bytes.4toVlh", newName="0bytes", newDir=/
2017/08/13 18:32:38 ERROR : .0bytes.4toVlh: Dir.Rename error: No such file or directory
2017/08/13 18:32:38 DEBUG : /: >Rename: err=no such file or directory
2017/08/13 18:32:38 DEBUG : /: Remove: name=".0bytes.4toVlh"
2017/08/13 18:32:38 ERROR : .0bytes.4toVlh: Dir.Remove error: No such file or directory
2017/08/13 18:32:38 DEBUG : /: >Remove: err=no such file or directory
2017/08/13 18:32:40 DEBUG : .0bytes.4toVlh: File.applyPendingModTime OK
2017/08/13 18:32:40 DEBUG : .0bytes.4toVlh (w): >Release: err=<nil>

At first glance, seems related to #1181. However, as a "workaround", why not give rclone sync a spin? It works like rsync and skips the FUSE layer, so you should not run into the issue described here.

It would create several other issues if I had to figure out which mounted remote I want to move it to.  I have several mounts of the same team drive through different accounts and do some primitive load balancing by changing symlinks around, in order to split up my API usage so I don't get a temp ban from exceeding quota.
In the mean time, I did some digging in rsync and found this nicety:
--inplace
This option changes how rsync transfers a file when the file's data needs to be updated: instead of the default method of creating a new copy of the file and moving it into place when it is complete, rsync instead writes the updated data directly to the destination file.

No writing a temp file with that option, so no need to rename or move it when done.

I think the issue is with the non-flushing of the disk cache. I mean, if you open a file, then don;'t write to it, you can close it safely without flushing because you haven't changed anything.  But if you open a non-existant file, dont' write anything, and close it, you still should flush the disk cache to make sure the file gets written to the filesystem.
At least that's my theory. The easiest way to check it would be to comment out the skipping and recompile and see if it fixes it.

Commenting out this part will fix some cases, but break others. I'm not specifically sure about which syscalls rsync triggers, but using a pipe (cat bla > somefile) will issue Open → Flush → Write → Flush → Release (see https://github.com/libfuse/libfuse/wiki/FAQ#how-do-i-know-which-is-the-last-flush-before-release). A flush for rclone means that it will also close the handle, since all online storage providers I have seen don't offer an "append to file" feature. In the case of the pipe, that would break the upload.
I guess there are workarounds to that (e.g. synchronous release as per #1181, or maybe just a special 'touch' action on unwritten handles without closing?). Simply commenting these lines out is not enough, I'm afraid.

I just tested on the current version and this works fine now. Closing it out as it is fixed.


Acquiring / modelling assets for the crane

Models are in the scene, and a prefab is in the prefab folder


Improve Shader Implementation

Improve the shader implementation by:

Implementing a destructor that releases the shader from the OpenGL context
Create a system for accessing uniforms using the index operator

// e.g.
shader["color"] = glm::vec4(1.0f);

Changes implemented in branch 'enhance/SunShader'


ux / usability notes (sasha)

Windows 10

Cosmos.exe

can we move these files away - confusing!!
on click, showed loading screen and then closed itself
text on welcome screen is too skinny, can be difficult to read
message about firewall came up re: cosmos & gaia
can’t click create new account

fundraiser seed is off putting / scary / unknown info for most

create new account — pencil??

full screen breaks / distorts

separate message about gaia is off putting uncomfortable - no one knows this is related

no positive first impression

first thing seen is dark
then red warning sign
nothing friendly, nice, welcoming

couldn’t click on anything until user gave permission to firewalls / alerts etc…

could provide more direction for users

what to do with seed? copy and paste? write it down? some will want more info

balance not refreshing from faucet

delegates not loading

ni-connectivity not incrementing

Re: text on welcome page, I think that on Windows we have to use a different font weight. 300 looks good on macOS retina displays, but it's too thin (like 1 pixel? on windows with low dpi).

can we move these files away - confusing!!

We're working on an installer instead of a zip if you meant all the files in the zip.

on click, showed loading screen and then closed itself

Strange, have to debug this.

text on welcome screen is too skinny, can be difficult to read

Mentioned above ^

message about firewall came up re: cosmos & gaia
can’t click create new account

This is always going to happen on an OS with the firewall enabled. If the user has a firewall enabled they should know that these messages will pop up whenever they open an app that connects to the internet.

fundraiser seed is off putting / scary / unknown info for most

It's supposed to be offputting and scary. This is a testing version of the UI and we don't want anyone to input their seed.

create new account — pencil??

We can use a different icon.

full screen breaks / distorts

Screenshot this for us? I haven't seen anything like it.

separate message about gaia is off putting uncomfortable - no one knows this is related

Ah the second firewall message. I don't think we have any way around this.

no positive first impression
first thing seen is dark
then red warning sign
nothing friendly, nice, welcoming
couldn’t click on anything until user gave permission to firewalls / alerts etc…

This is expected. We're not changing this currently.

could provide more direction for users

We're working on this by adding an on screen tutorial.

what to do with seed? copy and paste? write it down? some will want more info

The UI says to backup the seed, which means to make a copy in any way possible. I suppose we can add a longer description.

balance not refreshing from faucet
delegates not loading
ni-connectivity not incrementing

Gaia issues. We're working on it.

Strange, have to debug this. Do you mean on first load, the app closes itself for no reason?

yeah. on windows. was a bug that we thought we solved, but maybe didn't yet.

no positive first impression
first thing seen is dark
then red warning sign
nothing friendly, nice, welcoming
couldn’t click on anything until user gave permission to firewalls / alerts etc…

This is expected. We're not changing this currently.
we should consider making it friendlier for launch 😄


Update Windows Clusters Tutorial with RKE2 Instructions

The tutorial steps on the page for "Launching Kubernetes on Windows Clusters" need to be updated with RKE2 instructions as RKE1 is unsupported now.
via Discuss Slack:

"Looks like the docs need to be updated, those steps refer to setting up an rke1 cluster which is no longer supported. You're correct that RKE2 should use Calico, and not Flannel"
"We added Flannel for RKE2 windows in recent releases, because windows network policies are buggy and drop traffic all the time, and the best fix is to use a CNI that does not support netpol. "

Superseded by https://github.com/rancher/rancher-docs/issues/1074


httpd24: Build options for better bottle

Removes configuration related options
Builds all MPMs as shared objects (and fixes previous config) to allow
for easy switching, even in bottle builds

@BrewTestBot test this please

@BrewTestBot test this please

@javian I think I'll need your help on this, please. I can't figure out why the test bot is failing on the post-install step of the bottle install. It didn't seem to have a problem in my initial commit and I didn't change anything in post-install in the second.

It seems to fail because of the apr-util option that's not allowed. I can't see another reason at least after glancing at it.

I just noticed the other error. Not sure what that is about at the moment.

I eventually figured out the test bot issue. It was a combination of installing symlinks in the var directory to things outside of the keg and the sandbox.

Anything else you'd like me to address? Otherwise, I think it's ready to go.

Hi @kabel , I'm currently on vacation so I can't get it merged so it will take a little time before it can get put in unless someone else can approve and do it ping @Homebrew/apache

Bump. @homebrew

@kabel HI kabel, sorry for being silent for a while - I haven't had any time to look at this but it seems to be quite solid. Since I'm working on getting the php formula merged into homebrew-core we would also need to get the httpd24 formula (and probably 22 as well) moved into the core repository. Would you be interested in helping out with that ?

Thanks @javian. I've been following your work on getting php into the core, I may even have some notes/suggestions for that, as I've worked on it previously. I'd be happy to help with getting httpd24 into the core. However, httpd22 is end-of-life and I'd don't think it's a good idea to keep putting support into it.

@kabel I would agree with that, lets try and not introduce eol software if we can avoid it.


moved the set template directory code into the construct method instead.

This is related to issue #192.

Thanks. I'm wrapping up documentation and unit tests for the new version tonight. Once I get it pushed to the development branch this week, I'll pull this into a hotfix for both branches.

Thanks, I forgot to mention I didn't get a chance to run the unit tests after making the change.


GitHub release crashing on Nexus7

The latest GitHub release randomly and constantly crashing (app window just closes) on Nexus7 running crDroidAndroid-11.0 with BiTGApps-arm-11.0.0-v1.8. Logcat/dev-info attached. Would be thankful for any help.
device_info.txt
logcat-2023-01-28-10-47-42.txt

Hello @ww00xx , did you try the latest version of Kiwi ?It got updated this week . Let us know if the issue is still there


btn-dark is still referenced in buttons.less

See here.
All the other references in the file are to btn-inverse, but btn-dark is still used in one instance.

Already resolved in 2.0.2-wip.


Update arsenic interface

@glass-w : If you could work with @hannahbrucemacdonald to update this repo to use the latest "correct" arsenic release API, that would be incredibly helpful!

It looks like this has been completed!


[sdk, chains] Add Arb Sepolia to defaultChains

Problem solved
With future chains coming to the @chains package this PR might be irrelevant, however for now some users are requesting ArbSep to be one of the default chains (rightfully so) - so that they don't have to import it from the @chains package.
Changes made

[ ] Public API changes: list the public API changes made if any
[x] Internal API changes: explain the internal logic changes

How to test

[x] Automated tests: link to unit test file
[ ] Manual tests: step by step instructions on how to test

/release-pr


Cleaning up Readme

I went through and cleaned up some of the README. Im using JsonQuery in an open source project and would love to it take off.  Great work!

Thanks @brandoncorbin. :+1:


Generic property of class not type-checked if the generic is {}

TypeScript Version:  3.4.1
Search Terms: generic empty object accepts anything
Code
class X<Y extends {[key: string]: number}> {
	x: Y
}

class A extends X<{}> {
	x = {a: "not a number!"}
}

class B extends X<{}> {
	x = "Whatever I want!"
}

Expected behavior:
I expect to be able to use {} to mean an object without any keys, not any.
Actual behavior:
I can define x to be whatever I want and there's no type error.
Playground Link: playground link
Related Issues:

The type you want is object.  {} is a structural type which means “anything structurally compatible an empty object”—i.e. everything that isn’t null or undefined.


How to adopt HTTP proxy while downloading pkl packages?

Hi, I would like to download the pkl packages in the internal network environment? Is it possible to do that in the present pkl versiom?
Not a java expert, if there are any environment variable or properties could be set would be helpful!

This feature is very high on our list, hopefully we'll see it in the next version. For now this can't be done in Pkl.

Thank you! I could patiently wait this upcoming feature!

@stackoverflow I'm offering to take this on unless you're already working on it.

@translatenix I'm not working on it and your help is appreciated.
I'd create a discussion for it first where we can discuss the goals and design. Just so we are in the same page.

@titaneric Which type of proxy (HTTP, HTTPS, SOCKS) do you use? And which authentication method (if any)?

Hi, we use both HTTP and HTTPS proxy, envoy specifically.
We currently don't use authentication.