Redefine meaning of "void arrow functions"

The language team discussed, but did not yet commit to, the following change:
void f() => e; // Static type of `e` can be anything.
// Is syntactic sugar for:
void f() { e; }

g() => e; // Static type of `e` is `void`.
// Is syntactic sugar for:
void g() { e; }

The motivation for the first rule is that it eliminates an inconsistency in the rules: return 42; is an error in a {} function with return type void, based on the consideration that it is too error-prone: It looks like that value is being passed on and used, but that value is actually marked as invalid ("to be discarded") by the return type void.
With the old semantics, void f() => 42; would be allowed, but it would be defined to mean void f() { return 42; } which is not allowed. With the adjustment above it would mean void f() { 42; }, which is allowed.
The motivation for the second rule (g) is that it allows the concise notation using => to create a void function, which is in practice what developers want when they write functions like g() => e; where e has static type void.
We will need a feature specification for this, and the following topics are among the obvious ones that we have not yet considered in detail:

This would probably be directly applicable to library functions and static methods.
For instance methods, it might conflict with method signature inference ("inheriting (part of) the signature of a member from overridden declarations"). Presumably, we should still have the semantic effect: void foo() => e; should return null, but method signature inference should have preference (and it could then, e.g., reveal some errors because some methods would have a void returned expression and a non-void return type).
This would be applicable to local functions; they already have type inference on the return type, but the fact that the value is discarded (and null is returned) would still make a difference.
For function literals we would again rely on the existing inference, but we should have the semantic effect of returning null from () => print('Hello').

Tasks:

[ ] Write a feature specification for this feature (#33070).
[ ] Implement it in the common front end (not yet created: we have not committed to doing this!).

Also document how this applies to instance methods with a type variable as return type, when the type variable is instantiated with void. (It doesn't, the static type is not void, and the runtime type is Object anyway).

Yep, we would specify rule 1 for a literal void return type, and there is no change to the semantics of a function whose declared return type is a type variable. Similarly, rule 2 only applies in the cases where the static type of the returned expression is void, and the new semantics does not apply when e has type X which is a type variable, even in cases where the corresponding actual type argument was specified or inferred as void.


unable to display alert in status menu

I'm creating a status menu app.  If an error occurs in the main function that builds the menu, I'd like to raise an alert pop-up.  I'm currently trapping the exception and printing it with "ALERT:error|", but this is just printing the stack trace into the menu instead of giving me a modal alert.  I tried disabling "Run in Background" option on the Status Menu as well but got the same behavior.  Changing the interface to Text Window, I get the alert as expected.

The status menu output mode is different from the other ones since it waits for the script to finish before using/parsing the text output, and doesn't look for the ALERT: syntax. Why not simply catch your exception and print the error to stdout as red text or something? It's not really a good idea to trigger a modal alert immediately when someone opens a menu. At any rate, it's almost certainly a violation of Apple's Human Interface Guidelines.

Thanks for your response.  I got something working using osascript to display a dialog.


[Feature Request] Delete specific image from docker registry

Feature Description
It would be nice if we could delete a specific tag/version from the docker registry. The same is possible on docker hub.
Examples: one makes a mistake and wants to remove that image, or an exploit was discovered in a certain version. In such cases, it's desirable to delete those images from the registry.
Screenshots
No response

You can do that from the UI. But you have to take care about deleting an image which is used in a manifest list because that list is broken afterwards.

On the settings page of a package version there is a delete button.

related https://github.com/go-gitea/gitea/issues/25559#issuecomment-1613315628


[Bug] restricted_nameserver is configured containing custom DNS records, clients do not resolve correctly

Is this a support request?

[X] This is not a support request

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Running Pop_OS!, entering command nslookup subdomain.home.mydomain.com resolves to the public IP of the root mydomain.com as is configured publicly in cloudflare
Expected Behavior
The command should resolve to the local IP address contained within a nameserver configured in the headscale config file under restricted nameservers
Steps To Reproduce

Configure headscale with a local IP address for a nameserver under restricted_nameservers e.g.

restricted_nameservers:
home.mydomain.com:
- <IP_ADDRESS>

Set override_local_dns: true

Add a custom record to that nameserver e.g. subdomain.home.mydomain.com = <IP_ADDRESS>

Run tailscale on a client and accept DNS + accept routes

Try to resolve the subdomain. Result is the public IP of mydomain.com rather than <IP_ADDRESS>

Environment
- OS: Pop_OS!
- Headscale version: 0.22 (latest alpha is unstable for me)
- Tailscale version: 1.64.0

Runtime environment

[X] Headscale is behind a (reverse) proxy
[X] Headscale runs in a container

Anything else?
I cannot post this in Discord because it requires a phone number which I don't have.

nameserver set to <IP_ADDRESS> in /etc/resolv.conf
Changed to <IP_ADDRESS> fixed it.

That requires a user change which seems wrong, have you configured magic dns to be on or off?


how can i find the father node of the leaf node?

Tree=3
num_leaves=5
num_cat=0
split_feature=3 0 0 3
split_gain=47.5105 11.0491 9.29408 7.83675
threshold=1.7675000000000003 1.4585000000000004 1.3475000000000004 0.58450000000000013
decision_type=2 2 2 2
left_child=2 -2 3 -1
right_child=1 -3 -4 -5
leaf_value=0.01332043325992209 -0.022753384734832266 -0.065793851286836777 -0.0045065842519547627 0.0031221752792782837
leaf_count=1021 441 69 1141 2928
internal_value=0 -0.571645 0.0691096 0.115177
internal_count=5600 510 5090 3949
shrinkage=0.05
we can see that in the root left node is 2,and right node is 1.
but the " -2,-3" node's father is which one? 2 or 1, how can i figure it out?

the positive number represents to leaf node.
the negative number represents to non-leaf node, and you can use ~x to convert it to positive number, and get the right index of non-leaf node.

if '1,2' is leaf node  which is father node . i  find it's hard to understand the model, like which leaf is attached to which no-leaf node

@fword sorry, I made a mistake. updated the comment above.
use your model as example:

x -> the non-leaf node with index x
Lx -> the leaf node with index x


Failed to build OpenBLAS when trying to build caffe-android-lib 2

I get the below error.
I think this error is same as #72 issue.
Could you give me a solutioin for this error ?

C Compiler (/home/caffe-android-lib/homedevelopandroid-ndk-r10e/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc --sysroot=/home/caffe_lib/caffe-android-lib/homedevelopandroid-ndk-r10e/platforms/android-21/arch-arm64) is something wrong.
1 at ./c_check line 24.
make: *** [config.h] error 2
Makefile.system:166: Makefile.conf: No such file or directory
Makefile.system:909: Makefile.: No such file of directory
make: *** No rule to make target `Makefile.' stop.
Failed to build OpenBLAS
If NDK version changes from r10e to r11c, result is same too (same error occur).

In #72, the issue was casued by using incorrect ndk, and I have no idea how to reproduce yours. Could you provide more details about your environment?

I noticed that your c compiler path was strange.

/home/caffe-android-lib/homedevelopandroid-ndk-r10e/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
/home/caffe_lib/caffe-android-lib/homedevelopandroid-ndk-r10e/platforms/android-21/arch-arm64

Did you notice that difference?

Sorry, this information is wrong.
Correct is the following error message.
C Compiler (/home/caffe_lib/caffe-android-lib/homedevelopandroid-ndk-r10e/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc --sysroot=/home/caffe_lib/caffe-android-lib/homedevelopandroid-ndk-r10e/platforms/android-21/arch-arm64) is something wrong.

Could you provide more details about your environment?

What environment information should I share ?

For example, what's your OS? how did you build openblas? how to reproduce this issue?
Thanks.

Could you confirm the following ?

Ubuntu 14.04
android-ndk-r13 .. etc
cmake version 3.5.2

$ git clone --recursive https://github.com/sh1r0/caffe-android-lib.git
$ cd caffe-android-lib
$ export ANDROID_ABI="arm64-v8a"
$ ./build.sh

Hi @ten23, I've confirmed that I did not have any issues.

I use android-ndk-r10d,cmake-3.3.2 on ubuntu 1404 64bit .it took effect ,but there is other issue,when build OpenBLAS,it shows that Copying the static library to /opt/caffe-android-lib/android_lib/openblas/lib
【install: 无法获取"libopenblas_armv7p-r0.2.18.a" 的文件状态(stat): 没有那个文件或目录(means that nu such files)】

@ten23 Any updates?

Could be reopened if needed.


Use new SuperchainERC20 in Supersim

A version of the new SuperchainERC20 token should be predeployed in Supersim and interop abstractions, and the functionality around it should be implemented.
Definition of Done:

[x] #223
[x] #224
[x] https://github.com/ethereum-optimism/supersim/issues/198
[x] https://github.com/ethereum-optimism/ecosystem/issues/470
[x] https://github.com/ethereum-optimism/supersim/issues/135

Closing this tracker as all related tasks are done.


Allow stream as option

Add opts.stream so user can handle errors, end of stream, etc. easier.

nice


Pysep somewhat randomly matching components of 2 sets of synthetics together

Hello,
I recently was trying to plot a record section of 2 sets of synthetics together. One set had the naming convention *.HX?.semd and the other *.BX?.semd, and I noticed that, according to the debugging output for the relative amplitude information, Pysep was somewhat randomly plotting mismatching components (and stations!) together. For example:
IDX        [O]BS          [S]YN     [O_A]BSMAX  [S_A]BSMAX   O_A/S_A   LN(O_A/S_A)
1   XX.R01-03..BXZ XX.R01-01..HXY    1.71E-17    7.19E-05    2.37E-13   -2.91E+01
5   XX.R01-03..BXY XX.R01-03..HXY    1.17E-18    2.67E-06    4.38E-13   -2.85E+01
7   XX.R01-03..BXX XX.R01-03..HXX    2.89E-17    4.05E-02    7.13E-16   -3.49E+01
0   XX.R01-02..BXZ XX.R01-01..HXX    1.16E-17    7.03E-02    1.65E-16   -3.63E+01
6   XX.R01-02..BXY XX.R01-02..HXX    1.14E-17    5.51E-02    2.07E-16   -3.61E+01
8   XX.R01-02..BXX XX.R01-01..HXZ    3.99E-17    8.43E-05    4.73E-13   -2.84E+01
4   XX.R01-01..BXZ XX.R01-02..HXY    7.18E-19    1.59E-02    4.52E-17   -3.76E+01
3   XX.R01-01..BXY XX.R01-02..HXZ    9.60E-19    1.71E-02    5.61E-17   -3.74E+01
2   XX.R01-01..BXX XX.R01-03..HXZ    4.98E-17    2.42E-02    2.06E-15   -3.38E+01

This was done doing the command recsec --pysep_path ./E_force_axi/ --syn_path ./E_force/ --source ./FORCESOLUTION --stations ./STATIONS --synsyn --overwrite --sort_by azimuth --scale_by global_norm --preprocess both --min_period_s 2 --components X,Y,Z for the attached directory.
This problem was solved by renaming one set of synthetics to match the other (so both sets had the naming convention *.HX?.semd)
Thanks!
name_mismatch_test.tar.zip

Hi @ammcpherson, thanks for the detailed issue report and the example data/command, makes it really easy to test this out!
Unfortunately I am unable to recreate the issues you're seeing, and am getting what seems like the correct ordering with the different channel names:
IDX        [O]BS          [S]YN     [O_A]BSMAX  [S_A]BSMAX   O_A/S_A   LN(O_A/S_A)
7   XX.R01-03..BXZ XX.R01-03..HXZ    1.71E-02    2.42E-02    7.05E-01   -3.49E-01
5   XX.R01-03..BXY XX.R01-03..HXY    1.17E-03    2.67E-06    4.38E+02    6.08E+00
2   XX.R01-03..BXX XX.R01-03..HXX    2.89E-02    4.05E-02    7.13E-01   -3.39E-01
3   XX.R01-02..BXZ XX.R01-02..HXZ    1.16E-02    1.71E-02    6.76E-01   -3.91E-01
1   XX.R01-02..BXY XX.R01-02..HXY    1.14E-02    1.59E-02    7.17E-01   -3.32E-01
4   XX.R01-02..BXX XX.R01-02..HXX    3.99E-02    5.51E-02    7.24E-01   -3.23E-01
6   XX.R01-01..BXZ XX.R01-01..HXZ    7.18E-04    8.43E-05    8.52E+00    2.14E+00
0   XX.R01-01..BXY XX.R01-01..HXY    9.60E-04    7.19E-05    1.34E+01    2.59E+00
8   XX.R01-01..BXX XX.R01-01..HXX    4.98E-02    7.03E-02    7.08E-01   -3.45E-01

Can you try again with the latest devel branch of the code and see if the issue persists?
One important note is that in #139 I changed a few things that will affect the way you call RecSec, namely that you can drop the --overwrite flag (this is now turned on by default), and you can drop --preprocess both (this is now True by default, so both streams are processed automatically). A new call would then look like:
recsec --pysep_path ./E_force_axi/ --syn_path ./E_force/ --source ./FORCESOLUTION --stations ./STATIONS --synsyn --sort_by azimuth --scale_by global_norm  --min_period_s 2 --components X,Y,Z

Let me know how that goes!

Hi @bch0w,
I updated an instance of pysep and tried this out again - and I am not seeing the same issue!
Thanks, and sorry for the false alarm.


Feat/stac api tools - WIP

Thank you for submitting a pull request!
Description
Please describe what you changed briefly.
Type of Pull Request

[ ] Adding a feature
[ ] Fixing a bug
[ ] Maintaining documents
[ ] Adding tests
[ ] Others ()

Verify the followings

[ ] Code is up-to-date with the develop branch
[ ] No build errors after pnpm build
[ ] No lint errors after pnpm lint
[ ] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check
[ ] Make sure all the existing features working well

Changesets

[ ] If your PR makes a change under packages folder that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

Refer to CONTRIBUTING.MD for more information.

@Thuhaa Here, when we select an asset, could you just show the next GUI controls inside the popup other than switching to new component? Like current STAC api and product do. You can add Tools tab in STACApiExplorer component to show the control of StacApiTool component.
If your change can be done within StacApiExplorer, this tool will be automatically available from Data tab in map page.

This can be closed once #3912 is approved and merged


Benchmarks clarification request

Hello, just a few questions regarding the benchmarks:

Latencies: does this mean "response time per request"? (which is what I want to know)
Bytes Out: this is always zero, so I guess it's some sort of bug?
Test Image: what is the original size of Rovinj-Croatia.jpg?

I'm trying to understand where Flyimg would be in this comparison.

Hello @peraronsson
Thank you for opening this issue!
the actual benchmark in the Flyimg repo is outdated, I think it's a good idea to update it and maybe use the Apache ab tool.
regarding your questions:

yes the Latencies mean the response time per request
BytesOut is the number of sent bytes in the HTTP body (From vegeta tool documentation)
Rovinj-Croatia.jpg Original size is 57.3 KB

Actually I'll update the benchmark script to use ab tool to have a meaningful comparison with the other tools you mentioned.

@peraronsson  can you check the latest benchmark I just released?
https://github.com/flyimg/flyimg/blob/main/docs/full-documentation.md#benchmark

@peraronsson can you check the latest benchmark I just released? https://github.com/flyimg/flyimg/blob/main/docs/full-documentation.md#benchmark

This looks really good, and thank you so much for doing this!  😃
If I understand the results correctly, Flyimg is a lot more performant than the "competitors" in the table. Do you agree?
The only thing I am missing now is a url to the image used for the test, for reference, and for running my own tests.

actually yes I used the same image in the benchmark script to resize it to 500x500.
But the source of the image is local (the benchmark script downloads it and then deletes it).
I'm not sure about other solutions, it seems some of them are using a local version as well.

hey @peraronsson ,
I'm going to close this issue if any help is still needed please feel free to comment and I'll open it.
Thank you again!


Broken Links

URIs for Alpine and Ubuntu 20.04 expire, will need to post/parse and get fresh links when installing those distros.
Create new function to handle Windows Store links and return a fresh download URI.

Issue resolved #8


Add datasource to query

What does this PR do?
Adds functionality to query the metadata by datasource.
All Submissions:

[x] Have you followed the guidelines in our Contributing document?
[x] Have you successfully ran tests with your changes locally? Including container validation.
[x] Have you lint your code locally prior to submission?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
[x] Have you labelled this PR correctly? E.G. major, milestone, breaking, breaking-change, minor, feature, enhancement, patch, fix, chore, refactor etc

I would not do the datasources as just another field in the queries I think they go beyound that. they should be something that gets all selected bby default. I dont know it doesn't feel for me as like just another field of the queries but the sources upon which you will need to execute your query against. Also I dont think it does make sense to include Blob data sources since you cannot use the query engine to query them.

Afaik they do all get selected by default if they're not chosen as there's no filtering by database_id in the query if that doesn't get selected. Agree with what you mean about the datasources being things that get queried against, but if not on the query page then where? If RFDX is a big data store with lots of little data stores in I think that if you want to only choose some specific data stores then that works as a query.
Also, agree with blob storage - that was left in as it was how I was testing it working, have now removed.


operation timed out on raspberry pi 3B

I am trying to interface RPLIDAR A1 with my Raspberry Pi 3 B 2015 Model running ubuntu 16.04.
I am receiving the following error when I run ultra_simple /dev/ttyUSB0: Error, cannot bind to the specified serial port /dev/ttyUSB0.
I receive the following error when I run simple_grabber /dev/ttyUSB0: Error, operation timed out
Error when I try interfacing using ROS rplidar_ros package: RESULT_OPERATION_TIMEOUT when I use roslaunch rplidar_ros rplidar.launch
I tried using multiple OS images but the error persists. It works fine on my PC running Ubuntu 16.04 with same USB cable and USB to serial converter.
What is causing these errors?
Is this due to Raspberry Pi 3 B only having USB 2.0 ports? Help me find a solution

Have you ever checked the permission setting of the tty device? Maybe you can try to run the program under root account (or use sudo)

@cnwzhjs
Now I am getting the following error:
process[rplidarNode-1]: started with pid [2362]
[ INFO] [1455209742.257557230]: RPLIDAR running on ROS package rplidar_ros. SDK Version:1.9.0
RPLIDAR S/N: BA4B9DF1C3E39AC4C3E698F94A9C340D
[ INFO] [1455209744.766681031]: Firmware Ver: 1.24
[ INFO] [1455209744.766873062]: Hardware Rev: 5
[ INFO] [1455209744.769167437]: RPLidar health status : 0
[ERROR] [1455209747.283383166]: Can not start scan: 80008000!

The LIDAR still works fine on my PC. Can this be a power issue? Is the raspberry pi unable to provide enough power? What can be done to ensure power is delivered?

The problem is with cables. For future, ensure the cables are not dodgy and provide stable power for both the Pi and the Lidar.

If above solution didnt work, try checking the 7 pins cable between the usb converter and the uart lidar port. Try tightening them, unplug and plug it. Overall it is the matter of hardware solution, such as cable connectivity, power consumption, etc.


Need Language Support for SystemT Extractors in NLP-Editor

Requirement
The language must be provided as input in the UI in the Input Document node - it should be a new property added to this node. Then that language must be used in the backend to create the compiled extractor that is executed on Run and that is exported on Export

Background
In Watson Knowledge Studio's Advanced Rule Editor (now deprecated), the user would select the language option during the export. This language (same value) was needed to be specified while loading the WKS exported SystemT extractor.
Ref:

Opening this issue, after discussion with @laurachiticariu and @nysenthil - to have language support provided for NLP-Editor based systemT extractors.

Hi @praveenmidde Thanks very much for creating this issue. I started looking into what code changes will be needed in the SystemT + AQL backend container to provide language support. Once my local tests work well in the backend, I will work with our NLP Editor frontend team to do the end-to-end integration of this enhancement. We will update here when it is ready.

What is needed:

The Input document node should have a language code setting. It is a predefined list of 2-letter language codes - full list to be provided.
On Run and Export, the language code has to be provided to the backend along with the input document text. The extractor has to be compiled with that language code (the language code matters for compiling dictionaries into the compiled extractor - dictionary entries are tokenized using the language provided and stored inside the compiled extractor)
On Export, the extractor should have metadata indicating the language code.

@marthacryan can you take care of (1) and discuss the format for (2) with @nysenthil ?


[ENHANCEMENT] Use pydantic for chat field in server and SDK

Description

This PR use pydantic in the server and sdk to validate schema of chat field values.
Type of change

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
Refactor (change restructuring the codebase without changing functionality)
Improvement (change adding some improvement to an existing functionality)
Documentation update

How Has This Been Tested

Checklist

I added relevant documentation
I followed the style guidelines of this project
I did a self-review of my code
I made corresponding changes to the documentation
I confirm My changes generate no new warnings
I have added tests that prove my fix is effective or that my feature works
I have added relevant notes to the CHANGELOG.md file (See https://keepachangelog.com/)

I added some changes using jsonable_encoder and avoiding transforming the chat field values to dict inside the validation: 277f314

Nice. I missed the upsert. :face_palm:


the runner doesn't allow user input in Python 3

This is the traceback below:
y2 = Traceback (most recent call last):
File "/*******/PyWork/slop.py", line 7, in
y2 = float(input("y2 = "))
EOFError: EOF when reading a line
And this is my code:
y2 = float(input("y2 = "))

Reading from STDIN is not supported. Patches accepted to add this.


Version cert-manager-webhook-ibmcis

Recently a new version of cert-manager-webhook-ibmcis was prepared but there is no versioning for this plugin. This makes it harder for developers to manage their environments since I either can install the newest version possible of cert-manager-webhook-ibmcis or download this repo and revert some commits to apply older version if I'm using older cert-manager version.
Lack of versioning also makes it harder to check if there is a newer version available. I propose to tag git repository each time when new version is released and also prepare release in github. Version in Chart.yaml could also be updated after each release and the artifacts could be published to public repositories too, like https://artifacthub.io/

@jowko thanks, that's very good suggestion, I add the version in git repo and will keep chart version updated.
will check how to publish to artifacthub.io/


Pi Zero won't boot without hdmi signal.

Love the project, works well on my monitor, boots no worries. into 1080P
However connected to a Television via hdmi it gets as far as your logo then hangs forever.
I then tried having the TV turned off, same result.
Then tested the pi without a hdmi signal at all.
Hangs as well.
Here is my config settings..
config.txt
Tom Duncan

Hmm, so do I understand correctly that your Pi Zero boots up when connected to a PC monitor, but hangs when connected to a TV?

Yes, correct. Also if you don't have an HDMI connection at all.

FYI, there's another alpha build available now, which is based on a more recent upstream Raspbian. You may want to see if it has fixed this issue. Sorry for the delay with the Pi 4; previous new models have been easier to upgrade to.

I had a similar issue as above(connected to a television, remained stuck on the 'Please Wait' page). After installing the alpha build, it's working now.

This issue has been had to reproduce, and we're hoping it goes away with the upcoming 3.0 release, as it's based on a much newer upstream Raspbian. Release Candidate builds of 3.0 are already available for download in releases.
Thus, I'll be closing this issue for now. Feel free to reopen if it seems like this issue persists.


Skip api version checks when install action is configured in client mode only

closes #6505
Note: Reopening #6701 after switch from dev-v3 to master base branch. Discussion started in that PR.

Original PR content

What this PR does / why we need it:
Hi there,
With helm 3, when an install action is run in client-mode only (install without --validate) and if your chart contains custom resources you end up hitting error that look like that.
apiVersion "example.com/v1" in my-app/templates/cutoms.yaml is not available

This PR attempt to workaround the issue by skipping entirely the check if we are in client mode as we can't be aware of any custom resource definition present on the remote cluster in advance as we don't interact with it in such mode.
Thoughts?
Special notes for your reviewer:
The error hit is similar to the one described in #6680
If applicable:

[ ] this PR contains documentation
[x] this PR contains unit tests
[ ] this PR has been tested for backwards compatibility

@lminaudier please update PR description to note this closes https://github.com/helm/helm/issues/6505. Thanks!

@bacongobbler @jlegrone Hey! Excuse me but can we reconsider this to be merged before 3.0.0 GA? This is breaking a helm plugin badly: https://github.com/databus23/helm-diff/issues/158

My one worry here is that the --api-versions flag will now have no value because it was only used for cases when we are in client only mode. So we should remove that if we go this direction

Oh, and as a note, I am in favor of pulling this into Helm 3.0.0 and have pinged other maintainers to weigh in

Recalling a bit of context from the previous issue in https://github.com/helm/helm/pull/6701#issuecomment-543875223...
@bacongobbler said:

Hmm. I don't think passing a boolean across several API layers just to disable a check is a great design. The validation is in place to ensure that CRDs with malformed/unavailable APIVersions will be still be reported to the user. We still want to catch validation errors with malformed templates to ensure the user won't run into validation errors when they invoke helm install.

Have you considered the proposal in #6680? What's your current use case, and would that approach solve it for you?

@jlegrone said:

I believe the issue and solution described in #6680 is a little different. That proposal would fix template rendering when a chart also creates each CRD that it uses, however that won't work for charts that simply create custom resources and not their definitions (this is probably the more common of the two use cases).

We still want to catch validation errors with malformed templates to ensure the user won't run into validation errors when they invoke helm install.

This PR appears to only skip returning the specific error for a missing apiVersion:

https://github.com/helm/helm/blob/b57c8967f33df85330c9e7d0007f8b3663178885/pkg/releaseutil/manifest_sorter.go#L132-L134

If clientOnly is explicitly set to false via the --validate flag, then we get the full error checking. This seems like the best of both worlds from an end-user perspective (and gives us the same behavior as helm template in v2).

That said #6680 is also valid and would require some additional work to allow template to succeed when --validate is passed.

I'd like to return back to the use case this proposal is trying to solve before coming up with a solution.
Here's the use case I'm considering:

I have a chart
I intend to register a CRD with apiVersion bacongobbler.com/v1
The chart will consume this new API by creating custom resources

There are two situations we need to handle in helm template:

I have templates in my chart that are valid. Please render me to stdout.
I have templates in my chart that are invalid. Please return an error when the chart is malformed.

With this approach, we are actively disabling a check. If I create a chart that has a custom resource consuming apiVersion bacongobbler.com/v2 (v2 instead of v1),  helm template will succeed and will render the templates, signalling to the user that the chart can be installed, which it can't, because there is no apiVersion that supports bacongobbler.com/v2.
This is why I asked about considering the proposal in #6680. As the crds/ feature was described in #6243:

If a CRD is already found in the cluster, Helm will skip installing that CRD and will log this to the debug log. It will neither error out nor see if there are any differences between its version and the existing version.

If that's the case, then it should be considered OK for each chart to declare the CRDs they rely upon. If those CRDs are present in crds/, then we can add those CRDs to the registered APIs and check the templates for validity.
In other words, the use case described by @jlegrone earlier...

however that won't work for charts that simply create custom resources and not their definitions

...could be considered an error condition: if a chart declares that they intend to use a particular CRD, but the chart itself does not declare that CRD, then helm template should fail unless the user provides the --validate flag to check if the Kubernetes API server has that CRD registered.
From reading #6243, I am under the impression that

charts that rely on installing a custom resource should always have their CRDs declared in the crds/ directory
Charts that do NOT have that custom resource in the crds/ directory should be considered a special case, and users should use the --validate flag instead.

The other thought with this proposal is that we can remove the --api-versions flag from Helm 3 entirely. It was only necessary in Helm 2 because of the same use case: helm template has no way of determining what CRDs have been registered, so we needed a way to register them for charts with CRDs to render correctly.

@bacongobbler Thanks for summarizing it!
I now believe you're absolutely correct on that we shouldn't disable the validation.
#6680 seems the right approach. But can we register all the CRDs present in the templates/ rather than only those in templates/crds/? That seems to fix #6505 for existing "valid" charts that worked in v2.

Also, if we don't go the way disabling the validation at all, #6663 needs to be fixed as well.
That is, even after #6680 helm template --validate=true can fail on a chart that was valid in v2 due to #6663.

Lastly, even though considering ClientOnly = --validate, like this PR does, turned wrong, we should at least allow disabling the validation and the api-versions check at all when required.
It doesn't work today:
$ helm3b5 template --validate=false ./mychart
Error: apiVersion "apiextensions.k8s.io/v1beta1" in mychart/templates/crd.yaml is not available

To me this seems to, possibly, imply that we need to separate the flags for toggling ClientOnly and the validation.

After all these comments addressed, I think helm template should be documented as:

helm template [--validate=true] should be used when you want it to fail when the result has any reference to CRDs not in crds/ or the cluster.

I believe #6663 needs to be fixed for this use-case. Otherwise running helm template --validate=true | kubectl apply -f twice always fail on the second run.
I believe https://github.com/helm/helm/pull/6729#issuecomment-547231609 should be addressed as well for this use-case. Otherwise charts that passed helm template in v2 can't pass helm template in v3. An example of such chart is one that has both the definition and the instance for a custom resource.

helm template --validate=false should be used when you want to disable the validation

This seems to not work today as said in https://github.com/helm/helm/pull/6729#issuecomment-547248883. --validate=false doesn't actually disable all the validations.

helm template --client-only --api-versions API_VERSION [--validate=true]  should be used when you want it to fail when the result has any reference to CRDs not in crds/.

If we don't need this, as @bacongobbler suggested in https://github.com/helm/helm/pull/6729#issuecomment-547199504, --api-versions should be removed as unnecessary. But then CilentOnly bool in the codebase should be changed to something like Validate bool. It seems like the source of confusion here was we don't really need/have a client-only validation.

My one worry here is that the --api-versions flag will now have no value because it was only used for cases when we are in client only mode. So we should remove that if we go this direction

@thomastaylor312 Could be! I've mentioned about that in the third point in https://github.com/helm/helm/pull/6729#issuecomment-547249311.
But please note that, if we were to remove --api-versions and don't have any better alternatives, (I think) we would still need a way to disable api versions check at all instead. --validate=false as of today doesn't work for that. I've mentioned about that in the second point in my prev comment.

however that won't work for charts that simply create custom resources and not their definitions

...could be considered an error condition: if a chart declares that they intend to use a particular CRD, but the chart itself does not declare that CRD, then helm template should fail.

@bacongobbler I've reread your comment and I think it does break existing charts like official charts that creates ServiceMonitors and community charts like podinfo and monochart.

If every chart declares CRDs along with their custom resources, then the need for the --api-versions flag disappears, as the CRD will be registered with the kube client and we can validate the templates against it.
I think this is only feasible in certain cases where a CRD is really local to a specific chart. But as CRD are be now the standard way to extend Kubernetes there is an ever growing list of CRDs that  are used more like general extensions to kubernetes. Something that is just expected the be there. As mentioned by @mumoshu we are using the prometheus-operator in our Organization and every chart is expected to ship its on alert rules, service monitors etc. It would be very cumbersome if every of our 50+ chart would need to ship 3 crds just so that helm template can be used.
I don't pretend to know anything about Istio or Knative but it is my understanding that those extensions  could be other popular examples. If I'm not mistaken those frameworks  rely heavily on a plethora of custom resource definitions that will be used by other charts then the "istio" chart.

I ended up submitting https://github.com/helm/helm/pull/6811 as an alternative to this PR.

Also, --validate with the client-only mode seems broken(?) as it doesn't even see apiextensions.k8s.io/v1beta1 as a known api type. See https://github.com/helm/helm/issues/6665 for info.
The reporter closed it as resolved as the error disappears with the current --validate(do validate in the non-client-only mode), but that doesn't make sense in this context.
So probably we should fix #6665 as well if we do provide the option to run client-only validations.

Charts that create ServiceMonitors rely on the server (Kubernetes) having prometheus-operator installed. In that case, they should be using the --validate flag to check if the CRD they are attempting to install is present. That is one of those "special cases" I was referring to earlier. Same goes for podinfo and monochart; they rely on the presence of flagger being installed server-side, and should have to check with the server to ensure they will install correctly.


Add compose-ios

Hello everyone.
What do you think about adding compose-ios ??
Best regards.

Please see https://github.com/francismariano/compose-color-picker/tree/compose-ios

@francismariano
Could you make a pull request to this repository?

@Tiebe
I can do it. I do not change nothing in library but I rewrite the sample. The dialogs don't work properly in the sample.

That would be very nice


Update CMakeLists.txt

Add an additional search for the threading library.  This allows us to have an imported library definition which is used to statically link the static library libCoreFoundation.a.

@swift-ci please test


Coverage() error: local variable 'lonmin' referenced before assignment

When trying to run the ipython notebook from
http://pylayers.github.io/pylayers/auto_examples/plot_coverage.html#sphx-glr-auto-examples-plot-coverage-py
on the current pylayers version it fails with the following error:

UnboundLocalError                         Traceback (most recent call last)
 in ()
3 import time
4 import pdb
----> 5 C = Coverage()
6 C.L._filename
7 C.tx = np.array((39,1))
/home/schmitz/work/python/pylayers/lib/python2.7/site-packages/pylayers-0.5-py2.7.egg/pylayers/antprop/coverage.pyc in init(self, _fileini)
138         else:
139             self.typ='outdoor'
--> 140             self.E = ez.Ezone(filename)
141             self.E.loadh5()
142             self.E.rebase()
/home/schmitz/work/python/pylayers/lib/python2.7/site-packages/pylayers-0.5-py2.7.egg/pylayers/gis/ezone.pyc in init(self, prefix)
412         self.prefix = prefix
413
--> 414         (lom,loM,lam,laM) = dectile(self.prefix)
415
416         self.extent = (lom,loM,lam,laM)
/home/schmitz/work/python/pylayers/lib/python2.7/site-packages/pylayers-0.5-py2.7.egg/pylayers/gis/ezone.pyc in dectile(prefix)
163         lonmax = lonmin+1
164
--> 165     return (lonmin,lonmax,latmin,latmax)
166
167 def expand(A):
UnboundLocalError: local variable 'lonmin' referenced before assignment

It seems there is currently a issue in the eZone class, which manage outdoor scenes. But indoor is not involved in this bug.
Which layout are you trying to use? (could you provide your coverage.ini file please ? ). Please check the .lay extension is present at the end of the file you try to use.
From my side, if I try to run the example you mention I
do not face any issue with the current version of the code using the following coverage.ini file (in   pylayers_project/ini/coverage.ini  ):
[grid]
nx = 80
ny = 40
boundary = [20,0,30,20]
mode = full ; file, zone , full
file = 'points.ini'

[layout]
filename = TA-Office.lay ; 0 40 0 15 ;filename = W2PTIN.lay ;filename = Lstruc.lay

[ap]
0 = {'name':'room1','wstd':'ieee80211b','p':(1,12,1.2),'PtdBm':0,'chan':[11],'on':True,'ant':'Gauss','phideg':90}
1 = {'name':'room2','wstd':'ieee80211b','p':(10,2,1.2),'PtdBm':0,'chan':[11],'on':True,'ant':'Omni','phideg':0}
2 = {'name':'room3','wstd':'ieee80211b','p':(20,1,1.2),'PtdBm':0,'chan':[11],'on':True,'ant':'Gauss','phideg':75}
3 = {'name':'room4','wstd':'ieee80211b','p':(36.5,1.5,1.2),'PtdBm':0,'chan':[11],'on':True,'ant':'Gauss','phideg':120}
4 = {'name':'room5','wstd':'ieee80211b','p':(25,12,1.2),'PtdBm':0,'chan':[11],'on':True,'ant':'Gauss','phideg':180}

[rx]
temperaturek = 300
noisefactordb = 0

[show]
show = True

This is the code
from pylayers.antprop.coverage import *
import matplotlib.pyplot as plt
import time
import pdb
C = Coverage()

After that it crashes.
There is no coverage.ini file mentioned, so how can I find out which one I am using? I am basically trying to go with an unmodified default installation.
There must be some difference between your installation and my installation I think.

The default coverage.ini file used is located in the ini directory of your pylayers_project directory (which should be located in ~/pylayers_project. You can check at that path in the hidden file ~/.pylayers  ).
I reproduce the error only if I use a file without .lay extention in the filename parameter in the [layout] section of the ini file.

Thank you  for your feedback, and sorry for the regression in the master branch.
Your problem is probably due to recent modification I did working on outdoor coverage.
The new master version is probably fixing the problem.

How can I understand which coverage.ini is being used by default when I am not specifying one?

by default Coverage uses the file "coverage.ini " from your pylayers_project directory. Otherwise, you can provide a configuration file as a parameter of the Coverage object.

I am doing this to install pylayers:
python setup.py install --prefix=<some_folder_in_home>/python/pylayers
Then I end up with two files
<home>/pylayers_project/ini/coverage.ini
<some_folder_in_home>/python/pylayers/data/ini/coverage.ini
The second file is the one you are showing in your reply above. And the problem seems to be that the first file is different but taken by default. That leads to the crash. When I call the Coverage function with the second file as an argument then it works.

Did you go through all of these?
https://github.com/pylayers/pylayers/blob/master/INSTALL.md
Mornyres<EMAIL_ADDRESS>schrieb am Di., 29. Mai 2018, 21:24:

I'm getting the same problem (UnboundLocalError: local variable 'lonmin'
referenced before assignment).
Here's the full error:
Traceback (most recent call last): File "example.py", line 6, in
C = Coverage() File
"/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/antprop/coverage.py",
line 143, in init File
"/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/gis/ezone.py",
line 406, in init File
"/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/gis/ezone.py",
line 157, in dectile UnboundLocalError: local variable 'lonmin' referenced
before assignment
I ran setup.py install with no path arguments, just like in installer_unix
.
I've tried specifying the location for coverage.ini, but the same file
then gave me the error
Traceback (most recent call last): File "example.py", line 5, in
C = Coverage('~/pylayers_project/ini/coverage.ini') File
"/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/antprop/coverage.py",
line 98, in init File
"/home/USER/anaconda3/lib/python3.6/configparser.py", line 849, in items
raise NoSectionError(section) configparser.NoSectionError: No section:
'layout'
I'm probably overlooking something very simple, but I've tried
johschmitz's fix to no avail and would appreciate if anyone else has an
idea.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/pylayers/pylayers/issues/305#issuecomment-392910492,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAvHiykShE9Cob-kJoFV6pKGRb6hnbxkks5t3aB8gaJpZM4StoXf
.

Unfortunately, yes. It did take a lot of adjustments to get things working with Python 3.6.4. If I had to guess, the problem likely lies somewhere in Python 2/3 compatibility.
I was hoping to get it working on my main workstation for a quick demonstration, and then switch to 2.7 on a Pi or something if I were to actually use it on a project.

Setting lonmin, lonmax, etc. to specific values before the conditional block is entered does get rid of the error, but presents a bunch of new errors depending on what I initialize them to.
For instance,
lonmin = 0
lonmax = 180
latmin = 0
latmax = 90

causes the error
GEOS_ERROR: b'TopologyException: Input geom 1 is invalid: Self-intersection at or near point<PHONE_NUMBER>0018423 9.6296497219361793e-35 at<PHONE_NUMBER>0018423 9.6296497219361793e-35'
While setting them to
lonmin = 1
lonmax = 90
latmin = 1
latmax = 90

results in no errors. I realize that this is just pushing the problem elsewhere, but pushing ahead nonetheless I then get the error
Traceback (most recent call last):   File "example.py", line 5, in <module>     C = Coverage('coverage.ini')   File "/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/antprop/coverage.py", line 145, in __init__   File "/home/USER/anaconda3/lib/python3.6/site-packages/pylayers-0.5-py3.6.egg/pylayers/gis/ezone.py", line 617, in rebase AttributeError: 'Ezone' object has no attribute 'hgts'
        if source =='srtm':
->        Nlat,Nlon = self.hgts.shape
        elif source=='aster':
          Nlat,Nlon = self.hgta.shape

Dear all,
Most of the problem comes from the transition from python 2.7 to python 3.5.
Python 3.6 is challenging for having mayavi working properly. It is kind of tricky to find the good
combination of packages.
Below is my conda requirements :
conda list --export > requirements.txt
This file may be used to create an environment using:
$ conda create --name  --file
platform: linux-64
alabaster=0.7.10=py35_1
apptools=4.4.0=py35_0
asn1crypto=0.24.0=py35_0
babel=2.5.3=py35_0
backcall=0.1.0=py_0
basemap=1.1.0=py35_4
basemap-data-hires=1.1.0=0
blas=1.0=mkl
bleach=2.1.3=py_0
ca-certificates=2018.4.16=0
cairo=1.14.6=4
certifi=2018.4.16=py35_0
cffi=1.11.5=py35_0
chardet=3.0.4=py35_0
click=6.7=py_1
conda=4.5.1=py35_0
conda-env=2.6.0=0
configobj=5.0.6=py35_0
cryptography=2.2.1=py35_0
curl=7.59.0=1
cycler=0.10.0=py35_0
dask-core=0.17.2=py_0
decorator=4.3.0=py_0
descartes=1.0.2=py35_0
dill=<IP_ADDRESS>=py35_0
docutils=0.14=py35_0
entrypoints=0.2.3=py35_1
envisage=4.5.1=py35_0
expat=2.2.5=0
fastcache=1.0.2=py35_0
fontconfig=2.12.1=4
freetype=2.7=1
freexl=1.0.5=0
gdal=2.0.0=py35_1
geocoder=1.38.1=py_0
geos=3.6.2=1
geotiff=1.4.2=1
gettext=<IP_ADDRESS>=0
giflib=5.1.4=0
glib=2.51.4=0
gmp=6.1.2=0
gmpy2=2.0.8=py35_1
graphite2=1.3.11=0
h5py=2.7.1=py35_3
harfbuzz=1.4.3=0
hdf4=4.2.13=0
hdf5=1.10.1=2
html5lib=1.0.1=py_0
icu=58.2=0
idna=2.6=py35_1
imageio=2.3.0=py35_0
imagesize=1.0.0=py35_0
intel-openmp=2018.0.0=8
ipykernel=4.8.2=py35_0
ipython=6.3.1=py35_0
ipython_genutils=0.2.0=py35_0
ipywidgets=7.2.1=py35_1
jedi=0.12.0=py35_0
jinja2=2.10=py35_0
jpeg=9b=2
json-c=0.12.1=0
jsonschema=2.6.0=py35_1
jupyter=1.0.0=py_1
jupyter_client=5.2.3=py35_0
jupyter_console=5.2.0=py35_0
jupyter_contrib_core=0.3.3=py35_1
jupyter_contrib_nbextensions=0.5.0=py35_0
jupyter_core=4.4.0=py_0
jupyter_highlight_selected_word=0.2.0=py35_0
jupyter_latex_envs=1.4.4=py35_0
jupyter_nbextensions_configurator=0.4.0=py35_0
kealib=1.4.7=4
krb5=1.14.6=0
libdap4=3.18.3=2
libffi=3.2.1=3
libgcc=7.2.0=h69d50b8_2
libgcc-ng=7.2.0=hdf63c60_3
libgdal=2.0.0=1
libgfortran=3.0.0=1
libgfortran-ng=7.2.0=hdf63c60_3
libiconv=1.15=0
libnetcdf=<IP_ADDRESS>=10
libpng=1.6.34=0
libpq=9.6.3=0
libsodium=1.0.16=0
libspatialite=4.3.0a=18
libssh2=1.8.0=2
libstdcxx-ng=7.2.0=hdf63c60_3
libtiff=4.0.9=0
libxml2=2.9.8=0
libxslt=1.1.32=0
lime=<IP_ADDRESS>=py35_0
llvmlite=0.21.0=py35_0
lxml=4.2.1=py35_0
markupsafe=1.0=py35_0
matplotlib=2.0.0=np111py35_2
mayavi=4.5.0=py35_0
mistune=0.8.3=py35_1
mkl=2018.0.2=1
mkl_fft=1.0.2=py35_0
mkl_random=1.0.1=py35_0
mpc=1.1.0=4
mpfr=3.1.5=0
mpmath=1.0.0=py_0
multiprocess=0.70.5=py35_0
nbconvert=5.3.1=py_1
nbformat=4.4.0=py35_0
ncurses=5.9=10
netcdf4=1.3.1=py35_1
networkx=2.1=py35_0
notebook=5.4.1=py35_0
numba=0.36.1=py35hdc42b47_0
numpy=1.11.3=py35h3dfced4_4
numpydoc=0.8.0=py35_0
olefile=0.45.1=py35_0
openblas=0.2.20=7
openjpeg=2.1.2=3
openssl=1.0.2o=0
orderedset=2.0=py35_0
osmapi=1.1.0=py_0
packaging=17.1=py_0
pandas=0.22.0=py35_0
pandoc=2.1.3=0
pandocfilters=1.4.2=py35_0
pango=1.40.4=0
parso=0.2.0=py_0
pathos=0.2.1=py35_1
patsy=0.5.0=py35_0
pcre=8.39=0
pexpect=4.5.0=py35_0
pickleshare=0.7.4=py35_0
pillow=4.2.1=py35_0
pip=9.0.3=py35_0
pixman=0.34.0=1
pox=0.2.3=py35_0
ppft=<IP_ADDRESS>.1=py35_0
proj4=4.9.3=5
prompt_toolkit=1.0.15=py35_0
ptyprocess=0.5.2=py35_0
pycosat=0.6.3=py35_0
pycparser=2.18=py35_0
pyface=5.1.0=py35_0
pygments=2.2.0=py35_0
pyopenssl=17.5.0=py35_1
pyparsing=2.2.0=py35_0
pyproj=<IP_ADDRESS>=py35_0
pyqt=4.11.4=py35_3
pyserial=3.4=py35_0
pyshp=1.2.12=py_0
pyside=1.2.4=py35_8
pysocks=1.6.8=py35_1
pyspharm=1.0.9=py35_2
python=3.5.4=2
python-dateutil=2.7.2=py_0
pytz=2018.4=py_0
pywavelets=0.5.2=py35_1
pyyaml=3.12=py35_1
pyzmq=17.0.0=py35_4
qt=4.8.7=4
qtconsole=4.3.1=py35_0
ratelim=0.1.6=py35_0
readline=6.2=0
requests=2.18.4=py35_1
ruamel_yaml=0.15.35=py35_0
runipy=0.1.5=py35_1
scikit-image=0.13.1=py35_0
scikit-learn=0.19.1=py35hbf1f462_0
scipy=1.1.0=py35hfc37229_0
seaborn=0.8.1=py35h04cba02_0
send2trash=1.5.0=py_0
setuptools=39.0.1=py35_0
shapely=1.6.4=py35_0
simplegeneric=0.8.1=py35_0
simplejson=3.15.0=py35_0
simplekml=1.3.0=py35_0
sip=4.18=py35_1
six=1.11.0=py35_1
snowballstemmer=1.2.1=py35_0
sphinx=1.7.4=py35_0
sphinx-gallery=0.1.12=py35_0
sphinxcontrib-websupport=1.0.1=py35_0
sqlite=3.13.0=1
statsmodels=0.8.0=py35_0
sympy=1.1.1=py35_0
terminado=0.8.1=py35_0
testpath=0.3.1=py35_0
tk=8.5.19=2
toolz=0.9.0=py_0
tornado=5.0.2=py35_0
tqdm=4.23.1=py_0
traitlets=4.3.2=py35_0
traits=4.5.0=py35_0
traitsui=5.1.0=py35_0
typing=3.6.4=py35_0
urllib3=1.22=py35_0
util-linux=2.21=0
vtk=7.0.0=py35_0
wcwidth=0.1.7=py35_0
webencodings=0.5=py35_0
wheel=0.31.0=py35_0
widgetsnbextension=3.2.1=py35_0
xerces-c=3.2.0=0
xz=5.2.3=0
yaml=0.1.7=0
zeromq=4.2.5=1
Paste those requirements in requirements.txt
then
conda create --name  --file requirements.txt

This is a working version executed on 31 May with the code on the master branch.
Plot Coverage example


[Question]: How to build the sdk locally and test with my Kotlin Multiplatform app

General info

[X] I checked the troubleshooting page for similar problems

What is your question?
I am facing some issue with apple native sign in in my kotlin/compose multplatform app. I am using modules auth and compose-auth for that (there are other modules too like postgres).I want to insert some log statements to see where the issue is occuring before raising an issue here, since problem could be on my side.
I need to know how can I use the supabase-sdk locally in my project, what would I need to do?
what I tried?
1.Gpt told me to build a .aar file, I did that using "gradle assemble", I got the aar file and put that in "RootFolder/composeApp/src/androidmain/libs/supbase-kt-debug.aar"
2.put this in androidMain in build.gradle.kts -implementation(files("libs/supabase-kt-debug.aar"))
It obviously gave error, and it should have I guess, because this is not an android project and the dependency should be something I should be able to put on common section
Please help me , I am asking this instead of just raising an issue because I would like to contribute to this sdk in future, so this would be a good knowledge for me to test it locally on my Kotlin Multiplatform project

You can just publish the library to maven local, and then use it as a normal library. In order to do that,

Comment out this line:
https://github.com/supabase-community/supabase-kt/blob/74cb87538cc51e6b13977f1b58908248c9261e5d/build.gradle.kts#L44
Change the version to something different like 2.1.0-local-1 (change this as you want):
https://github.com/supabase-community/supabase-kt/blob/74cb87538cc51e6b13977f1b58908248c9261e5d/gradle.properties#L13
Run gradlew publishToMavenLocal, wait for it to finish
Use the locally published library exactly like you'd add the "real" library, just with your defined version. Also make sure to add the mavenLocal() repository for your dependencies (within your app)

If you just have a small change which doesn't require a full app to test, you can create a "test" module within the cloned supabase-kt project and just make a small jvm module or something like that and run it. You can add the modules (e.g. realtime) via implementation(project(":realtime-kt")).
Remember to reverse such changes when making a PR, the "test" module is in the gitignore file and always added in the settings.gradle.kts file, so you can always have that there.

thanks a lot @jan-tennert , I was able to run it locally, I have found where exactly is the issue(still not sure if something wrong on my side though).
I will raise a seperate issue now that  i have more idea and you can close this

thanks @jan-tennert , I was able to run it locally and have found out where the issue is happening, still not sure if it is something on my end but here is what I found
and Should I create a new issue with these details?
I have added the code and the logs output below
I put some logs in  the method "rememberSignInWithApple" and here are my obervations
1.The method runs as soon as the app opens, without user doing anything, although the code inside launched effect doesnt runs and directly the last log is printed

Then when I click on the sign in button all the statments that are marked "executed" run in an instant without me doing anything

3.Nothing is executed after I click on signIn in the apple native signin ui
4."nonce" and the "user" properties are showing null
5.All properties inside the config.loginConfig["apple"] object are null, even though object is not null
6.IMPORTANT -looks like authorizationController() method  is never executed, I had put some logs in that method too but nothing was printed and also the print statement "I am here 10" was not printed
@Composable
actual fun ComposeAuth.rememberSignInWithApple(
    onResult: (NativeSignInResult) -> Unit,
    fallback: suspend () -> Unit
): NativeSignInState {

    val state = remember { NativeSignInState() }
    val scope = rememberCoroutineScope()

    LaunchedEffect(key1 = state.started) {
        println("I am inside launched effect")//executed
        if (state.started) {
            println("I am inside first if block , which means state is set to started")//executed

            println("${config.loginConfig["apple"]}")
            if (config.loginConfig["apple"] == null) {
                println("I am inside 2nd if block , which shouldn't happen")// NOT EXECUTED
                fallback.invoke()
                state.reset()
                return@LaunchedEffect
            }

            val appleIDProvider = ASAuthorizationAppleIDProvider()
            val request = appleIDProvider.createRequest().apply {
                requestedScopes = listOf(ASAuthorizationScopeFullName, ASAuthorizationScopeEmail)
                nonce = (config.loginConfig["apple"] as? AppleLoginConfig)?.nonce
                println("loginConfig - ${config.loginConfig["apple"]}  server client id - ${config.loginConfig["apple"]?.serverClientId}")//executed
                println("requested scopes - $requestedScopes , nounce - $nonce  ")//executed
            }
            println("request - $request - user - ${request.user}")//executed

            val controller = ASAuthorizationController(listOf(request)).apply {
                println("i m inside controller ${this.delegate}")//executed
                delegate = authorizationController(scope) {
                    println(" I m here 10")// **** NOT EXECUTED ****
                    onResult.invoke(it)
                    state.reset()
                }

                println("I am here in the controller") // EXECUTED

                presentationContextProvider = presentationAnchor()

            }
            println("controller - $controller - delegate ${controller.delegate}") // EXECUTED
            println(" i am on my way further 3") // EXECUTED
            controller.performRequests()

            println("I am after the perfrom Reuest function")

        }
    }
    println("I am outside launched effect and state is $state.") //Executed first

    return state
}

##output
I am outside launched effect and state is io.github.jan.supabase.compose.auth.composable.NativeSignInState@8a32be0. I am inside launched effect starting apple auth I am outside launched effect and state is io.github.jan.supabase.compose.auth.composable.NativeSignInState@8a32be0. I am inside launched effect I am inside first if block , which means state is set to started AppleLoginConfig(serverClientId=, nonce=null, extraData=null) loginConfig - AppleLoginConfig(serverClientId=, nonce=null, extraData=null)  server client id -  requested scopes - [full_name, email] , nounce - null   request - <ASAuthorizationAppleIDRequest: 0x60000213c820> - user - null i m inside controller null I am here in the controller controller - <ASAuthorizationController: 0x60000390a2f0> - delegate <ComposeApp_kobjc5: 0x600000260740>  i am on my way further 3 I am after the perfrom Reuest function

Yes, I created a new issue for you: #447


ContextMenu Organizer

Description of the new feature / enhancement
Since PowerToys is a set windows system utilities to maximize productivity, the very much eligible utility that windows is badly missing is a easy organization or management of context menu items.
Scenario when this would be used?
Different software after installation create a clutter in the ContextMenu. So I would request PowerToys contributors to an easy to use utility available to manage the context menu item either by disabling them or by organizing them in the sub menu hierarchy.
 There have been more requests for this and the tracker seems to be #33.
@crutkas there are a few modules that receive quite a lot of attention/work. When can we move some focus on to either current projects that need to be updated, or even new projects?

Great idea,
something like these maybe
https://www.nirsoft.net/utils/shell_menu_view.html
https://www.nirsoft.net/utils/shexview.html

Thanks for the suggestion @furqansafdar. We'll close this as a dupe of #33 to keep suggestions centralized to that issue.
@Jay-o-Way we're currently investing the majority of our efforts toward stability. Given the back-log of crashing issues and general stability improvements that are needed, the PowerToys team will likely stay heads down on this effort for the next few release cycles. We're excited to work on these modules as soon as possible, but for now the stability effort takes priority.
Of course, we'll always actively support any community PRs submitted in the meantime!


added python stack concept program

Good work @shahgovinda! Congratulations on making your first open-source contribution. Keep learning and contributing!


Override navigation._title partial

Hi,
I would like that the upper left navigation title (name of the site + prod or local) redirect to the admin panel (/admin in my case) and not the root folder (/) as it is the case right now.
I don't think there is a configuration for that (AFAIK it's hardcoded here : https://github.com/area17/twill/blob/1.2/views/partials/navigation/_title.blade.php) but maybe I can override this small partial template easily ?
Thanks  a lot for your help !
BR

Hi @tchapi,
You are right, it should automatically support using a path for the admin homepage instead of just defaulting to the root path which only works for users of the admin subdomain. I'll add to our next release. In the meantime, you can override the partial under resources/views/vendor/twill/partials/navigation/_title.blade.php in your own app. This is true for any Twill view but we do not recommend publishing them all as it can make future maintenance more complex.

Alright, the override works great but you're right about the maintenance overhead
Thanks a lot

This should now be working correctly in 1.2.2 thanks to this update 28d8fcd599883957c84dda94d67213d6a00253a7.


Feature Request: Support for custom free operators

Hi everyone.
We have discussed the question I am about to rise earlier on Gitter. It keeps popping up on every corner for me, and if solved will probably greatly increase the flexibility of Freestyle. So it would be nice to have a more in-depth discussion of the problem.
Motivation
Freestyle can be used to describe what needs to be done without describing how. This is achieved via two things:

Abstract primitive actions - F[A], they are defined under the free traits.
Free operators to glue them together. Currently Freestyle expresses everything as Free[FreeApplicative[F, ?], A]. So the free operators available are point, flatMap and ap (and those you can derive from them).

In practice however these operators don't seem to be quite enough.
ApplicativeError Examples
CRUD website Update operation
Consider that you are writing a web server. You want to write a handler for an operation that updates some entity, say a forum post. Normally you would like to check the authorization of the user, then validate their data, then write to the database. If everything went fine, you return "Success" text, otherwise your return text depends on an error. If validation went wrong, you return the update form with bad fields highlighted, if the user does not have a proper authorization, you redirect them to the login page, and if the database write failed, you return an "Internal error" text.
Here's how this code in freestyle would look like:
def postUpdateHandler[F[_]: Application]: PartialFunction[Request, FS[F, Response]] =
	for {
	  user      <- app.req.getUser(request)        // Error effect: not logged in
	  _         <- app.auth.isModerator(user)      // Error effect: not a moderator
	  post      <- app.req.get[ForumPost](request) // Error effect: some fields are missing
	  postValid <- app.post.validate(post)         // Error effect: some fields are invalid
	  _         <- app.db.write(post)              // Error effect: database error
	} yield Redirect(router.post.read(post))       // Redirect to the updated post

Now imagine you have many such handlers, for every of your pages. At some point, in the server, you match the incoming request against these handlers, obtain the corresponding FS[F, Response], interpret it under some H, extract Response from H[Response] and respond with it.
Since our freestyle code had error effects, H will also have them. So during extraction, we'll need to also do error handling. Problem is, some errors are too local to be handled on the global scope. For example, a validation error of a forum post should result in responding by the form that caused the error with the bad fields highlighted. This would be hard to do from the central point in the server where requests are handled (precisely, will require to store all the relevant information - which URL the form came from, what was the original input - in the error itself. We'd rather have the concerns separated).
To localize error handling, we can use ApplicativeError:
def postUpdateHandler[F[_]: Application]: PartialFunction[Request, FS[F, Response]] =
	(for {
	  user      <- app.req.getUser(request)        // Error effect: not logged in
	  _         <- app.auth.isModerator(user)      // Error effect: not a moderator
	  post      <- app.req.get[ForumPost](request) // Error effect: some fields are missing
	  postValid <- app.post.validate(post)         // Error effect: some fields are invalid
	  _         <- app.db.write(post)              // Error effect: database error
	} yield Redirect(router.post.read(post))       // Redirect to the updated post
	).recoverWith { case ValidationError(...) => ... }

So in this case, the errors that are reasonable to handle globally are still propagated, whereas the local errors - ValidationError - get handled locally. This allows to display generic pages for global errors (e.g. "Please log in", "Internal server error happened"), whereas local errors get more specific pages (e.g. the form with highlighted bad fields, possibly preserving the original user input).
However, recoverWith is an operator of ApplicativeError, and is not supported by freestyle.
A solution suggested to me was to just return all the results in Either or Try. However, this would mean it will not be possible to decide on the spot which errors to propagate and which to handle locally. Also, in the above monadic flow, 5 statements potentially return an error. If we wrap them all in Either or Try, the entire point of monadic flow is lost.
Mass processing with Traverse
Consider you have a list of websites and you need to navigate to each of them and parse certain data.
There are lots of websites, and some of them may not conform to the pattern you expect, so you'll get an exception when trying to parse the data. Some websites may be dead and you'll get an exception trying to connect to them.
In other words, in large datasets unexpected exceptions can happen. You don't want to lose all the data you processed so far, so you want to just drop all the results that threw exceptions.
You have your processing algorithm implemented for a single URL in freestyle:
def process[F[_]: Application](url: URL): FS[F, Data] = ???

Obviously you catch all the exceptions under ErrorM effect, so the code is pure. Now you can use traverse to process the entire list:
val list: List[URL] = ???
val result: FS[F, List[Data]] = list.traverse(process)

However for most types (I tried Either and Future), the behavior of Applicative in a |@| b is to drop both results if at least one is erroneous. Which means list.traverse(process) will drop all the data on first error, and replace it with that error.
What we want is to recover the error to Option - have Some[Data] in case of success and None in case of failure. Than we can have a List[Option[Data]], which we can flatten.
One solution is to modify process to return FS[F, Option[Data]]. But what if this list is not the only place it is used at? What if we have a large project and don't want the signature modified?
ApplicativeError would have been of help again:
def processSafe[F[_]: Appliaction](url: URL): FS[F, Option[Data]] = process(url).map(Some).handleError(_ => None)
val result: FS[F, List[Data]] = list.traverse(process).map(_.flatten)

Nice, composable solution where we build upon an existing function to get a new one. Instead of modifying the existing function, potentially breaking dependencies.
However the same problem: freestyle does not support ApplicativeError.
Fetching data from many data sources
Similar example to the previous one. Consider that for a given URL, you need to fetch some data from it, but also some statistics on that URL from alexa.com. If either is not available, just return "N/A".
You may have two functions for the two tasks:
def data [F[_]: Application](url: URL): FS[F, Data ] = ???
def alexa[F[_]: Application](url: URL): FS[F, Alexa] = ???

Next you may unite them via applicative to get the unified result:
def process[F[_]: Application](url: URL): FS[F, String] =
  (data(url) |@| alexa(url)).map { (dataRes, alexaRes) => ... }

The problem, as previously, is that if either data or alexa have Error effect, the applicative for most implementations will simply drop the other one too. Same situation as in the previous example: you need to recover from the error with a default value ("N/A").
Custom operators. Parallel & GUI Programming Examples
The examples below are inspired by SubScript syntax, as it proved to be really good for GUI and workflow description.
Interruption
Consider you want to describe a GUI application in freestyle. You have three buttons, "A", "B" and "Cancel". The idea is that the user should press "A", then "B" will get activated and they will be able to press it. But if they press "Cancel" between "A" and "B", "B" will deactivate and "A" will activate again.
Hardly you can describe it with freestyle without introducing new operators. If you however have a possibility to add new operators, you can add /, interruption operator. And write something as follows:
aButtonPressed.flatMap(_ => bButtonPressed) / cancelButtonPressed

How / will work? Depends on the implementation. The job of freestyle is to preserve the structure of the operations performed, not the semantics. So it will only need to remember that the / operation was called. On interpretation it will consult a concrete type class implementation that knows what it means to do /(f1: F[A], f2: F[A]).
Choice
Now consider you have a GUI application with two buttons, "A" and "B". If "A" is pressed, "Hello" should be printed to the command line. "B" prints "World". The user may press whichever button they like, however they won't be able to press the other button after their choice.
Normally you would be able to do something as follows:
a.flatMap(_ => println("Hello")) |@| b.flatMap(_ => println("World"))

However this way the user will be able to press both of the buttons.
You may want another custom operator: +, that allows only one of the two F[A]'s to be chosen. What it means is defined by type classes, as always.
a.flatMap(_ => println("Hello")) + b.flatMap(_ => println("World"))

Solution
By these examples, I wanted to show that the standard Free[FreeApplicative[F, ?], A] view of programs is too rigid and inflexibly. If you aim to write the majority of your code in freestyle, you quickly discover that a lot of programs cannot be generalized as a sequence of parallel fragments. First, you have error handling. Second, you need more advanced control structures: we have discussed choice and interruption, but more standard structures include loops and forks. Third, you may very well want any of the known type classes to be used in freestyle, not only ApplicativeError.
Proposed Implementation
Idea
Free[FreeApplicative[F, ?], A] denotes a type level tree, where operators are flatMap, ap and others, and operands are F[A]'s.
More precisely, this is a tree of depth at least 2. On the first level, the operators are flatMap, map, pure - the monadic ones. The operands are FreeApplicative[F, A]. On the second level, the operators are ap (and others?) and the operands - F[A]. If F is another FreeS[F, A], you can potentially have a tree of unlimited depth.
So, if the operators that can be used are controlled by the type we are working under (FreeS = Free[FreeApplicative[F, ?], A]), an obvious way to extend the system will be to allow working under any type (as long as it conforms to framework restrictions).
If one wants to use ApplicativeError, one can use say FreeApplicativeError[Free[FreeApplicative[F, ?], ?], A]. If one wants to use interrupt or choice, one may want to stack FreeInterrupt and FreeChoice on top (or in the middle?) of their existing stack in a similar way.
Implementation
Here's how I see it working.
You start with a type class (say ApplicativeError), and you want to use its free alternative in your freestyle app.
First step then is to define this free alternative:
@algebra[ApplicativeError] trait FreeApplicativeError[F[_], E, A]

@algebra does some free object specific magic. It will track down all the abstract methods and will reify them into case classes.
ApplicativeError has the following abstract methods:
abstract def handleErrorWith[A](fa: F[A])(f: (E) ⇒ F[A]): F[A]
abstract def raiseError[A](e: E): F[A]

So they may be reified to the following classes:
case class HandleErrorWith[F[_], E, A](fa: F[A], f: (E) ⇒ F[A]) extends FreeApplicativeError[F, E, A]
case class RaiseError[F[_], E, A](e: E) extends FreeApplicativeError[F, E, A]

Also this macro will create a default type class ApplicativeError for FreeApplicativeError that will translate method calls to the case classes above.
@algebra[ApplicativeError] may not be possible to implement in that precise form, but the main idea is to provide the macro with the knowledge of which type class you are trying to make free.
Next thing you'll need to do is to specify how to interpret the free object in presence of a concrete type class:
trait Interpret[F[_], H[_]] {
  def interpret[A](fa: F[A]): H[A]
}

implicit def freeApplicativeErrorInterpreter
[F[_]: Interpret[?, H], H[_]: ApplicativeError, E]:
Interpret[FreeApplicativeError[F, E, ?], H] =
new Interpret[FreeApplicativeError[F, E, ?], H] {
  def interpret[A](f: FreeApplicativeError[F, E, A]) = f match {
    case HandleErrorWith(fa, f) => fa.interpret[H].handleErrorWith(f)
    case RaiseError(e) => ApplicativeError[H].raiseError(e)
  }
}

So in order to interpret a free object under H, you need to be able to interpret the higher-kinded type F in its monad transformer position (the one this free object encapsulates). Also you'll need a type class for H which knows the meaning of the operations your free algebra reifies.
And basically that's it. All you need to do (the inputs that the computer can not derive) is to:

Define the @algebra trait, and in this definition specify the name of the type class you are targeting.
Define the Interpret type class (or define the semantics of interpretation in any other way) which tells what to do with the case classes that represent operations.

This way, you can have a tree with arbitrary operators of arbitrary depth. Each operators reside on their own layer. And it will be executed layer by layer.
Conclusion
Thanks for reading this long post! I think Freestyle has a potential to describe any program without executing them. Decoupling semantics from description allows to plug in any semantics you like, enabling aspect-oriented programming. This is an awesome idea, and I think it could benefit greatly from the ideas outlined above. It is easy to think of Freestyle as of a programming language of its own, but it is hard to work with a programming language that has only sequence and parallelism control structures, without error handling (as in try) or other more conventional control structures (as in while, for, if etc).
Eager to know what you think about this idea.

@anatoliykmetyuk we are impressed and thank you for such detailed explanation!
While we could definitely model things as you proposed I think there may be a simpler approach by defining Choice / Interrupt and other as effects in the freestyle-effects.
Handlers for those effects can be recursive and expressed as natural transformations therefore allowing reification of the Choice and interruptcombinators and algebras can also receive implicit args that can be passed onto handlers. We have a current limitation of not being able to sendFSprograms as parameters to algebras but if we can figure a way to do that we don't need to change the type signature or introduce variations of whatFS` means. I think we should discuss this over chat but we are very much interested in finding a solution to this issue. Ultimately freestyle main goal is to be approachable to newcomers and allow people learning scala to use pure FP with a very simple an concise syntax.
Since all typeclasses can be expressed as algebras and constrains such as ApplicativeError are pushed to handlers as evidences in the runtime we should be able to model Choice, interrupt and many others effects as free algebras combinators.
As for @algebra[ApplicativeError] trait FreeApplicativeError[F[_], E, A] I think is also a great idea.
I think a more flexible approach would be something like:
@free[MonadError[Throwable, ?]] trait ErrorM so we can automatically reifiy any typeclass to Freestyle. This will allow us to remove most declarations in our effects module. Something to be solved in this area would be type constructors with arity > 1 which we are currently solving by using path dependent types and forcing the user to specify first the Error type to which all the algebras get materialized.
Looking forward to seeing you on gitter and discussing how we can make all of this happen keeping it easy for users to use. Cheers! and again, impressed and thank you so much!

@anatoliykmetyuk Also whatever we end up implementing we'd be honored if you champion that effort
:) :beers:

Relevant to this discussion is John De Goes' "post Free" presentation (talk, slides).


Setting Certificate path in settings file causes program to break

Setting the Certificate path as follows causes win acme to error and close.
<setting name="CertificatePath" serializeAs="String">
    <value>Z:\letsencrypt\certificates<value />
  </setting>

Client version: Latest available release
Windows version: Windows Server 2008 R2 Standard
Relevant part of log file: None.
https://github.com/PKISharp/win-acme/releases
Also why is it when we run letsencrypt.exe options to delete certificates / domain names from its database is not an option all we can do is revoke not remove them from the listing all together.
And a feature of custom renewal time would be nice so when we run letsencrypt.exe it allows us to change options of renewal time from 55 days to 15 days for example for each domain listed.

Hi @C0nw0nk, the error that you see is due to invalid XML; the <value> tag is not closed properly, where you put <value /> it's supposed to read </value>.

Also why is it when we run letsencrypt.exe options to delete certificates / domain names from its database is not an option all we can do is revoke not remove them from the listing all together.

The option in the menu is called "C: Cancel scheduled renewal". It's not called "delete" because it doesn't actually delete anything. The certificate will simply not be renewed and expire naturally.

And a feature of custom renewal time would be nice so when we run letsencrypt.exe it allows us to change options of renewal time from 55 days to 15 days for example for each domain listed.

Already there, in the same file where you changed the CertificatePath :)

Thanks for the information :).


Added support for transactions

Closes #133

Coverage increased (+0.01%) when pulling 7f4dc7bcdc452f005f9cf8971be86a5e0a5bdef7 on AlfonsoUceda:transactions into 85b101b523d8fbc5d28263bf871b21d3b56c3e77 on lotus:master.

@AlfonsoUceda Thanks for this PR.
This looks good, but we need to test the type of transactions that we are going to support. Sequel has fairly advanced features for this. We're not helping enough developers to understand how to use those features and protecting them from changes.
Help
I'm for expanding API docs with the options that we support and with examples.
Changes
We depend on sequel ~> 4.9. If one of those options change in a minor version we cannot guarantee that Lotus::Model works with it.
UserRepository.transaction(retry_on: [RecordNotUnique]) do
  UserRepository.create(User.new(username: 'jodosha'))
end

Now suppose that a new version of Sequel renames that :retry_on with :retry, the applications will suddenly break without us to even notice. The reason is we don't have tests to cover those cases.
The result is a breaking change for developers even if we haven't bumped to a version that allows us to do so. In other words: they depend on lotus-model which should guarantee that the application will work until they don't upgrade to a new version of it.
Adapters interoperability
In order to increase the compatibility between adapters, I'm for removing that exception on the memory adapter and to document this limitation. The implementation should just yield the given block and do nothing more.
Can you please expand this PR? Thank you very much.

If I undestood well, we have to test every option that sequel 4.9 support in transactions to ensure breaks if sequel is updated.
In the Adapters interoperability section, I comment in code.

@AlfonsoUceda Yes. My point is: we should test the options that we want to support. I'd say we can start with the following list for the next release:

rollback: :reraise
rollback: :always

So the API docs and the tests should be explicit on those cases. That's it :)

@jodosha what do you think about these changes?

Coverage increased (+0.01%) when pulling 158c1b7b76dbd2ff613364d82c9a9347a0e2f4c4 on AlfonsoUceda:transactions into 85b101b523d8fbc5d28263bf871b21d3b56c3e77 on lotus:master.

@AlfonsoUceda This looks good, I'll do a minor API docs cleanup. Thank you! :+1:

You welcome :D

@joneslee85 Can you please review this when you have time? TY!

Me happy :+1:

@AlfonsoUceda Thank you, I've just merged this. :+1:


Lua 5.1 - Does not have a luaL_checkversion function

When creating the dependency using lua51
    const ziglua = b.dependency("ziglua", .{
        .target = target,
        .optimize = optimize,
        .lang = .lua51,
        .shared = true,
    });

build fails with
error: root struct of file 'cimport' has no member named 'luaL_checkversion_'         return c.luaL_checkversion_(@ptrCast(lua), c.LUA_VERSION_NUM);

What code are you using this with? Lua 5.1 does not have a checkversion function https://www.lua.org/manual/5.1/manual.html
Simply depending on .lua51 shouldn't cause issues here

//src/root.zig
const ziglua = @import("ziglua");

fn zlo(lua: *ziglua.Lua) i32 {
    lua.newLib(&.{
        .{ .name = "add", .func = ziglua.wrap(add) },
    });
    return 1;
}

fn add(lua: *ziglua.Lua) i32 {
    const a = lua.toInteger(1) catch 0;
    const b = lua.toInteger(2) catch 0;
    lua.pushInteger(a + b);
    return 1;
}

comptime {
    _ = ziglua.exportFn("zlo", zlo);
}

Ah got it. So the newLib function doesn't exist in older versions of Lua and so is unsupported in Lua 5.1. The documentation for ziglua needs a lot of work still but I don't have a ton of time at the moment. Sorry about that.
You can use registerFns instead, see https://github.com/natecraddock/ziglua/issues/42 and https://natecraddock.github.io/ziglua/#ziglua.lib.Lua.registerFns
I do think that we could provide some sort of wrapper for newLib for older versions of Lua, I just haven't gotten around

Ok.  Thank you for the help. I have got it to work now.
//build.zig

const std = @import("std");

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});

    const lib = b.addSharedLibrary(.{
        .name = "mymodule",
        .root_source_file = b.path("src/root.zig"),
        .target = target,
        .optimize = .ReleaseSmall,
    });

    const ziglua = b.dependency("ziglua", .{
        .target = target,
        .optimize = optimize,
        .lang = .lua51,
        .shared = false,
    });

    lib.root_module.addImport("ziglua", ziglua.module("ziglua"));

    b.installArtifact(lib);
}

//src/root.zig

const std = @import("std");
const ziglua = @import("ziglua");

fn mymodule(lua: *ziglua.Lua) i32 {
    const fns = [_]ziglua.FnReg{ .{ .name = "hello", .func = ziglua.wrap(hello) }};
    lua.registerFns("mymodule", &fns);
    return 1;
}

fn hello(lua: *ziglua.Lua) i32 {
    _ = lua;
    std.debug.print("hello world\n", .{});
    return 1;
}

comptime {
    _ = ziglua.exportFn("mymodule", mymodule);
}

My particular version of Lua 5.1 is Win32 so also had to use an x86-windows build target.
zig build -Dtarget=x86-windows

Ah got it. So the newLib function doesn't exist in older versions of Lua and so is unsupported in Lua 5.1. The documentation for ziglua needs a lot of work still but I don't have a ton of time at the moment. Sorry about that.
You can use registerFns instead, see #42 and https://natecraddock.github.io/ziglua/#ziglua.lib.Lua.registerFns
I do think that we could provide some sort of wrapper for newLib for older versions of Lua, I just haven't gotten around

Ok.  You can close this issue if you'd like as I was able to get what I wanted working.


Improvement of Nav Bar and Hero Section

Currently its lacks many basic functionalities.

Hey @Aneeshaik I can work on this issue.

Currently its lacks many basic functionalities.

Please go ahead with your creative ideas for the navbar. I'm assigning this to you

Hey @Aneeshaik I can work on this issue.

Hey @Ncode-93! You can work on this. But, as @KARANSINGH34951 opened this issue, more preference will be given to him. But if your work is more creative then I'll merge your PR. If you want to work on a new issue, you can open an another issue.

hey i can wokr this issue

Hey @JhoanAlvear! You can work on this. But, as @KARANSINGH34951 opened this issue, more preference will be given to him. But if your work is more creative then I'll merge your PR. If you want to work on a new issue, you can open an another issue.


code block with whitespace

cf https://github.com/tlienart/Franklin.jl/issues/793#issuecomment-1121551985
VS-code doesn't seem to understand ```julia:..., it probably doesn't understand ```julia! either. So might want to add the possibility for a space and to restrict the possibilities, only if there's a language specified and if there's a line return so something like
\`\`\`[a-zA-Z0-9\-]+ ?[\:\!][a-zA-Z0-9\-\_]*\n

now added in dev, working on doc too


Create an epoch time-frame of 20 mins.

It appears that the way to set the epoch length is to use the Babe pallet in the runtime.
Unfortunately this pallet is interconnected with almost all the pallets in the substrate/frame, and a few other libaries.
there might be a simpler way, but I couldn't find it.
Right now I'm in the process of adding necessary pallets & imports one by one, but if that really is the way, we're better off directly using the substrate/node runtime and ALL the pallets directly.

Maybe we should write down the goal of this task. Depending on it, the TimeStamp pallet might be sufficient for this task.

I would say it's the implementation of the session pallet.
https://github.com/paritytech/substrate/blob/master/frame/session/src/lib.rs
//! - **Session:** A session is a period of time that has a constant set of validators. Validators
//!   can only join or exit the validator set at a session change. It is measured in block numbers.
//!   The block where a session is ended is determined by the `ShouldEndSession` trait. When the
//!   session is ending, a new validator set can be chosen by `OnSessionEnding` implementations.

The session-pallet is integrated with the staking pallet, but we can re-use the pallet solely for session logic for calculating the sessions change and it emits the event we require.

I've configured the runtime, now working on the corresponding chainspec configuration. will commit something the moment I have something that compile.

Configured the runtime for a 20min Epoch, but it can be changed in the constant.rs file located in the runtime folder.
created a branch as shown in github notifications.


Controller meshes are missing from demo :(

Hi Bastiaan, thanks for your work getting VR into Godot. Just wanted to let you know that the project in the demo folder of this repo is missing the left/right controller obj files, and says as much when loading the project up. IIRC they are in one of your other repos. Thanks again.

Thanks for the heads up, I'll get that fixed over the weekend :)

I hope some day a few enhancements get put through on the asset library that allow me to just maintain one repository. In due time :)

Ok, merged the restructure of the demo folder, should include all support files now in the same structure as the asset.


Typo in docs

On https://fresh.deno.dev/docs/concepts/app-wrapper there is a typo, the word "instance" is spelled "instsance"

Thanks for reporting this 👍


nginx proxy for a directory

Hello,
something failed when i try to configure the proxy for postfixadmin and rainloop.
i can just see postfixadmin. i can't connect to rainloop.
i tryied to modify the nginx proxy for that postfixadmin be in a specific directory /pf/ :
Webroot (default is /): /pf/
it indicates that :
WARNING: You might have to add a proxy header to get your custom webroot working.
it request this :
Type the required proxy_set_header (like X-Script-Name):
i know apache2 config, but not really nginx, what would be the good line ?
nginx: [emerg] invalid number of arguments in "proxy_set_header" directive in /sites-enabled/postfixadmin.conf:25
location /pf/ {
proxy_pass http://postfixadmin:8888;
proxy_set_header Host $host/pf/;
include /etc/nginx/conf/proxy_params;
}
Is there a little tuto to do that ? manuals are good, but i don't understand what to do.
thx

File proxy_params already contains proxy_set_header Host $host.


Report an issue

sudo apt update
[sudo] senha para wellington:
E: Conflicting values set for option Signed-By regarding source https://packages.microsoft.com/repos/edge/ stable: /usr/share/keyrings/microsoft.gpg !=
E: Conflicting values set for option Signed-By regarding source https://packages.microsoft.com/repos/edge/ stable: /usr/share/keyrings/microsoft.gpg !=
E: A lista de fontes não pode ser lida.

@Wellrique this issue typically occurs when multiple sources are defined with different signature verification definitions. Could you check the files under /etc/apt/sources.list.d to see if multiple entries exist for https://packages.microsoft.com/repos/edge/?
$ cat /etc/apt/sources.list.d/*.list

See also:
https://askubuntu.com/questions/1156409/conflicting-values-set-for-option-signed-by-regarding-source

Obrigado
Em seg., 24 de jul. de 2023 16:47, Matt Bearup @.***>
escreveu:

@Wellrique https://github.com/Wellrique this issue typically occurs
when multiple sources are defined with different signature verification
definitions. Could you check the files under /etc/apt/sources.list.d to see
if multiple entries exist for https://packages.microsoft.com/repos/edge/?
$ cat /etc/apt/sources.list.d/*.list
See also:
https://askubuntu.com/questions/1156409/conflicting-values-set-for-option-signed-by-regarding-source
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/linux-package-repositories/issues/69#issuecomment-1648510158,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A7JTUO3GOI6MA4CV5FCGZHLXR3GNLANCNFSM6AAAAAA2SY6T3E
.
You are receiving this because you were mentioned.Message ID:
@.***>


dclics.exe doesnt clear console on windows

Describe the bug
dclics.exe --member-id<PHONE_NUMBER>429783292 --platform xbox --mode all --character-id<PHONE_NUMBER>264966985 --period week
Should clear the console, but instead it spits out the control char to clear on linux.
crossterm crate:
https://crates.io/crates/crossterm
Looks like it can easily handle it, although we should just check and see if there is a simple way to clear on windows (since we dont need the other stuff in crossterm).

confirmed fixed on windows. closed.


fix(Indexer): Add exception handling when GetBaseField fails on a MonoBehaviour

Add exception handling for when unable to get the base field of a monobehaviour.
Closes #93

Not sure what would be most useful here for the log, I just threw in monoScript.PathId. Let me know if something else would be more useful for debugging.


GDScript: Avoid deadlock possibility in multi-threaded load

We already have a mechanism in WorkerThreadPool by which it collaborates with CommandQueueMT by unlocking its mutex before starting a wait and relocking it afterwards. That is a deadlock prevention mechanism that lets certain otherwise ill situations to make progress.
I found that in multi-threaded load situations (with RESOURCE_CACHE_MODE_IGNORE), the GDScript cache can incurr in a deadlock. That's the case if multiple threads interact with GDScriptCache::get_full_script(). By letting the WorkerThreadPool unlock the corresponding mutex, the deadlock is broken.
The first commit just makes the existing system more generic (mostly a refactor). The second makes GDScriptCache opt-in for it. It's interesting to keep both changes separate for bisections.
NOTE: Due to a risk of regressions, as this is slippery ground, you power maintainers may want to reschedule to 4.4.
UPDATE: Fixes #85255.

NOTE: Due to a risk of regressions, as this is slippery ground, you power maintainers may want to reschedule to 4.4.

I agree. The code seems good, but since it isn't fixing any reported regressions it's best to wait until 4.4

This turns out to fix an important issue. We may want to reasses milestone.

This seems to break the threads=no build:
In file included from platform/web/http_client_web.cpp:31:
In file included from platform/web/http_client_web.h:34:
In file included from ./core/io/http_client.h:34:
In file included from ./core/crypto/crypto.h:36:
In file included from ./core/io/resource_loader.h:36:
./core/object/worker_thread_pool.h:240:18: error: class member cannot be redeclared
  240 |         static uint32_t thread_enter_unlock_allowance_zone(BinaryMutex *p_mutex);
      |                         ^
./core/object/worker_thread_pool.h:239:18: note: previous declaration is here
  239 |         static uint32_t thread_enter_unlock_allowance_zone(Mutex *p_mutex);
      |                         ^

This seems to break the threads=no build:
In file included from platform/web/http_client_web.cpp:31:
In file included from platform/web/http_client_web.h:34:
In file included from ./core/io/http_client.h:34:
In file included from ./core/crypto/crypto.h:36:
In file included from ./core/io/resource_loader.h:36:
./core/object/worker_thread_pool.h:240:18: error: class member cannot be redeclared
  240 |         static uint32_t thread_enter_unlock_allowance_zone(BinaryMutex *p_mutex);
      |                         ^
./core/object/worker_thread_pool.h:239:18: note: previous declaration is here
  239 |         static uint32_t thread_enter_unlock_allowance_zone(Mutex *p_mutex);
      |                         ^

I wonder why it doesn't support the overloading. However, I can just preprocess out those for web builds. I'll push with that.

I wonder why it doesn't support the overloading. However, I can just preprocess out those for web builds. I'll push with that.

That's because in !defined(THREAD_ENABLED), those are defined to be the same:
using Mutex = MutexImpl;
using BinaryMutex = MutexImpl;

So it's the same definition twice.

Thanks!


Make color customizable

I tried the plugin and really appreciate the effort developing it.
But I am not able to use it.
With the current color this does not work. I am using the "Default" Theme as my base scheme and it looks not so good...

Working on it.

First customization capabilities delivered

Thanks for this!
It can be found under Tools > Active Tab Highlighter Plugin for anyone curious.

I do not have that menu in Tools, unfortunately.

It is on File/Settings... then Tools from left sidepanel. Hope it helps

Nice, thanks!


Language Detection: Rust

Lovely project! Would love to request auto language detection for Rust. I'll go through the code later and see if I can make a PR to do the same.

Great, I added it to our short-list of languages to support. We're making a short-list based on community request. I'll follow up in this ticket once we have something.


ClientId in authentication url

Q
A

Version
3.16.2

Hi,
With the addition of $clientIdRequired to GetObject and to RestTool all authentication requests are prefixed the clientId.
This cause authentication errors and all requests failed.
http://localhost/v2.01/test/oauth/token

Steps to reproduce

Clone this repository
Add var_dump($this->_requestUrl) in MangoPay\Libraries\RestTool.php line 182 (see example below)
Run tests

# MangoPay\Libraries\RestTool.php line 182

private function BuildRequest($urlMethod, $pagination, $additionalUrlParams = null, $idempotencyKey = null)
{
    $urlTool = new UrlTool($this->_root);
    $restUrl = $urlTool->GetRestUrl($urlMethod, $this->_clientIdRequired, $pagination, $additionalUrlParams);
    $this->_requestUrl = $urlTool->GetFullUrl($restUrl);
    var_dump($this->_requestUrl);
    ....

Actual result
$ ./vendor/bin/phpunit

PHPUnit 9.5.26 by Sebastian Bergmann and contributors.

.string(67) "https://api.sandbox.mangopay.com/v2.01/sdk-unit-tests/users/natural"
string(66) "https://api.sandbox.mangopay.com/v2.01/sdk-unit-tests/oauth/token/"
string(87) "https://api.sandbox.mangopay.com/v2.01/sdk-unit-tests/users/155912793/bankaccounts/iban"
...

A workaround is to use version 3.14.1

Hello @qdequippe, we are looking into it


Delete console.log from kanji_content_detect.js

Every time I open my javascript console, because I have this extension installed, I have a console.log statement from this extension. This console.log should only really happen if it's useful in debugging whether or not the extension itself has loaded, and even then only in a development environment.

Thanks @kuanyui! Would you consider cutting a release for this, when you have the time, so the fix reflects on my end?

Because I thought this is not that urgent which really deserve an emergent release... (And I indeed very busy recently and hardly have free time to do these side-project (especially for free). You can see my commit frequency these days...) I've delays several issues among all my side-projects that requires fixes + release.
I'm planning to add a feature for mobile floating button in recently, maybe release this PR with that feature.


[BUG] Server causes error when loaded with REI

Description:
Apparently loading REI with InvRev causes an error for the server.
Steps to Reproduce:
Download REI and InvRev and put these files inside the fabric server mods file.
Technical Information:

Minecraft: 1.19
Fabric API: fabric-api-0.58.0+1.19
Industrial Revolution: indrev-1.15.0-BETA
Modpack: None.

Logs:
https://pastebin.com/94Bh5bFn

Also unable to start a server without REI even though it shouldn't be a required dependency

Caused by: java.lang.RuntimeException: Rerached side issue when loading REI plugin by Industrial Revolution. Please use "rei_server", "rei_client" or "rei_common" instead.
This is the error causing it, it's most likely because REI did an update.

No, the issue persists throughout all 1.19 REI versions, so it's likely not the cause. In fact, indrev already uses rei_common, although I believe rei_client should be enough

@uzervlad Thanks for the comment. That actually works for me as a workaround.
For anyone that may encounter the same problem, here's a quick and dirty solution:

open the .jar archive (with 7zip.org, for example)
open the fabric.mod.json in any editor
replace rei_common with rei_client
save the changes and make sure that .jar archive is updated

After that, you should be able to use the modified .jar archive both on client and server without any issues.
I'm not sure how fabric and rei handles it, but I would imagine that after this change rei_server initialization is no longer triggered, avoiding the problem completely.