Question regarding createOutpuStreamCallback

Hi Alex,
I am wondering if there is any chance we could return the split streams rather than pass in the "createOutputStreamCallback"? If that we could chain and customize streams before we output them.
Thanks,
Andrew

This currently has 1,311 weekly downloads, but no github activity. Hopefully, we can actively maintain this. Perhaps adding some security bots might help alert us of updates needed

I was thinking the same thing when I used this library. Since this has not been updated in over 6 years, I am debating on creating an up-to-date version of this, with security bots like @justinelm mentioned.

It's gonna be a pain, but was able to finish it. It is on one of my repos, I watched the basics from youtube


Progressive Web App

These audits validate the aspects of a Progressive Web App.
Lighthouse report_ http___prose.pdf

Sorry, this is not an actionable ticket.


Fix infrequent test suite failures

The bug happens as often on rolling as on humble, and it is always only tests/test_interactions.py::TestLaunchFile::test_publisher that fails from time to time. In that trace, the test suite invocation in .github/workflows/python-package.yaml has been changed from python -m pytest to, following, since the problem only occurs sometimes:
function __run_times { seq 1 $1| { shift; xargs -i -- "$@"; } }
__run_times 10 python -m pytest

See #13 for debugging attempts.

Apparently, this is not the only job that can fail (log). tests/test_interactions.py::TestLaunchFile::test_debugging_yaml  can fault as well.

The thread being removed in #19 might have solved this.


3.1.0 Regression - You can select non-selectable hours when using setSelectableTimes

Probably from the change in 7177c31, you can now drag the hour marker to select non-selectable times.
Observed on a Galaxy S7 Edge, Android 6.0.1.
Here are the times I'm passing into timePicker.setSelectableTimes(times);

Confirmed, will try to get a fix out asap

This issue still persists on version 3.2.1:
The user can select a non-selectable time if they touch a hour/minute that is selectable and they drag their finger to a non-selectable hour/minute.

It seems it is not properly rounding the value when you actually release the touch.
This is not this regression, but a different issue. Would be better to track it in a different issue.


AmazonApiGatewayManagementApiClient PostToConnectionAsync for a web socket fails due to 'Name or service not known'

Describe the bug
After updating the AWSSDK.ApiGatewayManagementApi NuGet package from version <IP_ADDRESS> to <IP_ADDRESS>, we can no longer push data to a web socket via the PostToConnectionAsync method. The code to push data executes in a Lambda function that has public internet access via an outbound rule on an attached security group. Downgrading our services to the old version allows us to successfully send messages to the web socket again.
Exception log:
{
    "Timestamp": "2022-11-08T09:35:05.7378156+00:00",
    "Level": "Error",
    "MessageTemplate": "Can't send message to connection.",
    "Message": "REDACTED",
    "Exceptions": [
        {
            "Depth": 0,
            "ClassName": "System.Net.Http.HttpRequestException",
            "Message": "Name or service not known (execute-api.eu-west-1.amazonaws.com:443)",
            "Source": "System.Net.Http",
            "StackTraceString": "   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)\n   at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)\n   at REDACTED.WebSocketPushClient.Push(String connectionId, PushMessage message, CancellationToken cancellationToken) in /REDACTED/WebSocketPushClient.cs:line 61",
            "RemoteStackTraceString": null,
            "RemoteStackIndex": 0,
            "HResult": -2147467259,
            "HelpURL": null
        },
        {
            "Depth": 1,
            "ClassName": "System.Net.Sockets.SocketException",
            "Message": "Name or service not known",
            "Source": "System.Net.Sockets",
            "StackTraceString": "   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)\n   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)\n   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)",
            "RemoteStackTraceString": null,
            "RemoteStackIndex": 0,
            "HResult": -2147467259,
            "HelpURL": null
        }
    ],
    "SourceContext": "REDACTED.WebSocketPushClient",
    "ConnectionId": "bRpfNfKNjoECHUg=",
    "ServiceUrl": "wss://REDACTED.execute-api.eu-west-1.amazonaws.com/REDACTED",
    "Scope": [
        "a93b7a35-6602-5bb5-b43c-21d1430a6138",
        "ServiceUrl: wss://REDACTED.execute-api.eu-west-1.amazonaws.com/REDACTED",
        "Connection: bRpfNfKNjoECHUg=",
        "Message: REDACTED.PushMessage"
    ],
    "MachineName": "169",
    "Assembly": "REDACTED",
    "Version": "<IP_ADDRESS>",
    "LoggingLibrary"<EMAIL_ADDRESS>    "Service": "REDACTED",
    "LambdaContext": {
        "_typeTag": "LambdaContextEnrichment",
        "AwsRequestId": "a93b7a35-6602-5bb5-b43c-21d1430a6138",
        "FunctionName": "dev-lmb-wps-process",
        "FunctionVersion": "$LATEST",
        "LogGroupName": "/aws/lambda/dev-lmb-wps-process",
        "LogStreamName": "2022/11/08/[$LATEST]d9158fb11f8a4061a9c360369f35384d",
        "MemoryLimitInMB": 512,
        "RemainingTime": "00:00:59.7441455"
    }
}

Expected Behavior
The messages get send to the web socket.
Current Behavior
A socket exception occurs; see description.
Reproduction Steps
public async Task<bool> Push(string connectionId, PushMessage message, CancellationToken cancellationToken)
        {
                var serializedMessage = JsonSerializer.Serialize(message, new JsonSerializerOptions()
                {
                    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                });

                var stream = new MemoryStream(Encoding.UTF8.GetBytes(serializedMessage));
                var postToConnectionRequest = new PostToConnectionRequest
                {
                    ConnectionId = connectionId,
                    Data = stream
                };
                postToConnectionRequest.Data.Position = 0;
                try
                {
                    var response = await _amazonApiGatewayManagementApi.PostToConnectionAsync(
                        postToConnectionRequest, cancellationToken).ConfigureAwait(false);
                    if (response.HttpStatusCode == HttpStatusCode.OK)
                    {
                        return true;
                    }

                    _logger.LogError("Can't send message to connection. Response status code: {StatusCode}", response.HttpStatusCode);
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Can't send message to connection.");
                }

                return false;
            }
        }

Possible Solution
No response
Additional Information/Context
No response
AWS .NET SDK and/or Package version used
AWSSDK.ApiGatewayManagementApi <IP_ADDRESS>
Targeted .NET Platform
.NET 6
Operating System and version
AWS Lambda x86_64 .NET 6

Needs review with the team.

How do you provide wss:// address to the API?

We think you may be using wss:// for the ServiceUrl during client creation. Can you provide the code for your _amazonApiGatewayManagementApi client creation so we can see how you are setting it up?
If you are using wss:// that is likely incorrect and you should be using https:// instead for the ServiceUrl. We are also working to reproduce this issue.

I am indeed providing the ServiceUrl as the wss:// URL as it is indicated in the AWS API Gateway stage (WebSocket URL).
The ServiceUrl is set on the via a registration in my IServiceCollection instance during the Lambda startup as follows:
public void ConfigureServices(IConfiguration configuration, ILambdaEnvironment environment, IServiceCollection services)
{
    ....
           services.AddOptions<PushClientOptions>().Configure(options =>
                options.ServiceUrl = configuration["api_gateway_websocket_service_url"]);
            services.AddTransient<IAmazonApiGatewayManagementApi>(provider =>
            {
                var pushClientOptions = provider.GetRequiredService<IOptions<PushClientOptions>>();
                var config = new AmazonApiGatewayManagementApiConfig
                {
                    ServiceURL = pushClientOptions.Value.ServiceUrl
                };
                return new AmazonApiGatewayManagementApiClient(config);
            });
    ....
}

Has there been a change in behavior for the expected format of this ServiceUrl? Please note that with the old version of the package (<IP_ADDRESS>), this is working fine.

We have confirmed the issue. We have also confirmed that it is working when using https:// instead of wss:// in version <IP_ADDRESS>. So potentially this is a workaround while we continue to investigate why the behavior has changed.

We have release a fix for this in Core <IP_ADDRESS>. Please update to at least this version of core.

Thanks for the quick response and fix. I've updated our services to AWSSDK.ApiGatewayManagementApi version <IP_ADDRESS> and can confirm our push implementation can successfully send messages to web sockets again using the wss:// URL as ServiceUrl for the client. Thanks!

There is a way for most of the services to add them with extension method TryAddAwsService / TryAddAWSService, depending whether there's usage of localstack involved or not, but not for IAmazonApiGatewayManagementApi... There's no way to configure ServiceURL except adding the service as a Transient and providing new object initialization lambda definition as a parameter...
Is there more authentic way to add the interface in a service collection using TryAddAwsService and configure ServiceURL ?


Is there a way to browse images from local machine?

Is there any way to browse images with the Image picker from local system?

As far as I know you can not browse files directly from your local machine with ckeditor. Please see #237, #238, #144


Need user guidance in how to remove an xref wrapper around an image

The authors had a working practice of making some reference images clickable, with the link taking the browser back to the overview page for that installation.
The current author would like to remove one or more of these links, but to keep the image.
I've been able to do this from the Outline view in OxygenXML Author - by dragging the image up to the parent <div>, then deleting the xref and accompanying Click here to return to previous page text.
Here is how I have attempted to describe it.

I found the unwrap element command under the context menu for Refactor > Element > Unwrap element.  But, this applies to the whole file, rather than the selected item.

@IanMayo, your description is OK, describing what to do to extract the image from the link. I haven't found other ways. There is no shortcut or button to remove a link from an image. So I do not see any more work here.

Ok @frank-zimmermann - thanks for investigating.


RGB Image Observation Wrapper added.

I'm assuming that you want a fully observable image as input. It would be good to document this in the wrapper's class comment.
It would also be good to use the constant CELL_PIXELS instead of 32.
One question, why this change:
if self.grid_render is None or self.grid_render.window is None:

I am not sure if I follow how to document the wrappers class. I have changed the class comment to be more descriptive of the change.
" if self.grid_render is None "
this code was creating a new renderer only if env render object has not been created yet.
Since I am using " env.render(mode = 'rgb_array', highlight = False) " to get the RGB values, it creates a renderer without any windows first (and only once). hence the renderer does not have a window to actually render the grid when it is called in  "human" mode.
I used " if self.grid_render is None or self.grid_render.window is None: " to get around this issue. I am not too sure if it is the best way to do things. :)

Looks good. Thanks @idigitopia !


Connect to Postgres in SSL mode?

Problem Description:
We have an encrypted postgreSQL database on AWS RDS to which we connect via SSL key (managed by AWS KMS)
How can we achieve the same with pgsync. Couldn't find any info regarding SSL in the documentations
Here is our ENV:
### Elastic Search Variables
export ELASTICSEARCH_SCHEME=https
export ELASTICSEARCH_HOST=xxx.aws.cloud.es.io
export ELASTICSEARCH_PORT=9243
export ELASTICSEARCH_USER=xxx
export ELASTICSEARCH_PASSWORD=xxx
export ELASTICSEARCH_TIMEOUT=10

### PostgreSQL Variables
export PG_HOST=xxx.rds.amazonaws.com
export PG_USER=xxxx
export PG_PASSWORD=xxx
export PG_PORT=5432

### Redis Variables
export REDIS_HOST=xxx.cache.amazonaws.com
export REDIS_PORT=6379

which env variable should we set to point to the cert file?

This is now supported in version 1.1.12.
You'll need to set:

PG_SSLMODE
PG_SSLROOTCERT

The full list of environment variables are documented here.

@toluaina Thanks a bunch for your prompt reply.
A couple of questions before I can try above

How do we check the current vesion? pgsync --version doesnt work now.
How to upgrade pgsync?

Good point. I will add a command argument for displaying the version.
For now, you can open a python shell and do:
import pgsync
pgsync.__version__

You can upgrade pgsync using pip
pip install pgsync --upgrade

The documentation says PG_SSLROOTCERT should have the name of a file containing SSL certificate authority (CA) certificate(s). Are you sure its just the name? does pgsync expect this file to be in some standard folder like ~/.ssh ?

PG_SSLROOTCERT needs to be the path to the file containing SSL certificate authority (CA) certificate(s).
It is the same as the sslrootcert parameter outlined here.

ok thanks.
Another question. I cant seem to import pgsync from python console.
am I missing anything ?

Can you check your virtualenv is activated if applicable?
pgsync should be installed to site-packages
You should be able to import pgsync once you've installed it.
Maybe try this in a new environemtn.

virtualenv -p python3 venv
source venv/bin/activate
python -c "import pgsync; print(pgsync.version)"

Closing as this has been resolved. Reopen if there are outstanding issues.


Batch Orphanet X-refs request

Mondo term (ID and Label):
I found a few discrepancies in Orphanet ID mapping. Please let me know if the data below is unclear, but this seemed simpler than 4 different tickets for relatively straightforward X-ref updates.
Xref that should be fixed (ID and label):

Orphanet ID
Current Mondo ID
Proposed new Mondo ID
Rationale

ORPHA1662
MONDO:0800042
MONDO:0031213
Orphanet maps to >1 OMIM #, should move to the parent rather than   genetic subtype.

ORPHA2273
MONDO:0100213
MONDO:0100212
Orphanet maps to >1 OMIM #, should move to the parent rather than   genetic subtype.

ORPHA275761
MONDO:0019149
MONDO:0800449
This refers to a 'continuum' of presentation, is a parent to 2 other   Orpha IDs.

ORPHA75234
none?
MONDO:0019149
This is the correct Orpha ID for 'cholesteryl ester storage disease'

Your nano-attribution (ORCID)
If you don't have an ORCID, you can sign up for one here
Other comments:

I'd do some label cleanup at the same time. E.g. MONDO:0100213 sounds a bit
generic "IFAP syndrome with or without BRESHECK syndrome" (in fact the name
is logically indistinguishable from the parent). This should be renamed to
be consistent with the OMIM name "IFAP syndrome 1 with or without
BRESHECK syndrome"
On Thu, Jan 11, 2024 at 10:27 AM Megan S. Kane @.***>
wrote:

Mondo term (ID and Label):
I found a few discrepancies in Orphanet ID mapping. Please let me know if
the data below is unclear, but this seemed simpler than 4 different tickets
for relatively straightforward X-ref updates.
Xref that should be fixed (ID and label):

Orphanet ID Current Mondo ID Proposed new Mondo ID Rationale
ORPHA1662 MONDO:0800042 MONDO:0031213 Orphanet maps to >1 OMIM #, should
move to the parent rather than genetic subtype.
ORPHA2273 MONDO:0100213 MONDO:0100212 Orphanet maps to >1 OMIM #, should
move to the parent rather than genetic subtype.
ORPHA275761 MONDO:0019149 MONDO:0800449 This refers to a 'continuum' of
presentation, is a parent to 2 other Orpha IDs.
ORPHA75234 none? MONDO:0019149 This is the correct Orpha ID for
'cholesteryl ester storage disease'
Your nano-attribution (ORCID)
If you don't have an ORCID, you can sign up for one here
https://orcid.org/
Other comments:
—
Reply to this email directly, view it on GitHub
https://github.com/monarch-initiative/mondo/issues/7116, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAMMOLUSVXLVLJCSGCBUFLYOAVI3AVCNFSM6AAAAABBW6EGD2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGA3TOMZUGYYDCNA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


[50 mBTC Bounty] Implement Bibox

Hello,
I am paying a 50mBTC bounty to whomever fully implements the Bibox API before Februrary 13rd. 35mBTC otherwise until I close the issue.

Bounties I already paid:  HitBTC, YObit, Livecoin, Liqui, Bit-Z, Coinegg

I'll have a look

Current progress in my fork. Testing would be greatly appreciated :)

now done with

Place/cancel orders
Get order books
Get user balances

I might be able to do the rest of your list by this time tomorrow.

didnt quite finish, but now also done:

Get user active orders
Get tickers

Withdrawal seems impossible to do. It requires the Google Authenticator code :-1:

Will implement the funding history this evening. Is there anything else you expect for the bounty?

Have you implemented the getSymbols? If so, I think this is perfect. I am away for the rest of the week (sorry that was unexpected) but I will test all this as soon as I come back. Please give me an address for the full 50mbtc bounty.

I dont really find a getSymbols call in their API, XChange also doesnt require such call (I'm guessing you mean a list of all currencies on the exchange). The AccountService.getAccountInfo call returns all currencies with your balance.
I could also fake it by just taking all unique currencies from the available pairs? Do you just need all symbols or what information do you need for the symbols?

address is 3Q7vE3H3F8bZ7zywP2RpDzAkC8cVF5e7Um
<3

I meant getting all the markets, all the currency pairs available for trading.

yeah thats in. :)

@odrotleff Did you find an endpoint giving all the order books in one go? Otherwise everything seems to work perfectly, I will give you more feedback today.

I will check tomorrow if there's a way. I still did not receive the 50 mBTC btw.

They are somewhere on the blockchain, you should receive them.

I also frequently get
java.lang.NullPointerException: null
	at org.knowm.xchange.bibox.dto.BiboxSingleResponse.get(BiboxSingleResponse.java:15)
	at org.knowm.xchange.bibox.service.BiboxTradeServiceRaw.placeBiboxLimitOrder(BiboxTradeServiceRaw.java:39)
	at org.knowm.xchange.bibox.service.BiboxTradeService.placeLimitOrder(BiboxTradeService.java:48)

Did you encounter this error as well? Looks like the response is empty...

got the bounty, thanks!
about your questions:

There is no specific endpoint to retrieve all order books. There might however be a chance to retrieve multiple (and maybe even all) orderbooks, by using the functionality to send multiple requests in one call. Create multiple requests at once by doing BiboxCommands.of(command1, command2, ...), then look at the class BiboxMultipleResponses for parsing the response
I have never gotten that exception.

Multiple calls is not a good solution imo, each XChange call must call the exchange API once since it can't deal with exchange limitations  (rate limitation for example).

It happens randomly but I will let you know if I manage to isolate the case.

Thanks again!

I dont mean it like that. The Bibox API has (a weird) structure, where you can request multiple responses in just one request (see https://github.com/Biboxcom/api_reference/wiki/home_en#31-formats).

Sorry I read what you wrote too fast. Indeed that might be a good solution. Please keep me posted if you find a way to do this.

Hey man I think this works. Rather untested tho. Tell me if it works as intended, good luck :+1:

I will test tomorrow thanks

Works perfectly. Do you think it is this possible to implement a cancelAllActiveOrders with the same mechanism?
Thanks again!

Regarding the
java.lang.NullPointerException: null 	at org.knowm.xchange.bibox.dto.BiboxSingleResponse.get(BiboxSingleResponse.java:15)
I think I may get this error when I try to place an order with insufficient funds. The problem is that I get no error message on XChange. Could you please try to reproduce ?

I have just seen that in the getAllBiboxOrderBooks(Integer depth) you implemented, you call getExchangeSymbols() in order to get all the pairs. I think it should be a good thing to have a getBiboxOrderBooks(Integer depth, Set<CurrencyPair currencyPairs) which would only fetch the desired currencyPairs, allowing to not query getExchangeSymbols() everytime we need to fetch a list of order books. What do you think?

Do you think it is this possible to implement a cancelAllActiveOrders with the same mechanism?

Sure, but this will be the last feature I implement. I have other projects, too :)

I think I may get this error when I try to place an order with insufficient funds. The problem is that I get no error message on XChange. Could you please try to reproduce ?

Intersting, will take a look.

allowing to not query getExchangeSymbols() everytime we need to fetch a list of order books

getExchangeSymbols() is not a query, it just takes the symbols from the remoteInit() which is ran once when the exchange is initialized. That is why I didn['t create a getBiboxOrderBooks(Integer depth, Set<CurrencyPair currencyPairs).

Fine, thank you.

Sorry for my stubbornness, I will still add a getOrderBooks(Integer depth, Set<CurrencyPair currencyPairs) as it is less demanding server side and response message size is shorter, thus and can improve performance.
I left the getAllOrderBooks method though.
Please synchronize.

Damn I didn't read this until after I made PR #2350. This should fix the NullPointerExceptions and it adds the call to cancel multiple orders in one go.

Thanks, I'll close the issue once our PR are accepted.


Integrate semantic-release

https://github.com/semantic-release/semantic-release

Reference: https://github.com/yomotsu/camera-controls/pull/365


Android CI update with google secret access job.

Added the proposed updates on the Android CI to enable the access of the google service repository secret.
:ballot_box_with_check: Definition of Done checklist

[x] Meaningful title and valuable description in pull request
[x] Code change tested manually if not covered by automated tests
[x] Pull request linked to one or more issues/stories
[x] Acceptance criteria of the linked stories satisfied
[x] Code change comprehended by those who approved it
[x] State of target branch maintained or improved after the code change

Should, in this pull request, also have introduced the usage of Google services?

Yeah, we did but the problem of the app crashing was still there and we can't figure out what the problem could be now.

Link to a pull request that reproduces the errod and post it in #help-technical then. 👍


chore: ensure to log error before exiting

Closes #4157
Note for the reviewers: This patch will double the logs in specific scenarios, but I see it as the lesser evil, given that it is essential to log the errors always.

We cannot use a log. Error before exiting due to conflicts with specific subcommand,


Java Stack Implementation

Java program to implement stack

Hey, can you assign this to me?

I want to take part

@Anushka-codergirl can you assign me this issue?

Okay!

Hey Anushka
Please check the pull request


Build failure: gst-plugins-rs

Steps To Reproduce
Steps to reproduce the behavior:

build and test gst-plugins-rs on Hydra

Build log
https://hydra.nixos.org/build/220925319/log
Additional context
Tests time out when building gst-plugins-rs on Hydra.
This was reported to occur on Darwin in #225143, but also occurs on Linux as well. Currently, there is no up-to-date build for aarch64-linux in cache.nixos.org.

https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.gst_all_1.gst-plugins-rs.x86_64-linux
https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.gst_all_1.gst-plugins-rs.aarch64-linux

See intermittent Hydra failures
Notify maintainers
@lilyinstarlight

Oof the tests timed out on aarch64 on one and livesync plugin test failed on the other. I guess I'll make that timeout longer and disabled livesync on aarch64. PR incoming in the next hour or so

This was reported to occur on Darwin in https://github.com/NixOS/nixpkgs/pull/225143, but also occurs on Linux as well.

Darwin timed out in ofborg on the PR for other reasons (ofborg's internal timeout, not the timeout I set on the tests). It successfully built on Hydra after merging and I had tested it locally

For reference, this was the test failure on livesync on aarch64:
     Running tests/livesync.rs (build/target/aarch64-unknown-linux-gnu/debug/deps/livesync-335f59c0161e7d2b)

running 4 tests
Fontconfig error: Cannot load default config file: No such file: (null)
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
Fontconfig error: No writable cache directories
test test_audio_nonsinglesegment ... ok
test test_audio_singlesegment ... ok
test test_video_singlesegment ... ok
test test_video_nonsinglesegment ... FAILED

failures:

---- test_video_nonsinglesegment stdout ----
thread 'test_video_nonsinglesegment' panicked at 'assertion failed: `(left == right)`
  left: `20`,
 right: `10`: Bad offset', utils/livesync/tests/livesync.rs:171:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I'll follow-up with the gstreamer folks later and figure out what's going on with the livesync test (more uninitialized memory usage in videotestsrc like in audiotestsrc maybe 🤔)

Oh hey it's actually already been reported upstream. I'll just disable it across all platforms then and will re-enable when that issue is resolved
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/357

I've opened #234771


⚠ Bofrost.ch has degraded performance

In 8cd1faf, Bofrost.ch (https://www.bofrost.ch) experienced degraded performance:

HTTP code: 200
Response time: 2137 ms

Resolved: Bofrost.ch performance has improved in c572331.


Dev version of Kivy 1.11.0. SDL2 Error: Unable to load image

Versions

Python: 3.7.2 (32-bit)
OS: Win7
Kivy: 1.11.0.dev0
Kivy installation method: Based on instructions here and here

Description
I successfully compiled and installed Kivy dev version following the instructions posted above. Then, I run a minimal code example (see below) but I received error(s). The funny thing is that the same version of kivy runs fine with Python 2.7.15. After a bit of search, I installed module "Pillow" and added the next two lines to the top of main.py :
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'

Kivy run fine.
However, am I missing something here? Kivy is supposed to run without those two lines of code above. I believe the error has to do with the core\image_img_sdl2.cp37-win32.pyd file.
And what about this error:
error converting b'SDL_PIXELFORMAT_RGB24' to b'SDL_PIXELFORMAT_UNKNOWN': b"Parameter 'format' is invalid"

How could I investigate further?
Thanks in advance.
Code
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        return Label(text="Hello!")

if __name__ == "__main__":
    MyApp().run()

Logs
[INFO   ] [Kivy        ] v1.11.0.dev0, git-Unknown, 20190207
[INFO   ] [Python      ] v3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)]
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'3.3.11672 Compatibility Profile Context'>
[INFO   ] [GL          ] OpenGL vendor <b'ATI Technologies Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'ATI Mobility Radeon HD 4650'>
[INFO   ] [GL          ] OpenGL parsed version: 3, 3
[INFO   ] [GL          ] Shading version <b'3.30'>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <16>
[WARNING] [ImageSDL2   ] error converting b'SDL_PIXELFORMAT_RGB24' to b'SDL_PIXELFORMAT_UNKNOWN': b"Parameter 'format' is invalid"
[WARNING] [Image       ] Unable to load image <C:\Python37-32\lib\site-packages\kivy\data\glsl\default.png>
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - Exception: SDL2: Unable to load image
  File "C:\Python37-32\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Python37-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 140, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Python37-32\lib\site-packages\kivy\core\window\__init__.py", line 968, in __init__
    self.create_window()
  File "C:\Python37-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 293, in create_window
    super(WindowSDL, self).create_window()
  File "C:\Python37-32\lib\site-packages\kivy\core\window\__init__.py", line 1216, in create_window
    self.render_context = RenderContext()
  File "kivy\graphics\instructions.pyx", line 783, in kivy.graphics.instructions.RenderContext.__init__
  File "C:\Python37-32\lib\site-packages\kivy\core\image\__init__.py", line 561, in __init__
    self.filename = arg
  File "C:\Python37-32\lib\site-packages\kivy\core\image\__init__.py", line 757, in _set_filename
    mipmap=self._mipmap, nocache=self._nocache)
  File "C:\Python37-32\lib\site-packages\kivy\core\image\__init__.py", line 460, in load
    im = loader(filename, **kwargs)
  File "C:\Python37-32\lib\site-packages\kivy\core\image\__init__.py", line 223, in __init__
    self._data = self.load(filename)
  File "C:\Python37-32\lib\site-packages\kivy\core\image\img_sdl2.py", line 41, in load
    raise Exception('SDL2: Unable to load image')

[CRITICAL] [App         ] Unable to get a Window, abort.

Since last merge the issue is no more. Thank you.


Port testing from circleci-matrix to Circle 2.0

With the transition to Circle 2.0, testing on all version of python is now ignored:
https://github.com/Radiomics/pyradiomics/blob/master/.circleci-matrix.yml

updated location of config file:
https://github.com/Radiomics/pyradiomics/blob/master/.circleci/config.yml


get first interface with ipv4 or return <IP_ADDRESS> if none

Signed-off-by: Simon Smith<EMAIL_ADDRESS>Description
rpi4 has built in wifi, even tho its not used, the first interface seems to be the wifi, so no ipv4 address is defined
Related Issue

This PR fixes or closes issue: fixes https://github.com/crismc/homeassistant_addons/issues/8
Motivation and Context

How Has This Been Tested

Types of changes

[x] 🐛 Bug fix (non-breaking change which fixes an issue)
[ ] 🚀 New feature (non-breaking change which adds functionality)
[ ] 🌎 Translation (addition or update a translation)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have tested the change locally.

Thanks for making the changes!


Handler is triggered twice in Firefox

Forked from https://github.com/Tyriar/abbr-touch/issues/12#issuecomment-156957149

is there a way to change the touch to a click handler to check whether the normal Firefox has a similar behavior (and maybe get some logs out of the script console?

Not happening anymore on Firefox 45.0.2 (desktop) or latest Firefox for Android, closing.


Change testb.spacy to test.spacy so ner benchmark works

In the CoNLL-03 named entity recognition benchmark, the test corpus is saved as test.spacy but it's later called as testb.spacy during the evaluation, which makes it fail. This PR fixes this issue.

Good catch, thanks!


[Falcon7b] Add perplexity tests to new pipeline and restructure pytests to invoke with filenames

Ticket
#5383
Problem description

Falcon7b perplexity tests were included in the t3k demo pipeline since there was no perplexity pipeline and only seq len 1024 was tested
Perplexity tests were being invoked with ::[...], not meeting the requirements of #7586

What's changed

Moved Falcon7b perplexity tests to the new t3k perplexity pipeline, including 128/1024/2048 seq lens for prefill and decode
Restructured perplexity tests to be invoked with filename only

Checklist

[x] Post commit CI passes
[x] Model regression CI testing passes (if applicable)
[x] New/Existing tests provide coverage for changes

Perplexity tests: https://github.com/tenstorrent/tt-metal/actions/runs/9960678820
Post-commit model tests: https://github.com/tenstorrent/tt-metal/actions/runs/9960552729


Some mxnet ctc_loss bug & feature request

Mxnet ctc_loss has nearly the same source code with baidu's warpctc with little modifications, but it has some bugs.
import mxnet as mx
import numpy as np
import numpy.random as npr

Case 1 - mxnet ctc_loss is all right
batch_size = 1024
seq_len = 35
label_len = 10
num_classes = 60

x = mx.nd.random.uniform(shape=(seq_len, batch_size, num_classes), ctx=mx.gpu(0))
y = npr.randint(0, num_classes, size=(batch_size, label_len))
Y = mx.nd.array(y, ctx=mx.gpu(0)) # float label type

loss = mx.nd.contrib.ctc_loss(data=x, label=Y)
loss = mx.nd.make_loss(loss)
print(loss.asnumpy())

Case 2 - mxnet ctc_loss cannot support integer label types
batch_size = 1024
seq_len = 35
label_len = 10
num_classes = 60

x = mx.nd.random.uniform(shape=(seq_len, batch_size, num_classes), ctx=mx.gpu(0))
y = npr.randint(0, num_classes, size=(batch_size, label_len))
Y = mx.nd.array(y, ctx=mx.gpu(0), dtype=np.int32)

loss = mx.nd.contrib.ctc_loss(data=x, label=Y)
loss = mx.nd.make_loss(loss)
print(loss.asnumpy())

Case 3 - mxnet ctc_loss is slow or will crash when num_classes is big
batch_size = 1024
seq_len = 35
label_len = 10
num_classes = 6000

x = mx.nd.random.uniform(shape=(seq_len, batch_size, num_classes), ctx=mx.gpu(0))
y = npr.randint(0, num_classes, size=(batch_size, label_len))
Y = mx.nd.array(y, ctx=mx.gpu(0), dtype=np.int32)

loss = mx.nd.contrib.ctc_loss(data=x, label=Y)
loss = mx.nd.make_loss(loss)
print(loss.asnumpy())

x = mx.nd.Reshape(x, shape=(-3, -2))
Y = mx.nd.Reshape(Y, shape=(-1,))
loss = mx.nd.WarpCTC(data=x, label=Y, label_length=label_len, input_length=seq_len)
print(loss)

Case 4 - warpctc is all OK with big num_classes and integer types
batch_size = 1024
seq_len = 35
label_len = 10
num_classes = 6000

x = mx.nd.random.uniform(shape=(seq_len, batch_size, num_classes), ctx=mx.gpu(0))
y = npr.randint(0, num_classes, size=(batch_size, label_len))
Y = mx.nd.array(y, ctx=mx.gpu(0), dtype=np.int32)

x = mx.nd.Reshape(x, shape=(-3, -2))
Y = mx.nd.Reshape(Y, shape=(-1,))
loss = mx.nd.WarpCTC(data=x, label=Y, label_length=label_len, input_length=seq_len)
print(loss)

@chinakook do you think it is a good idea for us to depreciate contrib.ctc_loss and use WarpCTC since these two are similiar?

Yes, that's a good idea. Cudnnctc should be added too.

@szha Thank you. So I think we shouldn't abandon this one, as it is native to MXNet. Here is the JIRA ticket https://issues.apache.org/jira/browse/MXNET-526.

I have met the same problem.
In Case 3, when use cpu and execute mx.nd.contrib.ctc_loss, it cost about 1sencod。
but when use gpu，it will take very long time and gpu util is 100%。

@nswamy The bug in case 3 was fixed by PR https://github.com/apache/incubator-mxnet/pull/11834.
I am working on the integer type support via JIRA (https://issues.apache.org/jira/browse/MXNET-807). Please change the label from Bug to Feature

@chinakook I have added support of using integer as label type in CTC. Please kindly verify this change at your earliest convenience.

Yes, It's all right in all these cases. This issue can be closed as it's solved.


Auto-detect usage of Illumina iGenomes reference

Description of feature
As discussed on Slack here the aim of this feature is to make the latest versions of STAR the default now for all routes through the pipeline. There seem to be a number of fixes in recent versions of STAR that overcome weird seg faults and other issues that have been reported by users. We have stuck to an older version until now because the pipeline by default uses older indices from AWS iGenomes. Ideally, we would be able to auto-detect when AWS iGenomes is being used and switch to the appropriate container.
The plan is to auto-detect whether a --fasta called genome.fa is being used as well as a --gtf called genes.gtf. We can then have a switch in the pipeline that uses this information to determine which version of the container to use. This is the native naming convention used by all references on AWS iGenomes. However, this won't work in instances where users have renamed custom references downstream to follow this convention. In these relatively rare instances I think it makes sense to then use a custom config to re-define the containers:
process {
    withName: 'STAR_ALIGN' {
        container = 'quay.io/biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0'
    }

    withName: 'STAR_GENOMEGENERATE' {
        container = 'quay.io/biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0'
    }
}

The option to build and push the latest STAR indices to AWS iGenomes was also discussed but this doesn't make sense with the impending shift to using Refgenie for reference genome management.

Fixed in https://github.com/nf-core/rnaseq/pull/810


Enable password validators on the project template.

Thanks to @tmsndrs for the heads-up!

Merged in 733f487dc0b148048d84cd2276e4ecf4519b3796


Multivariate proposals for MH current not supported

With the current implementation of MH, it's not possible to specify multivariate proposals.
MVE:
julia> using Turing

julia> # Model definition.
       @model demo() = begin
           x ~ MvNormal(ones(2), zeros(2))
       end
demo (generic function with 2 methods)

julia> m = demo()
Turing.Model{Tuple{:x},Tuple{},getfield(Main, Symbol("###inner_function#438#26")),NamedTuple{(),Tuple{}},NamedTuple{(),Tuple{}}}(getfield(Main, Symbol("###inner_function#438#26"))(Core.Box(getfield(Main, Symbol("###inner_function#438#26"))(#= circular reference @-2 =#))), NamedTuple(), NamedTuple())

julia> sample(m, MH(10, (:x, x -> MvNormal(x, 0.1))))
ERROR: MethodError: no method matching support(::MvNormal{Float64,PDMats.PDiagMat{Float64,Array{Float64,1}},Array{Float64,1}})
Closest candidates are:
  support(::DiscreteNonParametric) at /home/tor/.julia/packages/Distributions/0Wogo/src/univariate/discrete/discretenonparametric.jl:60
  support(::Union{Type{D<:Distribution{Univariate,Continuous}}, D<:Distribution{Univariate,Continuous}}) where D<:Distribution{Univariate,Continuous} at /home/tor/.julia/packages/Distributions/0Wogo/src/univariates.jl:130
  support(::Union{Type{D<:Distribution{Univariate,Discrete}}, D<:Distribution{Univariate,Discrete}}) where D<:Distribution{Univariate,Discrete} at /home/tor/.julia/packages/Distributions/0Wogo/src/univariates.jl:131
Stacktrace:
 [1] assume(::Turing.Sampler{MH{(:x,)}}, ::MvNormal{Float64,PDMats.PDiagMat{Float64,Array{Float64,1}},Array{Float64,1}}, ::Turing.Core.RandomVariables.VarName{:x}, ::Turing.Core.RandomVariables.VarInfo{NamedTuple{(:x,),Tuple{Turing.Core.RandomVariables.Metadata{Dict{Turing.Core.RandomVariables.VarName{:x},Int64},Array{MvNormal{Float64,PDMats.PDiagMat{Float64,Array{Float64,1}},Array{Float64,1}},1},Array{Turing.Core.RandomVariables.VarName{:x},1},Array{Float64,1},Array{Set{Turing.Selector},1}}}},Float64}) at /home/tor/.julia/dev/Turing/src/inference/mh.jl:197
 [2] macro expansion at /home/tor/.julia/dev/Turing/src/core/compiler.jl:101 [inlined]
 [3] macro expansion at ./REPL[6]:3 [inlined]
 [4] (::getfield(Main, Symbol("###inner_function#438#26")))(::Turing.Core.RandomVariables.VarInfo{NamedTuple{(:x,),Tuple{Turing.Core.RandomVariables.Metadata{Dict{Turing.Core.RandomVariables.VarName{:x},Int64},Array{MvNormal{Float64,PDMats.PDiagMat{Float64,Array{Float64,1}},Array{Float64,1}},1},Array{Turing.Core.RandomVariables.VarName{:x},1},Array{Float64,1},Array{Set{Turing.Selector},1}}}},Float64}, ::Turing.Sampler{MH{(:x,)}}, ::Turing.Model{Tuple{:x},Tuple{},getfield(Main, Symbol("###inner_function#438#26")),NamedTuple{(),Tuple{}},NamedTuple{(),Tuple{}}}) at /home/tor/.julia/dev/Turing/src/core/compiler.jl:438
 [5] #call#3 at /home/tor/.julia/dev/Turing/src/Turing.jl:73 [inlined]
 [6] Model at /home/tor/.julia/dev/Turing/src/Turing.jl:73 [inlined]
 [7] runmodel!(::Turing.Model{Tuple{:x},Tuple{},getfield(Main, Symbol("###inner_function#438#26")),NamedTuple{(),Tuple{}},NamedTuple{(),Tuple{}}}, ::Turing.Core.RandomVariables.VarInfo{NamedTuple{(:x,),Tuple{Turing.Core.RandomVariables.Metadata{Dict{Turing.Core.RandomVariables.VarName{:x},Int64},Array{MvNormal{Float64,PDMats.PDiagMat{Float64,Array{Float64,1}},Array{Float64,1}},1},Array{Turing.Core.RandomVariables.VarName{:x},1},Array{Float64,1},Array{Set{Turing.Selector},1}}}},Float64}, ::Turing.Sampler{MH{(:x,)}}) at /home/tor/.julia/dev/Turing/src/core/RandomVariables.jl:694
 [8] #sample#39(::Bool, ::Nothing, ::Int64, ::Function, ::Turing.Model{Tuple{:x},Tuple{},getfield(Main, Symbol("###inner_function#438#26")),NamedTuple{(),Tuple{}},NamedTuple{(),Tuple{}}}, ::MH{(:x,)}) at /home/tor/.julia/dev/Turing/src/inference/mh.jl:139
 [9] sample(::Turing.Model{Tuple{:x},Tuple{},getfield(Main, Symbol("###inner_function#438#26")),NamedTuple{(),Tuple{}},NamedTuple{(),Tuple{}}}, ::MH{(:x,)}) at /home/tor/.julia/dev/Turing/src/inference/mh.jl:113
 [10] top-level scope at none:0

From a quick look at the code, it seems like the following lines is the issue:
https://github.com/TuringLang/Turing.jl/blob/2b4ca5db05518040d90fddfbbc7912474e36e059/src/inference/mh.jl#L195-L200
E.g. MvNormal does not implement the support function. Even if it did, < does not work between arrays due to no ordering on R^n.
A quick (and imo, sufficient) fix is to assume the user know what they're doing and just drop the support check.

Instead of dropping the support check, could we just have a elseif typeof(distribution) == MvNormal line added to the if block and treat it as a special case?

Instead of dropping the support check, could we just have a elseif typeof(distribution) == MvNormal line added to the if block and treat it as a special case?

I think this is the case for any MultivariateDistribution, not just MvNormal. It's also a problem if the user pass a custom distribution without a support defined.

Should this be closed? Thought this was fixed in #910

I think we're fine to close this for now.


bump tekton results api pod resources

set limits CPU to 3000m and memory 1Gi
set request CPU to 1000m and memory 500Mi

Signed-off-by: Avinal Kumar<EMAIL_ADDRESS>rh-pre-commit.version: 2.2.0
rh-pre-commit.check-secrets: ENABLED

prod issue and this is not tested in e2e, by-passing CI


⚠ Bofrost.be has degraded performance

In 85f8761, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1498 ms

Resolved: Bofrost.be performance has improved in c6f1aff after 7 minutes.


ci: gomu gomu no gatling workflow integration

Pull Request type
Please add the labels corresponding to the type of changes your PR introduces:

Other (please describe): CI Integration

What is the current behavior?
Resolves: #1097
No existing workflow to benchmark every PR with Gomu Gomu no Gatling
What is the new behavior?
Workflow with Gomu Gomu no Gatling action
Does this introduce a breaking change?
No

@d-roak Couple of Qs...

In order to setup the chain and benchmark every PR, what chain of commands should we be running before calling the action?

Where should the config file for the Gomu Gomu action live? What would be the rpc url?

You can ask those directly on tg

right now madara --dev should be enough, in the near future:

madara setup
madara run --dev

the rpc should be localhost:9944, is the config a mandatory input? If yes, let's change the way we set this up on gomu gomu

This PR is locked due to the long time it takes to run benchmarks. We need to first fix it


Group authors

A group author is an alternative to a singular author, representing a group that has contributed to an article. They are composed of multiple individual contributors, who may or may not be  acknowledged by name and whose contribution is counted collectively rather than individually.
User Stories
Author

As an author, I want to be able to edit the name of the group author so that I can correct any errors.
As an author, I want to be able to see the membership of a group author so that I can check this information is correct.
As an author, I want to be able to edit the details (names and affiliations) for the members of a group author so that I can correct any mistakes.

Production staff

As production staff, I want to be able to add a new group author to the author list so that I can include any missing group authors.
As production staff, I want to be able to remove a group author from the author list so that I can correct any errors.
As production staff, I want to be able to add members to the group author so that I can include any missing members.
As production staff, I want to be able to remove members from the group author so that I can correct any mistakes.

But what if . . . ?

Considerations

It is important to semantically include individual author names when supplied as these are sent to PubMed as contributors (but not direct authors) and the individual author names appear in PubMed searches. This is important to authors for recognition.
For contributions, competing interests, affiliations and corresponding author status, group authors act identically to normal authors. However unlike normal authors, they do not HAVE to have contributions, competing interests or affiliations.
For a member of a group author, the following details must be captured:
- Name
For a member of a group author, the following details can be captured but are not required:
- Affiliation
- Author ID (such as ORCiD)
- Email address
On the Reproducibility Project, the group author that served as corresponding author was permitted two email addresses - do we want to keep allowing this? (linked to #20)

XML requirements
Captured as a contrib. It must contain a collab element (which contains the plain text name of the group author), and may contain a child contrib-group element which contains the members of the group. Affiliations are tagged as a child of the member.
<contrib corresp="yes">
         <email>....</email>
         <email>...</email>
         <collab>Production team</collab>
         <contrib-group>
                  <contrib>
                           <name>
                                    <surname>Atherden</surname>
                                    <given-names>Frederick P</given-names>
                           </name>
                           <xref ref-type="aff" rid="aff11">11</xref>
                  </contrib>
                  <contrib>
                           <name>
                                    <surname>Gilbert</surname>
                                    <given-names>James F</given-names>
                           </name>
                           <xref ref-type="aff" rid="aff12">12</xref>
                  </contrib>
                  ….
                  <aff id="aff11">
                           11
                           <institution content-type="dept">Department of Technology</institution>
                           <institution>eLife</institution>
                           <addr-line>
                                  <city>Cambridge</city>
                           </addr-line>
                           <country>United Kingdom</country>
                  </aff>
                  <aff id="aff12">
                           12
                           <institution content-type="dept">Department of Production</institution>
                           <institution>eLife</institution>
                           <addr-line>
                                  <city>Cambridge</city>
                           </addr-line>
                           <country>United Kingdom</country>
                  </aff>
         </contrib-group>
</contrib>

Group author affiliations should be captured in the child contrib-group, as these are not at the same level as standard author affiliations.
Taken from: https://github.com/elifesciences/TextureRequirements/issues/54

Example of current support (everything as a child of collab):
<contrib id="group-1" contrib-type="group" equal-contrib="yes" corresp="yes">
    <collab>
        <named-content content-type="name">The Mouse Genome Sequencing Consortium</named-content>
<EMAIL_ADDRESS>        <xref ref-type="aff" rid="aff2" />
        <xref ref-type="award" rid="fund1" />
        <contrib-group contrib-type="group-member">
            <contrib id="author-3" contrib-type="person" equal-contrib="no" corresp="no" deceased="no">
                <name>
                    <surname>Kelly</surname>
                    <given-names>Laura A.</given-names>
                </name>
                <xref ref-type="aff" rid="aff2" />
            </contrib>
            <contrib id="author-4" contrib-type="person" equal-contrib="no" corresp="no" deceased="no">
                <name>
                    <surname>Randall</surname>
                    <given-names>Daniel Lee</given-names>
                    <suffix>Jr.</suffix>
                </name>
                <string-name content-type="alias">Dan Randall</string-name>
                <bio>

This is a bio example.

With multiparagraphs.

                </bio>
                <xref ref-type="aff" rid="aff3" />
            </contrib>
        </contrib-group>
    </collab>
</contrib>

Believed to be an eLife specific feature
See inVision file for design proposal

@Melissa37, @JGilbert-eLife, Currently we capture the membership contrib-group  as a child of collab. Here, we're proposing that it should be captured as a child of contrib, which I realise now is not allowed in JATS (which is curious, I think they should change this). Unless this is likely to change in 2.0, I think we'll have to revert back to capturing the membership contrib-group as a child of collab.
What are your thoughts? Should we change this back?

Hmm. Interesting. I agree with you that it would make more sense, following the pattern of a non-<collab> <contrib>, to have the second contrib-group within the contrib and having collab taking the place of an author name. But pending JATS 2.0, I'm not sure of how much benefit it would be to push for a change at this point.

PMC guidelines:
Use  when a group of authors is credited under a single name. Note that if an author is identified as writing on behalf of a collaboration or organization, you must use , not .
To include all members of a collaborative author, include an @id on the  tagged in the author . Tag a separate  with @content-type="collab-list". Tag members of the collaboration in the  as  with @contrib-type="collab" and @rid pointing to the id of the . Tag only one  with @content-type="collab-list" per article.
https://www.ncbi.nlm.nih.gov/pmc/pmcdoc/tagging-guidelines/article/dobs.html#dob-collab
So PMC deal with it differently. WDYT about following their lead? I kinda like it as it the members of the group are not contained within the primary level contrib group as we do now (nested within collab).

Hmm, interesting. Here's the example markup:
<contrib-group>
  <contrib contrib-type="author">
    <name>
      <surname>Church</surname><given-names>Deanna M.</given-names>
    </name>
  </contrib>
  <contrib contrib-type="author">
    <name>
      <surname>Goodstadt</surname><given-names>Leo</given-names>
    </name>
  </contrib>
  <contrib contrib-type="author">
    <name>
      <surname>Hillier</surname><given-names>LaDeana W.</given-names>
    </name>
  </contrib>
  <contrib contrib-type="author" id="collab1">
    <collab>The Mouse Genome Sequencing Consortium</collab>
  </contrib>
  <contrib contrib-type="author" id="collab2">
    <collab>The CORGI Consortium</collab>
  </contrib>
</contrib-group>
<contrib-group content-type="collab-list">
  <contrib contrib-type="collab" rid="collab1">
    <name>
      <surname>Kelly</surname><given-names>Laura A.</given-names>
    </name>
    <name>
    <surname>Chen</surname><given-names> Liu-Hua </given-names>
    </name>
      <name>
      <surname>Randall</surname><given-names>Daniel Lee</given-names>
      <suffix>Jr.</suffix>
    </name>
  </contrib>
  <contrib contrib-type="collab" rid="collab2">
    <name>
      <surname>Cheuk-Kwan</surname><given-names>Sun</given-names>
    </name>
    <name>
      <surname>Smith</surname><given-names>Janice P.</given-names>
    </name>
    <name>
      <surname>Tsuchida</surname><given-names>Douglas</given-names>
    </name>
  </contrib>
</contrib-group>

They do also suggest to use our previous tagging:

To include all members of a collaborative author, add a <conrib-group> into the <collab> after the text of the collaborative author name.

So both are valid. I won't include their example for nested in collab, here since we have so many from our own corpus.
I like the alternative option, since we can then replicate much of the same logic (for affiliations for example). I'm not sure if that will be easier to replicate in Libero Editor (since there'll have to two groups of affiliations which can be linked to), but don't think any assumptions should influence our decision here.
JATS4R have no preference either:

Since it is not common to see collaborative groups with constituent contributors listed, the following mark-up is offered as a suggested alternative to those given in [the example which is the same as our current capture]. Neither the following mark-up nor that in [that example] is preferred for any particular reason.

[Omitting the example here]

Here's what it looks like on PMC when we nest the affiliations inside each contrib (i.e. contrib/aff), so no difference at all.
However, when I try to upload a version with the affiliations in the contirb-group (`contrib-group/aff), like so:
<contrib-group content-type="collab-list">
        <contrib contrib-type="collaborator" rid="collab1">
          <name>
            <surname>Ball</surname>
            <given-names>J</given-names>
          </name>
          <xref ref-type="aff" rid="aff9"/>
        </contrib>
        <contrib contrib-type="collaborator" rid="collab1">
          <name>
            <surname>Barnes</surname>
            <given-names>E</given-names>
          </name>
          <xref ref-type="aff" rid="aff9"/>
        </contrib>
        <aff id="aff9">
          <institution>University of Nottingham</institution>
        </aff>
      </contrib-group>

I get the following error message:

ERROR :[2019-10-07 04:33:59]: -:2: element xref: validity error : IDREFS attribute rid references an unknown ID "aff9"

As far as I can tell the markup is perfectly fine, which makes me think PMC don't truly account for this markup.

So if we went for the alternative, we'd either have to still capture affs as children of the contrib or ask PMC to change how they handle these...


Are col-- classes supposed to be allowed on  related elements?

I see that rule E014 specifically allows for col-*-* classes to appear on <col>, <td> and <th> elements.  I see no mention of this being allowed in the bootstrap docs or in the bootlint wiki.  I also see no tests in bootlint that check for this.
Is this intended?  I only noticed this because I saw a usage of this in a project that I have bootlint running on, and I was surprised that it wasn't flagged.

Yes, it's intended. https://github.com/twbs/bootstrap/issues/11623 implies that it's supported.
You're right that 747dc1c5e356e91ea3900bc73af68f2a271edf86 neglected to include a test and that the docs ought to mention this case.


Cannot compile module with android 23 API :  BookmarkColumns is not found

I got some errors connected with not found BookmarkColumns symbol:
[javac] /Users/kio21/git/ti.barcode/android/src/com/google/zxing/client/android/share/AppPickerActivity.java:49: error: cannot find symbol
[javac]       intent.putExtra(Browser.BookmarkColumns.URL, url);
[javac]                              ^
[javac]   symbol:   variable BookmarkColumns
[javac]   location: class Browser

+1 same issue

Think this is the same issue:
$ ti build -p android --build-only
...
[ERROR] Failed to compile Java source files:
[ERROR]
[ERROR] warning: [options] bootstrap class path not set in conjunction with -source 1.6
[ERROR] Note: [KrollBindingGen] Running Kroll binding generator.
[ERROR] Note: [KrollBindingGen] No binding data found, creating new data file: org.appcelerator.titanium.bindings/barcode.json
[ERROR] Note: [KrollBindingGen] Found binding for module Barcode
[ERROR] Note: [KrollBindingGen] Generating JSON: file:/Users/markr/Downloads/naamlozemap/ti.barcode/android/build/generated/json/org/appcelerator/titanium/bindings/barcode.json
[ERROR] warning: The following options were not recognized by any processor: '[kroll.checkTiContext]'
[ERROR] /Users/markr/Downloads/naamlozemap/ti.barcode/android/src/com/google/zxing/client/android/share/AppPickerActivity.java:49: error: cannot find symbol
[ERROR]       intent.putExtra(Browser.BookmarkColumns.URL, url);
[ERROR]                              ^
[ERROR]   symbol:   variable BookmarkColumns
[ERROR]   location: class Browser

I think it's related to Android - Browser.BookmarkColumns cannot be resolved in Zxing Library. The Titanium SDK that I use, 5.5.1, needs Android API 23. When I temporary hack mobilesdk/osx/5.5.1.GA/android/package.json and set vendorDependencies.androidsdk to 22, the module compiles indeed.
Then I tried the last API 22 SDK: 5.0.1. To my dismay compiling gave me another issue:
Error: Cannot find module '/Users/markr/Library/Application Support/Titanium/mobilesdk/osx/5.0.1.GA/node_modules/sqlite3/lib/binding/node-v46-darwin-x64/node_sqlite3.node'

node-v44 does exists. Perhaps this is an issue of TiShadow. Pfff.

Resolved in the latest 3.0.0 release


Audio observations as raw sound files ?

Dear @ChanganVR
Thank you again for helping me out getting that missing file #77 in the last issue I opened.
After getting this, I have managed to get soundspace 2 to run and training the baseline DDPPO agent. :tada:
Opening an issue might not be the best way to ask this, but I was wondering if soundspace can provide acoustic sensory data as raw audio signal instead of spectrogram.
Thaanks a lot for your time.
Best regards.

Hi @dosssman, SoundSpaces computes waveforms initially, and depending on your sensor configuration (https://github.com/facebookresearch/sound-spaces/blob/4e400abaf65c7759a287355386dcd97de2b17e2b/configs/audionav/av_nav/mp3d/audiogoal.yaml#L24), it returns different observations accordingly. You can add AUDIOGOAL_SENSOR to the goal specification, which returns waveforms.

Thanks a lot. I will play around with the other types of sensors to see if I get the desired output.


Distinct attribute at search time

Pull Request
Related issue
Fixes #547
What does this PR do?

Adds distinct attribute at search time.
Adds tests for distinct attribute at search time.

PR checklist
Please check if your PR fulfills the following requirements:

[x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)?
[x] Have you read the contributing guidelines?
[x] Have you made sure that the title is accurate and descriptive of the changes?

Thank you so much for contributing to Meilisearch!

Done.

Fixed YAML linting. I think it's done now :)


Add RFC Template

Unless I'm missing something our issue template for RFCs does not work anymore. I searched for GH docs and it appears they want these templates in .github/ISSUE_TEMPLATE/ so I used their builder to create what you see here. I just copy/pasted from the _templates/rfc.md file so it should be a match.

👍


Netflix landing page clone

@Rayman-Sodhi  I am very much interested in creating netflix clone. So i would like to contribute to this repository. Can u please assign me this issue

Sure , I will look into labels and grading system then assign you the

I can help too if you wish. I made a netflix clone before https://sushantpatial.github.io/Netflix-Clone/

Hi @D-Palamala-Sai-Niharika  you can add your role in the excel sheet and start working on this issue

@Rayman-Sodhi  My comment in excel sheet has been resolved today .I will add my role and start working thank you


Generate subrealm based on an eduPersonEntitlement atttribute

As an organisation I want the user to get a realm based on the value of an eduPersonEntitlement attribute so  I can do granular VLAN assignment based on this realm
Possiible example values

http://unidemo.ch/geteduroam/4014
https://unidemo-ch.get.eduroam.org/vlan4014
ch:unidemo:eduroam:vl:4014

One of the issues with this is that it's hard to change the value; I think this is why we currently implement it by role/affiliation, in such a way that we add a prefix of "student." to the realm, because that may survive a network redesign better. Is there a good reason to really make it a specific VLAN value?
(I'd argue that if it's a role, it's trivial to assign a pool of VLANs from your internal system better?)
Anyway, thinking out loud; the part that we didn't really implement is taking the value out of a part of the attribute value (just the entire value, like in the case of affiliation - yet in most cases we hardwire).

Hmm, and what if it's multi-value?

Filter for a specific prefix, geteduroam-, in the example above and use the first value that  conforms to it?


Question about games wrapper for Ludii

I saw that a games wrapper for the Ludii General Game System was something that you were looking to add in contributing.md.  It looks like Ludii is written in Java.  Was the idea to be able to call the Ludii jar from C++ in order to interact with it?

I meant a direct C++ interpreter for the game descriptions (i.e. http://ludii.games/lud/games/BreakThrough.lud) avoiding the cost of having to externally load/communicate with a JVM which introduces a dependency and (maybe) an artificial performance hit.
The other thing I am not sure about is what kind of API the Java interpreter provides to query things like observations that the games would need to expose.
But maybe that is (too) ambitious. Wrapping the standard java interpreter would be a great place to start, so I would welcome this contributiion. Would you be happy to do it, even if the longer term goal was to interpret it in C++ directly?
Either way, we should loop in with the Ludii team. They recently told me Ludii is in pre-alpha and their plan is to release in January. So I would love their feedback on this too.

@lanctot possibly.  I am actually working on the laser tag gridworld environment right now but after that I might be able to.  I'd first have to learn more about the Ludii API.

Our recommendation would be to have OpenSpiel wrap around Ludii's JAR file, and call its Java code.
This is because the grammar that defines legal .lud game descriptions is not restricted to a relatively small set of instructions. It is automatically derived from all the "Ludeme" classes in the JAR file. These would all have to be re-implemented in C++ in order to avoid a wrapper around Ludii's java code, which would be a large and ever-growing amount of work as we are likely to continue updating Ludii.jar with new Ludemes quite regularly for a while still.
I've been having a look through OpenSpiel's API, and I think the latest version of Ludii.jar at this time of writing (v0.3.0) does not yet support all the methods that we'd want to be calling into from an OpenSpiel wrapper. In particular the representation of game state observations is currently a bit different. I do not suspect any major problems with updating Ludii.jar to provide all the methods that we'd want to have, but we will have to find some time to sit down and do that first.
We'll post here once we've updated Ludii to include all the methods that we expect to be required, and keep an eye out here in general in case any questions or suggestions pop up about OpenSpiel + Ludii.

Ok, thanks for tuning in. That all sounds good to me. I am happy, then, to support the @alexminnaar's original suggestion of wrapping the Ludii interpreter.
The game state observations could be converted from e.g. ASCII text in some consistent way. But having a one-hot concatenated representation of bit fields would also be good too. Whatever makes the most sense as a first cut and could then be revised.
Feel free to continue using this thread for discussion on this and thanks again!

@lanctot I did some experiments and I was able to call the Ludii jar through C++ using JNI (here is a gist that calls the Ludii GameLoader.listGames() method).  I was thinking perhaps a good first step would be to create a utils/helper file that does some Ludii API calls and encapsulates the JNI logic.  I'd be happy to work on this.  Or maybe we should hold off until @Ludeme has made the updates? I'm fine either way.  What do you think?

That's awesome, @alexminnaar!
Yes that plan sounds good to me. Feel free to start putting all of the Ludii-related code under a subdirectory ludii (under games) with a README on what needs installing to get it to work. I will test it on my end too.
I noticed the command in the gist code uses openjdk? Does this mean on Debian / Ubuntu you can get the Java dependencies (other than the Ludii .jar of course) with a one-line apt-get command? Been out of the Java game for a while..
I think these first steps are straight forward / experimental and I doubt anything here is too controversial so I think it's ok to go forward for now. But also I encourage @Ludeme to subcribe to this thread so we can continue to use it for design discussions.

Yes I'm already subscribed to this thread.
Looking good so far! @alexminnaar I imagine that figuring out which Ludii methods to call is going to be difficult in Ludii's current state, because for the current pre-release version we only focussed on documentation on how to implement new games / implement AIs for Ludii. There is no public documentation currently on some of the "inner workings" of Ludii, which you'd likely have to call into. And some of the methods probably do not exist yet.
If you're going to be playing around with Ludii already anyway and give it a try, please don't hesitate to contact us with questions about the API.

@lanctot yes I think that would be all you need to do.  The JNI headers and libjvm.so should live in openjdk.  Just to clarify though, for the time being, we would be building everything in the ludii directory separately from the rest of open_spiel i.e. we won't include any of it in cmake just yet.  Is this correct?

Yep that is what I was thinking. In any case we would likely always treat Ludii as an optional dependency (enabling a Ludii wrapper would be something people can enable and if so they would install Ludii on their own) so that it doesn't require everyone using OpenSpiel to install Ludii.

(I only meant the OpenSpiel code you write specifically for that subdir, and the instructions could detail hown to modify the necessary make files to add Ludii's build dir)

@lanctot sounds good, I'll post my updates here

I wanted to post an update. So I have created a ludii directory in my fork.  In my previous update I was able to call GameLoader.listGames() via JNI so next I wanted to do a proof-of-concept for actually creating a Ludii game object and calling one of its methods - i.e. do something like
Game game = GameLoader.loadGameFromName("board/space/blocking/Amazons.lud");
String gameName = game.name();

I was able to implement this with JNI here and it appears to be working.  Also, in this Ludii class I've created, the jvm is initilized and the Ludii jar is put on the classpath in the constructor and then destroyed in the destructor.  Clearly it's all pretty rough right now and there are probably some much better ways to abstract this but my thinking is perhaps I should continue implementing some of these Ludii methods in this class and then worry about the abstractions after that.  Let me know if there are any thoughts.

@lanctot Any thoughts on how crucial it would be to have an accurate implementation for Game::NumDistinctActions() and/or State::NumDistinctActions()? I assume this is primarily used for policy networks to construct an output layer of the correct size?
Given a general game description file (in e.g. Ludii's format), it is usually not straightforward to make this number explicit. Exactly this is one of the reasons why I've been sticking to simpler linear policy function approximators which I apply separately to every available action in a given state in most of my research using Ludii so far, instead of one large function approximator that handles all actions at once.
If it's crucial to get this right... I'll have to look into it, but I think we should be able to at least get an upper bound working (which may in some cases turn out to be excessively large).

Hmm, yeah that's exactly what it is used for. A first cut could simply exclude that function as we figure out how/whether it is possible. It is too bad because general learning using neural nets was one of aims but I can see how hard that one can be with simpler game description languages.
Is that the only one though? I assume the observations functions are tough too.
It makes an interesting research problem, though! Like, ca n an agent can keep an ever growing list of global legal moves and add outputs to its network dynamically as it discovers them via inspecting legal actions  (and how to ensure keeping the current policy with the other actions intact when it does). This would make the agents event more general and is an interesting challenge and research direction.
(Is this even possible? Are the actions in Ludii globally identifiable? E.g. in chess is e2e4 represented the same way to the agent whether it's turn 1 or turn 10?)

Hi,

It makes an interesting research problem, though! Like, ca n an agent can keep an ever growing list of global legal moves and add outputs to its network dynamically as it discovers them via inspecting legal actions (and how to ensure keeping the current policy with the other actions intact when it does). This would make the agents event more general and is an interesting challenge and research direction.

That is an interesting problem! This would be nice to inerstigate.
Regards,
Cameron

On 23 Sep 2019, at 16:09, lanctot<EMAIL_ADDRESS>wrote:
Hmm, yeah that's exactly what it is used for. A first cut could simply exclude that function as we figure out how/whether it is possible. It is too bad because general learning using neural nets was one of aims but I can see how hard that one can be with simpler game description languages.
Is that the only one though? I assume the observations functions are tough too.
It makes an interesting research problem, though! Like, ca n an agent can keep an ever growing list of global legal moves and add outputs to its network dynamically as it discovers them via inspecting legal actions (and how to ensure keeping the current policy with the other actions intact when it does). This would make the agents event more general and is an interesting challenge and research direction.
(Is this even possible? Are the actions in Ludii globally identifiable? E.g. in chess is e2e4 represented the same way to the agent whether it's turn 1 or turn 10?)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/deepmind/open_spiel/issues/39?email_source=notifications&email_token=AM2LGBENQZXLZ2BH5OM6QNDQLDE3NA5CNFSM4IU55UZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7K7PVI#issuecomment-534116309, or mute the thread https://github.com/notifications/unsubscribe-auth/AM2LGBESUHPPV43XXV46ODDQLDE3NANCNFSM4IU55UZQ.

Is that the only one though? I assume the observations functions are tough too.

It's probably not the only tricky one, just the first one I ran into that seems tricky :D
Yes, the action representation in Ludii is independent of the state, such an e2e4 move would look the same regardless of turn number. Sometimes our actions will contain even more data than that (like, I think it would specifically also contain data about the piece being removed if there is an opposing piece on the destination), but we should be able to relatively easily map from less data (like just from- and to-position) to a more complex action object as long as it's sufficient data for the move to be uniquely identifiable (given list of legal moves in current game state).
We'll continue thinking about how to get a reasonable upper bound on the number of distinct actions...

I think we've got fairly reasonable approximations for the number of distinct actions in Ludii now (in our dev version, not yet online). Of course not perfect, usually at least a bit of an overestimation, but usually doesn't seem to be too bad.
Internally, we do this based on "from" and "to" positions in Ludii, plus (in rare cases) an index for things like pieces (e.g. to choose piece to promote to). This tends to lead to numbers that are not excessively large.
The only type of games in which this is likely to fail is "stacking" games, i.e. games where there can be multiple pieces stacked on top of each other in a single location. If players are free to make choices for the level within a stack at which they manipulate it (e.g. if they can choose how many pieces to take off of a stack and move onto a different position), such moves would all get mapped to the same "unique" (but not really unique) index. What we can do in Ludii if an OpenSpiel agent decides to play such an action, is to simply select an action at random from all the legal actions that map to that same index. Implementing a proper, unique mapping in these cases would lead to excessive large numbers. Multiplying all from-positions with all to-positions tends to still be tractable, but multiplying that again by the maximum size of a stack (in theory unbounded, in practice just a sufficiently large number)... not really tractable anymore.

Different issue: when REGISTER_SPIEL_GAME() is used to register a game, it expects a GameType object with data about stochastic vs deterministic, simultaneous vs sequential, etc. I think this information has to be fixed at compile-time? How would we register a hypothetical "LudiiGame" class that can load any arbitrary Ludii game based on a supplied String name?
For any given Ludii game, we can easily have it provide all that information... but only once we know which game we're going to be loading, which is not yet known at compile-time if we want a generic "LudiiGame". I don't suppose we'd want a separate C++ class for every game implemented in Ludii either...

Update here.  I was able to wrap most of the functionality from the Ludii tutorial in my fork.  Some of the wrappings are tested here.  It's definitely not a complete wrapper but I figure we can add functions later as needed.  I think it would probably be more efficient if I pre-fetched jclass's and methodid's in the constructors so maybe I'll make that change next.  Let me know if there are any thoughts.

@alexminnaar I have been spending some time going through the OpenSpiel API, and taking notes on which Ludii functions would have to be called. You can see this here: https://www.overleaf.com/read/rkyfprfdqmky
Whilst doing this, I've also been adding a bunch of new methods because some of the required functionality did not yet exist in the online version of Ludii (or was only accessible through deep nested calls, which is very inconvenient from C++). I've also created two new wrapper classes to make all this functionality easily accessible without deep calls.
It's still very much work in progress on our end though, also got other things to focus on... and we're not ready yet to put this current version of Ludii with these new methods online.

Sounds good.  @DennisSoemers @lanctot I'll leave you to it.  Feel free to ping me if you need me.

Great progress guys!
@alexminnaar I'd really love to see some of that early stuff in the repos; there's no detriment to having it in there and actually there's at least one other suggestion (https://github.com/deepmind/open_spiel/issues/65) where it would have been useful to have an exampel of using JNI to wrap the .jar. So even just the first thing you did to call gameLoader.ListGames or load a specific game given a path would be great to have in the repos now. (Including steps to run it in the comments)
Personally I don't see why not add the rest you have already. It's clearly a work in progress but people could already start looking at it and trying stuff out. It's something we could be clear is a work in progress and link to this issue. Might even help @DennisSoemers . Anyway, just my opinion!

@lanctot Some other parts of Ludii (mostly GUI for some classes of games) are currently (in our dev version) broken, due to some things there being overhauled. So we don't really want to put a half-broken Ludii.jar out there. But sure, when those other things are patched up and ready to go live, it will also include whatever we have ready at that time in terms of OpenSpiel support.

Ok but very simple API calls (ListGames, Loadgame) to show how C++ can hook up to Java through JNI would be fine, right? Like, a directory called ludii that only contains the loading of the jar an calls those two functions. That would be fine, no? Or are you saying there exists no stable Ludii .jar file yet?
I'll let you both decide but I'd love to see even the early stuff start to make it into the repos. There's no downside, and only benefit, from what i can tell.

Oh sorry I misread that previous post. Yes, absolutely, everything that @alexminnaar managed to get running so far already was tested with Ludii-0.3.0.jar, which is a stable version that we've currently got up on our website.

@lanctot That sounds good too.  I can create a PR for the ListGames and LoadGame functionality.

@lanctot We're currently working on adding the "swap"  or "pie" rule to some games (like Hex), where players sometimes have the option of choosing to swap roles.
Are there any plans for adding such rules to existing OpenSpiel games? If not, we're going to have to be very careful about what data we return from Ludii to OpenSpiel when it's requesting things like "who is the current mover" or "what are the rewards/returns for player X". I guess they'd usually have to be from the "perspective" of the original role assignments rather than the swapped assignments for AI correctness, but that might get confusing sometimes...

@DennisSoemers, this came up when were adding Hex and Havannah. @deepmind-locked suggested we implement a general game transform that can change any game into one with the pie rule (wrapping the underlying game I guess). Looks like we did not implement it in the end but it seems like the easiest way to support it for all games.

Hi @alexminnaar and @DennisSoemers, looking through the issues tidying things up. AFAIU this is still on the todo list but there are no unresolved outstanding "issues" or things you're waiting on, right? Can we close this for now then?

@lanctot That's some nice timing, it just so happens I've been working a lot on implementing some of the things on the Java side of Ludii that were still missing that were required / convenient for a bridge between the frameworks.
No, on the OpenSpiel side there are no unresolved outstanding issues here, so ar far as I'm concerned you could close this issue. Hopefully within the next few weeks (where "few" is undefined :D), I'll find time somewhere to also set up the C++ code that would be required in my fork of OpenSpiel. When that's done, I'll send a pull request.

Cool! No rush of course, I know how these things go. It's cool to have the community involved.
Someone at our AAAI RL in Games workshop (Jakub Kowalski) mentioned integration with his general framework so I mentioned your ongoing efforts with Ludii. He has a paper titled "Regular Boardgames", thought you might be interested. Can send it to you if you don't find it. I will also point him to this thread.
Also the work @alexminnaar did for this on loading Jave through JNI turned out to be relevant at the workshop too: Simon Lucas told me has has a mini RTS engine in Java that is discrete (turn based, simultaneous moves) and is interested in wrapping it as an OpenSpiel game. Now we can point him to the work you guys started here.
Anyway, looking forward to more collaboration on this and no time pressure. Just want to keep the open issues for outstanding problems that remain unresolved


Butterfly_Game Added

PR Description 📜
#1627

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for website preview in assets/images
[x] I have added entries for my game in main README.md
[x] I have added README.md in my folder
[x] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @Kalivarapubindusree ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Can you please review my PR @kunjgit

Hey @Kalivarapubindusree !!
You need to come up with good UI for now it is quite simple and not that catchy make sure you work on that and come up with good design !!

Thank you  @Kalivarapubindusree , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


Solving failure

Getting this error while compiling :
Solving failure: No versions of github.com/minio/minio-go met constraints:
v6.0.35: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.34: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.33: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.32: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.31: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.30: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.29: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.28: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.27: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.26: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.25: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.24: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.23: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.22: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.21: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.20: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.19: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.18: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.17: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.16: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.15: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.14: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.13: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.12: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.11: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.10: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.9: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.8: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.7: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.6: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.5: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.4: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.3: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v6.0.2: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
6.0.1: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
6.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
5.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.9: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.8: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.7: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.6: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.5: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.4: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.3: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.2: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.1: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
4.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
3.0.3: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v3.0.2: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v3.0.1: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v3.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.1.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.0.4: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.0.3: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.0.2: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.0.1: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v2.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v1.0.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.5: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.4: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.3: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.2: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.1: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.2.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
v0.1.0: Could not introduce<EMAIL_ADDRESS>as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
master: Could not introduce github.com/minio/minio-go@master, as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
log_format_modifications: Could not introduce github.com/minio/minio-go@log_format_modifications, as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
release: Could not introduce github.com/minio/minio-go@release, as its subpackage github.com/minio/minio-go/v6 is missing. (Package is required by (root).)
Any idea ? I'm trying to use the minio-client-sdk, nothing special, I followed the doc.

You have to use go mod versioning @g-balas

@g-balas Closing this issue. Please feel free to reach out to us at https://slack.min.io for further such questions


translate nordic views

Translate views so text like "Base" is converted to "Bas" for Swedish clusters.

Resolved by #400.


it says im accessing the site from an un authorized source when i try to make my own on netlify

yeah plz help

That's the security measures to make sure sites don't skid DuckOS. You can remove the obfuscated code in every JS file and add your netlify domain to one of them.

Okay, thank you!


Add support for BMTUN

Actually...should I keep "remaining" / construct.Peek(construct.GreedyBytes), or remove it? There is nothing in the remaining bytes which is good but dont' know if we keep it there for "safety".

Then replace it with a Terminated.

Then replace it with a Terminated.

done


Curiosity issue

I want to use the plugin on the android however host which is when on android local is <IP_ADDRESS> PusherOptions(
// if local on android use <IP_ADDRESS>
host: '<IP_ADDRESS>',
encrypted: false,
)
should I change it when I publish my android app?

@richard457  Yes you must replace the ip with your server domain or ipAddress


Change Spring Integration module group

The SI module is currently a child of the parent spring-cloud pom. We need to look in a way to make it more consistent with other SI modules and probably let it live on it's own pom.
Here's some things to keep in mind:

Doing this and leaving the module on this repo will cause issues on build process, as it would not be built with mvn commands
We will need a separate BOM to make sure that we are pulling and syncing the right libraries from spring-cloud-gcp

What if we stick with the same maven groupId, but name the module spring-integration-gcp? I understand that it would still require a groupId change when/if it moves out of spring-cloud-gcp, but at this point it doesn't seem likely, and even if it does happen, it wouldn't catastrophic.

That's the plan, @meltsufin , at least in my feeling.
It will catastrophic because changing the group cause changing the Maven coordinates.
So, we should do that as soon as possible do not confuse external world.
At least in my understanding how we go...

I feel quite strongly that all SI modules should have consistent groupid/artifactids.
I don't really understand the issue - we can have a separate build plan for the SI module.
However, the consensus seems to feel differently so I will defer to the majority.

Is now a good time to revisit this? We should start seeing customers soon, hopefully.