Add a component diagram to the RTD architecture documentation

There are two diagrams in the page.
First the repository structure:

Second the decision tree:

Pre-submit checklist:

Branch

[ ] Tests are provided (if possible)
[ ] Commit sequence broadly makes sense and have useful messages
[ ] Important changes are reflected in changelog.d of the affected packages
[ ] Relevant tickets are mentioned in commit messages

PR

[ ] (For external contributions) Corresponding issue exists and is linked in the description
[ ] Targeting main unless this is a cherry-pick backport
[ ] Self-reviewed the diff
[ ] Useful pull request description
[ ] If relevant, reference the ADR in the PR and reference the PR in the ADR
[ ] Reviewer requested

@berewt I can do that as part of this story. However, isn't the diagram pretty self-explanatory? Each box and link has some text describing what the block and the relation is about.

To my eyes it is but:

I don't know whether it's clear enough for external contributors (although, we can add it later).
Even if the intersection of Marconi users and visually impaired people is likely to be empty, it's still good to provide a text alternative.

(again, it's probably not urgent)

@koslambrou which executables are these? Are the diagrams based on a renaming we're going to do?

@koslambrou which executables are these?

@ana-pantilie There is only one executable: it's marconi-chain-index.

Are the diagrams based on a renaming we're going to do?

Yes, these diagrams are based on the renaming we are planning to do.

Also, from the diagrams it seems to me like if you want RPC capabilities then you end up losing the Cardano specific functionality?

Can you elaborate on why that is the case?

@ana-pantilie @berewt As suggested, I added much more text to explain the main diagram.

Can you elaborate on why that is the case?

I guess the idea is that if you want both Cardano and JSON-RPC you use both packages, correct? Maybe this should be made explicit because I got a bit confused by the diagram, I was expecting it to tell me which single solution to use not how to pick a combination of solutions.

@ana-pantilie Ahh, you're referring to the 2nd diagram?

@koslambrou yes


Release Google.Cloud.EssentialContacts.V1 version 1.0.0-beta01

Changes in this release:
Initial release.

(No urgency on this - it's fine to wait until tomorrow.)

Created release for Google.Cloud.EssentialContacts.V1-1.0.0-beta01


[flutter_tools] check in script for generating per library unit coverage

Description
Allows generating a per-library coverage summary like https://gist.github.com/jonahwilliams/f298381c3fb9f472b2dfe54b82a20a88

I don't know why it started failing 🙃


Version 1.16.5 Is updated

I'm glad you solved the ender Dragon problem .
Will 1.16.5 be updated ?

1.16.5 is no longer supported.


⚠ AGEG website (prod) has degraded performance

In 4bcfd41, AGEG website (prod) (https://www.ageg.ca/) experienced degraded performance:

HTTP code: 200
Response time: 1334 ms

Resolved: AGEG website (prod) performance has improved in 6c4d5b2.


ADD test for operator clean up

This is to improve coverage. Please refer to tests that are already written as examples using Ginkgo/Gomega.
Ideally we should cover all functions in operator_cleanup.go

@acmenezes Interested !
If not already someone working on that ?


Where can the source code of the packaged EXEs in the setuptools folder.

Hello lovely pypa-lz,
I'm trying to find the source code for the exes that are bundled into the source code of setuptools. Namely gui-32/64.exe and cli-32/64.exe in the  the \setuptools folder. Can someone please tell me where I can find it?

There's a script in the root for the repo for building those exes. That should refer to the source.

Hi bb-migration, thanks for getting back to me. I'm trouble finding it, did you have a specific script in mind that I could look at?
I did a text search through all the setup-tools source for cli-32.exe, cli-64.exe gui-32.exe etc but the only reference to them I could find was in test_windows_wrapper.py:

There are 2 wrappers, one for command-line programs, cli.exe, and one for graphical programs, gui.exe.  These programs are almost identical, function pretty much the same way, and are generated from the same source file.

It doesn't say where I can find the source though...

That's funny. I responded on my phone, and apparently github thinks my e-mail address is better associated with that account. The file of which I speak is at https://github.com/pypa/setuptools/blob/master/msvc-build-launcher.cmd.

Oh, that's so awesome. Thanks for your help!


Error 500 due to "ReplyToId' cannot be null."

My bot is published on azure, I am having a lot of Internal Server Error (500), in the emulator it doesn't happen, checking the log files I see this:
	GENERAL_RESPONSE_ENTITY_BUFFER
Buffer="{
  "message": "An error has occurred.",
  "exceptionMessage": "'ReplyToId' cannot be null.",
  "exceptionType": "Microsoft.Rest.ValidationException",
  "stackTrace": "   at Microsoft.Bot.Connector.ConversationsExtensions.ReplyToActivityAsync(IConversations operations, Activity activity, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.AlwaysSendDirect_BotToUser.<Microsoft-Bot-Builder-Dialogs-Internals-IBotToUser-PostAsync>d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Extensions.<PostAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.DeleteProfileScorable.<Microsoft-Bot-Builder-Dialogs-Internals-IScorable<System-Double>-PostAsync>d__8`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.CompositeScorable`1.<Microsoft-Bot-Builder-Dialogs-Internals-IScorable<Score>-PostAsync>d__8`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.ScoringDialogTask`1.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__4`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__6`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__6`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.SerializingDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__4`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUserTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at Microsoft.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUserTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Conversation.<SendAsync>d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Microsoft.Bot.Builder.Dialogs.Conversation.<SendAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)\r\n   at TheMemebotV3.MessagesController.<Post>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"

I also found this field: GENERAL_REQUEST_ENTITY
	Buffer="{
  "action": "add",
  "type": "contactRelationUpdate",
  "timestamp": "2016-11-30T16:45:26.231Z",
  "channelId": "skype",
  "serviceUrl": "https://smba.trafficmanager.net/apis",
  "from": {
    "id": "29:10_eLK38T_GWJ1F58vU4y7SM7-U-z28KxqQunpMXiblKNwL1dV04dQ1Qk3tGYgzw2",
    "name": "Finlay"
  },
  "conversation": {
    "id": "29:10_eLK38T_GWJ1F58vU4y7SM7-U-z28KxqQunpMXiblKNwL1dV04dQ1Qk3tGYgzw2"
  },
  "recipient": {
    "id": "28:c0b2fa87-3625-43b2-be12-8eb1675818bb",
    "name": "MemeBot"
  }
}"

Please help me

Some channels (such as Email) maintain threading information (aka, that a message was a reply to a given message).  If you don't provide a ReplyToId, the channel won't be able to properly thread the message.  Skype shouldn't reject your message because of the lack of this id, but you SHOULD be setting the id so that your bot will work correctly on channels which need that info.
When you do a activity.CreateReply()  it is automatically setting that property based on the original message you are replying to.
If you look at that helper method you can see that all it is doing is pulling data from the source activity and putting it on the new one:
public Activity CreateReply(string text = null, string locale = null)
{
Activity reply = new Activity();
reply.Type = ActivityTypes.Message;
reply.Timestamp = DateTime.UtcNow;
reply.From = new ChannelAccount(id: this.Recipient.Id, name: this.Recipient.Name);
reply.Recipient = new ChannelAccount(id: this.From.Id, name: this.From.Name);
reply.ReplyToId = this.Id;
reply.ServiceUrl = this.ServiceUrl;
reply.ChannelId = this.ChannelId;
reply.Conversation = new ConversationAccount(isGroup: this.Conversation.IsGroup, id: this.Conversation.Id, name: this.Conversation.Name);
reply.Text = text ?? String.Empty;
reply.Locale = locale ?? this.Locale;
return reply;
}
Just set the ReplyToId and you should be good.

Like this?
 var reply = activity.CreateReply();
 reply.Text = TextosPredefinidos.ObtenerSaludo + ", please say 'Hi' to start creating memes";
if (activity.Id != null)
           {
               if (reply.ReplyToId == null)
               {
                   reply.ReplyToId = activity.Id;
               }
               await connector.Conversations.ReplyToActivityAsync(reply);
           }

It doesn't seems to work

And it is failing in skype, by the way

@tomlm How can I go to definition of the method. I am using visual studio and i installed Resharper. Even Resharper can't go to definition of CreateReply() method. Any help?

Hi mahmoudahmedarafa,
Visual Studio provides the Object Browser, with which you should be able to navigate the library.  Also, Bot Builder is open source.  The CreateReply() method can be seen at line 40 here: https://github.com/Microsoft/BotBuilder/blob/3c912ec90ad08a63e7ffd2256998db3521b028aa/CSharp/Library/Microsoft.Bot.Connector.Shared/ActivityEx.cs

Please note: the Microsoft Bot Framework team prefers that how to questions be submitted on Stack Overflow. The official Bot Framework Github repo  is the preferred platform for submitting bug fixes and feature requests.

Please feel free to resubmit your question over on Stack Overflow and one of our support engineers will help you out as soon as possible.


ng: fatal error: concurrent map read and map write

running the eval tests, I got (a couple of times):
fatal error: concurrent map read and map write

goroutine 186 [running]:
runtime.throw(0x991dc9, 0x21)
	/usr/lib/go/src/runtime/panic.go:605 +0x95 fp=0xc420cfdb20 sp=0xc420cfdb00 pc=0x5b4615
runtime.mapaccess1(0x923200, 0xc42028d6b0, 0xc420cfe368, 0x904460)
	/usr/lib/go/src/runtime/hashmap.go:355 +0x238 fp=0xc420cfdb68 sp=0xc420cfdb20 pc=0x591068
neugram.io/ng/eval.(*Program).evalExpr(0xc4202f01b0, 0xdb9c00, 0xc4201be960, 0x0, 0x0, 0x0)
	/home/binet/work/gonum/src/neugram.io/ng/eval/eval.go:1135 +0x2bd9 fp=0xc420cfe428 sp=0xc420cfdb68 pc=0x8b1da9
neugram.io/ng/eval.(*Program).evalStmt(0xc4202f01b0, 0xdba0c0, 0xc420498100, 0x0, 0x0, 0x0)
	/home/binet/work/gonum/src/neugram.io/ng/eval/eval.go:474 +0x1322 fp=0xc420cfeee0 sp=0xc420cfe428 pc=0x8a88c2
neugram.io/ng/eval.(*Program).evalStmt(0xc4202f01b0, 0xdba140, 0xc420333420, 0x0, 0x0, 0x0)
	/home/binet/work/gonum/src/neugram.io/ng/eval/eval.go:538 +0x8fe fp=0xc420cff998 sp=0xc420cfeee0 pc=0x8a7e9e
neugram.io/ng/eval.(*Program).evalFuncLiteral.func1(0xc4202841e0, 0x1, 0x1, 0x0, 0x0, 0x0)
	/home/binet/work/gonum/src/neugram.io/ng/eval/eval.go:1452 +0x473 fp=0xc420cffa68 sp=0xc420cff998 pc=0x8c5cb3
reflect.callReflect(0xc420284140, 0xc420cffc28)
	/usr/lib/go/src/reflect/value.go:514 +0x38b fp=0xc420cffc08 sp=0xc420cffa68 pc=0x65445b
reflect.makeFuncStub(0x3, 0x904460, 0xc4202a2040, 0xc4202a2018, 0xc420cfff20, 0x6535d5, 0xc4205a23c0, 0xc420284140, 0xc4202a2040, 0x800000008, ...)
	/usr/lib/go/src/reflect/asm_amd64.s:17 +0x33 fp=0xc420cffc28 sp=0xc420cffc08 pc=0x65dea3
runtime.call32(0xc4205a23c0, 0xc420284140, 0xc4202a2040, 0x800000008)
	/usr/lib/go/src/runtime/asm_amd64.s:509 +0x3b fp=0xc420cffc58 sp=0xc420cffc28 pc=0x5e3c7b
reflect.Value.call(0x903ba0, 0xc420284140, 0x13, 0x98568d, 0x4, 0xc420284180, 0x1, 0x1, 0x0, 0x0, ...)
	/usr/lib/go/src/reflect/value.go:434 +0x905 fp=0xc420cfff30 sp=0xc420cffc58 pc=0x6535d5
reflect.Value.Call(0x903ba0, 0xc420284140, 0x13, 0xc420284180, 0x1, 0x1, 0x8f4180, 0xc4203ed960, 0x642c33)
	/usr/lib/go/src/reflect/value.go:302 +0xa4 fp=0xc420cfff98 sp=0xc420cfff30 pc=0x652bb4
runtime.goexit()
	/usr/lib/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420cfffa0 sp=0xc420cfff98 pc=0x5e64e1
created by neugram.io/ng/eval.(*Program).evalStmt
	/home/binet/work/gonum/src/neugram.io/ng/eval/eval.go:597 +0x4066

this actually reminded of a question I had: what is the concurrency model of ng?
shouldn't we have some t Thread or g Goroutine argument to the p *Program methods ?

I managed to reproduce this with -race. (Though the race detector also has interesting problems with plugins that I'll have to deal with.)
The model is that each instance of *Program is single-threaded, and there are many of them. See evalFuncLiteral, which creates a new Program for a function, copying out the free variables into a new scope. This should protect the map in eval Scopes from race conditions. (Though I see I left a TODO for the scopes in the type checker.)
I think the error may be some kind of inadvertent reflect.Value reuse. I'll dig into it.

Another race down: fbb30ce, at least one more to go.

OK, I've got the last race I can find with the race detector. If you still see this in the future, please let me know.


Goutte\Client::setClient() does not exist

Having the following requirements in require-dev in composer.json:
        "atoum/atoum": "^4.0", (4.0.3)
        "behat/behat": "^3.8", (v3.10.0)
        "behat/mink-browserkit-driver": "^2.0", (v2.0.0)
        "behat/mink-goutte-driver": "^2.0", (v2.0.0)
        "behat/mink-selenium2-driver": "^1.5", (v1.5.0)

Running php vendor/bin/behat instantly crashes on:
In GoutteFactory.php line 117:

  Method Goutte\Client::setClient() does not exist

Function causing the Exception https://github.com/Behat/MinkExtension/blob/ba8ba8bde58b168f409c7c1e8e4b906c12856124/src/Behat/MinkExtension/ServiceContainer/Driver/GoutteFactory.php#L117
Function:
    private function isGoutte1()
    {
        $refl = new \ReflectionParameter(array('Goutte\Client', 'setClient'), 0);

        $type = $refl->getType();
        if ($type instanceof \ReflectionNamedType && 'Guzzle\Http\ClientInterface' === $type->getName()) {
            return true;
        }

        return false;
    }

Now, Goutte\Client is an empty class which extends Symfony\Component\BrowserKit\HttpBrowser which in turn extends Symfony\Component\BrowserKit\AbstractBrowser.
Neither of the parent classes indeed have the function setClient.
What can I do to work around this for now or create a fix?

Same here, any chance to merge the #381 ?

the #381 is for some months ago, is there any chance merge or not? I need it.

Looking at this: https://github.com/Behat/MinkExtension/issues?q=is%3Aissue+sort%3Aupdated-desc I'm thinking this repository is quite dead.
Also judging by the non-response on this issue from 2020: https://github.com/Behat/MinkExtension/issues/370
Haven't tried it out yet (maybe some week soon), but I think it's worth switching to: https://github.com/FriendsOfBehat/MinkExtension

Replacing behat/mink-extension with friends-of-behat/mink-extension resolved issue for me.
This project seems abandoned.


Misspelled atom species string not caught

Example:
julia> Species("#x#3He")
Species("He", 0, 2.8104355262211704e9, 9.87317935205805e-16, 0.0, 3)

Also not caught:
julia> Species("electron", 2)
Species("electron", -1,<PHONE_NUMBER>9, 3.2910597840193497e-16, -9.2847646917e-24, 0)

There should be regression tests for this.

Fixed in the constructor; I'll work on building tests soon, but there will be a learning curve and I can't foresee how to exhaustively get everything without a big slowdown.

Currently there is an error generated but it is not a helpful error:
julia> Species("xxx")
ERROR: type Nothing has no field match

@rot4te I don't believe that speed is much of an issue here since generally species instances will inherit from another species instance rather than being instantiated from scratch.

Still not caught:
julia> t = Species("He+asdf")
Species("He", 1 e, 3728.911098253887 MeV c⁻², 2.5 h_bar, 0.0 J T⁻¹, -1.0, AtomicAndPhysicalConstants.Kind.ATOM)


Sending Status action with multiple variables only shows one Variable value.

The Asterisk Status command allows you to send multiple requests for channel variables, separated by commas.  So something like this sent to the AMI console:
Action: Status
ActionID: 2
Variables: CDR(ds_type),from_user,companyID

Returning something like this:
Event: Status
 (irrelevant details removed)
Variable: CDR(ds_type)=Test-INT
Variable: from_user=ssether
Variable: companyID=Test
ActionID: 2

When I use RubyAMI to do this, I only get  only one of the Variables in the repsonse
      def status(variables="")
        headers = { 'Variables' => variables }
        return @ami.send_action('status', headers)
      end

response = status('CDR(ds_type),from_user,companyID')
puts response.events[0].headers

returns a map, but with only one value in the map for Variable:
{ (irrelevant details removed)
"CallerIDNum"=>"123", "CallerIDName"=>"Steve Sether", "ConnectedLineNum"=>"124", "Variable"=>"companyID=Test", "ActionID"=>"898b7636-3d99-40d3-aaa2-bd955fa920c1"}

I'd expect the Variable key to itself contain a map with key/values. Instead it returns just a single String  value "companyID=Test". I expect when this was designed, multiple headers with the same key weren't taken into account.
I did try briefly to fix this myself, but quickly realized the lexer took more effort in understanding that I wanted to try to understand in an hour or two.
Is there some way to get this to work properly (i.e. I'm using the send_action command or the resultant response incorrectly), or is this a bug?

You are correct that multiple headers with the same name are not currently supported. Someone will need to contribute that support.


Sync with delete option

Hello!
I found out that this utility cannot delete files in the destination directory during synchronization.
Will this feature be implemented?
I work in a large project, which is a client of Sbercloud, which is built on the basis of Huaweicloud.
We want to use this utility to periodically synchronize our buckets.

I am not quite sure about your purpose;
If you want to delete the uploaded files, you can use the "arcDir" parameter to archive  the synchronously uploaded files  to the specified path, and then you can delete the archive path by yourself;
If you mean that you want to delete the objects in the bucket which has been downloaded, I'm afraid we do not support this operation now; Because deleting user objects in the bucket is a high-risk operation, we will be cautious about feature that need to delete user objects ;

@x00403408
Hello!
What I mean is creating a complete mirror of one bucket to another with the deletion of unnecessary files in the destination bucket.
For example, the s3сmd utility is able to do this: https://s3tools.org/s3cmd-sync (see —delete-removed option).

I got it；Considering the risks associated with deleting object, I am afraid we may not provice similar method in a short time; sorry for that


feat: Introduce Workspace Support for Multi-Tenant and Environment Separation

Overview
This PR introduces the concept of workspaces in Trench, enabling the separation of data across different environments and tenants within a single Trench cluster. By incorporating workspaces, we can logically partition data, allowing for better multi-tenancy support and isolated environments, which is essential for organizations managing multiple projects or clients in a single analytics setup.
Why did I build this?
Workspaces provide the following benefits:

Data Segregation: Each workspace represents a unique scope, making it easy to keep data separate for different clients, environments, or projects.
Environment Isolation: By creating separate workspaces for staging, testing, and production environments, organizations can ensure that data flows only where intended, avoiding accidental cross-environment contamination.
Simplified Access Control: Workspaces make it possible to manage API keys and permissions at a workspace level, allowing tighter control over who can access data within each workspace.

These additions empower users to safely consolidate data collection within a single Trench instance while maintaining clear boundaries between tenants and environments.
Implementation details

Added a workspace_id column to the events table for associating each event with a specific workspace.
Created a workspaces table for managing workspace metadata and permissions.
Introduced an api_keys table to store public and private API keys, which are now associated with specific workspaces.

Backwards compatibility

Fully backward compatible with existing Trench server versions
API keys will automatically be bootstrapped from the .env file
Default workspace ID will be added to all events

Testing Done

Unit Tests: Added unit tests on critical code paths
Integration Tests: Verified existing e2e tests passed
Manual Testing: Performed manual tests on:

Creating new workspaces and verifying their isolation from other workspaces.
Generating and validating API keys unique to each workspace.
Running queries to ensure data retrieval is restricted to the specified workspace context.

These tests confirm that workspace support operates as intended and maintains data separation and integrity across various use cases.
Reviews requested
We open this PR for anyone to review the code, comment on the implementation, and to give general feedback on this feature.

Added a workspace_id column to the events table for associating each event with a specific workspace.

Will events from all workspaces be sent to the same events table in ClickHouse?
In the case of development, staging and production workspaces it would be nice to have separate schemas in ClickHouse. Otherwise all queries would need to filter on workspace_id.

Added a workspace_id column to the events table for associating each event with a specific workspace.

Will events from all workspaces be sent to the same events table in ClickHouse? In the case of development, staging and production workspaces it would be nice to have separate schemas in ClickHouse. Otherwise all queries would need to filter on workspace_id.

@esadek correct -- we solve this in the /queries endpoint by appending all queries with the workspace_id (source) based on the current API key. May be a bit funky, but all my unit tests seem to pass. So to the end-user, the concept of workspaces is automatically abstracted away.
That being said, in the case where you want separate Trench instances without worrying about data from different workspaces getting intermingled, I recommend just spinning up separate Docker images per environment and just using the default workspace created in each one.
What do you think?

@esadek correct -- we solve this in the /queries endpoint by appending all queries with the workspace_id (source) based on the current API key. May be a bit funky, but all my unit tests seem to pass. So to the end-user, the concept of workspaces is automatically abstracted away.
That being said, in the case where you want separate Trench instances without worrying about data from different workspaces getting intermingled, I recommend just spinning up separate Docker images per environment and just using the default workspace created in each one.
What do you think?

@christianmat I think it would be nice to support separate databases or schemas for each workspace, instead of needing a different Trench/ClickHouse instance for each environment to separate data. Development and staging should be very low volume compared to production so having completely separate Trench instances feels a bit excessive. I've seen a lot of companies separate dev, staging and prod data by database or schema in Snowflake, Redshift and BigQuery.
With data from all workspaces syncing to the same events table, anyone querying the data directly from ClickHouse would need to understand what workspace_id is, which workspace_id they need, and make sure they are filtering for the correct workspace in their queries. This is not a problem if you have a "production" database or schema.

@esadek I see what you're saying. I don't like the idea of hardcoding specific environments as it's less flexible. But maybe a good solution would be to create a database for each workspace automatically. I am gonna do some research to see if this is feasible. That way we get the flexibility of having as many environments/workspaces as needed without introducing new concepts (e.g. having workspace_id in all queries). Does that make sense?

@esadek I see what you're saying. I don't like the idea of hardcoding specific environments as it's less flexible. But maybe a good solution would be to create a database for each workspace automatically. I am gonna do some research to see if this is feasible. That way we get the flexibility of having as many environments/workspaces as needed without introducing new concepts (e.g. having workspace_id in all queries). Does that make sense?

@christianmat Yes, automatically creating a database for each workspace would be great.

@esadek can I get your 👀 on this? It's now updated to automatically create a ClickHouse database and kafka topic per workspace.

@christianmat Is there documentation for the /workspace endpoint?

@christianmat Is there documentation for the /workspace endpoint?

@esadek Yes, I've added swagger spec for it. I will create an official documentation page once the feature has been battle tested a bit.


Implement protobuf transformer

Implements transformer from the scanned packages representation to the protobuf representation.
Also it changes the scanner API so it accepts packages instead of paths to packages.

Done @ajnavarro


Edit events

[x] Update event on drop
[ ] Update event on click

Update event on click will be not implemented.


Bot leaves when voice channel is empty even if leaveOnEmpty and leaveOnStop is set to false.

Please describe your problem in as much detail as possible:
Ok so i made a 24/7 mode system. So for that i have set the default leaveOnEmpty , leaveOnStop, leaveOnFinish to true and also in initQueue event i did the same. But the problem is even if i modify it using my 24/7 cmd which actually works as after using the command i do eval and check whether everything is set to false and yeah the eval return false for all but still my bot leaves after the channel is empty. Also it doesn't happen in queue finish and queue stop. So I don't think my command has any errors. I guess the leaveOnEmpty is taken from what i set for default not from what i modified. I hope it would be fixed as that's the only problem that i am facing. Thanks in advance.
Further information:

DisTube version:latest beta version
discord.js version:13.1.0
Node.js version:16.6.0
Operating system:linux

If not then atleast say us how to change it to local option so we would customize it to local option for ourselves


Rework on the notebooks

Description

Rework the notebooks to make them more descriptive.
Added sections, explanations, and comments.
Also, merged cells when possible to keep it coherent.
Related Issues

Checklist

[ ] Is this code covered by new or existing unit tests or integration tests?
[ ] Did you run make test successfully?
[ ] Do new classes, functions, methods and parameters all have docstrings?
[ ] Were existing docstrings updated, if necessary?
[ ] Was external documentation updated, if necessary?

Additional Notes or Comments

Codecov Report
Attention: 41 lines in your changes are missing coverage. Please review.

Comparison is base (cbe6b32) 78.22% compared to head (7f8055e) 80.30%.
Report is 181 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1234      +/-   ##
==========================================
+ Coverage   78.22%   80.30%   +2.08%
==========================================
  Files         101       95       -6
  Lines        6351     6601     +250
==========================================
+ Hits         4968     5301     +333
+ Misses       1383     1300      -83

Files
Coverage Δ

superduperdb/__init__.py
100.00% <100.00%> (ø)

superduperdb/__main__.py
71.42% <100.00%> (ø)

superduperdb/backends/base/backends.py
100.00% <100.00%> (ø)

superduperdb/backends/base/query.py
81.34% <ø> (ø)

superduperdb/backends/filesystem/artifacts.py
80.00% <ø> (ø)

superduperdb/backends/ibis/cursor.py
91.66% <ø> (ø)

superduperdb/backends/ibis/data_backend.py
72.72% <ø> (ø)

superduperdb/backends/ibis/field_types.py
100.00% <ø> (ø)

superduperdb/backends/ibis/query.py
82.15% <ø> (ø)

superduperdb/backends/mongodb/__init__.py
100.00% <ø> (ø)

... and 12 more

... and 99 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[firebase_messaging] APNS token has not been set yet. Please ensure the APNS token is available by calling getAPNSToken()

Is there an existing issue for this?

[X] I have searched the existing issues.

Which plugins are affected?
No response
Which platforms are affected?
No response
Description
SORRY FOR MY BAD ENGLISH
I have the same issue: #12244
Because this topic is closed, I re-open this issue.
When I add delayed code before .getToken() method, it's work:
await Future.delayed(const Duration(seconds: 1));
final fcmToken = await FirebaseMessaging.instance.getToken(); // Has token

but no  delayed code is not work:
final fcmToken = await FirebaseMessaging.instance.getToken(); // Return null

What exactly solution?
Reproducing the issue

Open app first time.
Call getToken() method -> Return null
Close app -> Reopen app -> Return token.

Firebase Core version
2.10.0
Flutter Version
3.22.2
Relevant Log Output
No response
Flutter dependencies

Expand Flutter dependencies snippet

Replace this line with the contents of your `flutter pub deps -- --style=compact`.

Additional context and comments
No response

Hi @phamquoctrongnta , you'll have to await the token like so
final fcmToken = await FirebaseMessaging.instance.getToken();

When I update to latest version:
  firebase_core: ^3.4.0
  firebase_messaging: ^15.1.0

this issue still occurs.

I'm unable to reproduce this issue. Please share a full sample code reproducing this issue. Are you experiencing this on iOS or Android?

@SelaseKay
Only iOS.
Try build in release mode please, not error in debug mode.

Is there any good way to deal with it?
And when running on iOS 18.1, it cannot be obtained, no matter how much delay is added.

@phamquoctrongnta it is due to changes in iOS SDK after v10.4.0. See documentation.
You will have to first wait for APNs token on iOS and then try to get FCM token
e.g.
Future<String?> getFCMToken() async {
  if (Platform.isIOS) {
    final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
    if (apnsToken == null) return null;
  }

  final deviceFCMToken = await FirebaseMessaging.instance.getToken();
  return deviceFCMToken;
}

@OutdatedGuy
Thanks for your support.
Look like it's good answer.
I will check it.

Still getting the error...
I tried the solution from @OutdatedGuy , but didn't work for me.
I'm using xcode v16
firebase_core: ^3.3.0
firebase_messaging: ^15.0.4

@EliseiNicolae
I do not test @OutdatedGuy  's solution yet.
If you have tested within an error, I will be reopen this issue.

I fixed my issue by adding:
    FirebaseMessaging messaging = FirebaseMessaging.instance;
    await messaging.requestPermission(
      alert: true,
      announcement: true,
      badge: true,
      carPlay: false,
      criticalAlert: true,
      provisional: true,
      sound: true,
    );

As mentioned in this thread, you will need to wait for the APNS token to become available and it is necessary to request permission of the user.

As mentioned in this thread, you will need to wait for the APNS token to become available and it is necessary to request permission of the user.

@russellwheatley could you please provide a clear way of how to do that?
I encounter the problem in 165 cases in the last 90 days (crashlytics), but I am not able to reproduce it on my physical iOS device. So I can't just start guessing solutions and throwing them out to production to see if they might work...
Is this a valid approach? According to people's feedback, this also doesn't solve it.

Future<String?> getFCMToken() async {
  if (Platform.isIOS) {
    final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
    if (apnsToken == null) return null;
  }

  final deviceFCMToken = await FirebaseMessaging.instance.getToken();
  return deviceFCMToken;
}

Seems that all issues regarding this topic just get closed, without providing any clear way of solving it.


Rename Opened Traces widget and commands

With the latest changes, the 'Opened Traces' widget in the Trace Viewer view will show the list of every trace that has ever been opened in the trace server (using 'Open With > Trace Viewer' menu in Explorer or 'Open Trace' dialog in Trace Viewer) and that has not been deleted. When a trace tab is closed, the trace remains opened in the trace-server and still appears in the 'Opened Traces' widget. But after a trace-server restart, the trace may be closed in the trace-server and it will still appear in the client.
Furthermore, each trace in the 'Opened Traces' widget has a context menu with three commands:

Open Trace
Close Trace
Delete Trace

The Open Trace command opens the trace tab and if necessary, opens the trace in the trace-server
The Close Trace command closes the trace tab but has no effect on the trace-server
The Delete Trace command removes the trace from the trace-server workspace (links, supplementary files) but does not delete the actual trace files.
This issue is to consider whether the widget title 'Opened Traces' and the three command names are still appropriate and have an intuitive meaning for the users.

This is somewhat tangential, but why not just have "Remove Trace / Delete Trace" in the context menu?

"Close Trace" (Hide Trace) is covered by closing the open tab (arguably this could be included in context menu to avoid searching for the tab to close).
"Open Trace" (View Trace) is covered by clicking on the trace on the list.

Widget name thoughts

"Traces" : My favourite. Simple and the ambiguity allows for flexibility without lying to the user (ex. Traces that aren't being viewed could be faded but still in the list).
"Opened traces" : The traces in the list aren't necessarily opened.
"Available traces" : There could be available traces that aren't on this list.
"Recently opened" : Not necessarily. Just previously opened.

An option we can consider when renaming is white lying to the user. Well, misrepresenting reality in a way that makes their life less confusing, but isn't technically accurate. Ex. Using the same label for two different operations that feel similar for the user, but actually have different implementations (like label overloading instead of function overloading)

PatrickTasse: 'Opened Traces' widget in the Trace Viewer view will show the list of every trace that has ever been opened in the trace server and that has not been deleted.

Listing all previously opened traces makes me nervous, but I'm not sure why. Could someone point me to where the rationale behind this decision was explained?

Should there at least be an expiry on how long the traces sit there if they're not explicitly deleted?

This is somewhat tangential, but why not just have "Remove Trace / Delete Trace" in the context menu?

"Close Trace" (Hide Trace) is covered by closing the open tab (arguably this could be included in context menu to avoid searching for the tab to close).
"Open Trace" (View Trace) is covered by clicking on the trace on the list.

@ebugden  Usually, all the actions that you want to do on a file are available in the context menu. That is the reason why I have added these as part of context menu. Is there a specific reason why we do not want to have them in the context menu?

PR #541 uses the language "Remove Trace" for the action of deleting a trace group from the trace viewer and from the trace server (without deleting the actual trace files). The current widget labels this same action as "Delete Trace". The label in this widget should be consistent with the tooltip and the confirmation message in #541.
Current widget (Delete):

PR #541 (Remove):


[bug] Broken routing in monolithic-layered app

steps:
cd .\monolithic\monolithic-layered\
mvn spring-boot:run

Demo
https://github.com/aabarmin/epam-microservices-training-2022/assets/3858548/7e4e3989-e153-4468-a234-a4824dfcde40

broken link from Delivery Page to Edit Delivery Page
https://github.com/aabarmin/epam-microservices-training-2022/assets/3858548/c5816258-4aab-4c50-b5d1-cb9229a9df30
this bug looks similar, so I didn't create a new ticket. anyone who will work on this, please fix all such problems in monolithic-layered app in the scope of #7.

Hello, you can assign this to me. Thanks

Hi @Bogdan-Florian, please go ahead with this issue.

Fixed in #36


Delete unsafe methods from config

The unsafe method option in config.toml file should be set to false

Fixed.


⚠ Halloluise has degraded performance

In bcde508, Halloluise (https://halloluise.de) experienced degraded performance:

HTTP code: 200
Response time: 2961 ms

Resolved: Halloluise performance has improved in 82004d0.


Publish a blog post for announcing the Championship of BotBay from Wechaty X PaddlePaddle AI Chatbot Competition

This blog post will be very valuable for both the Wechaty community and the Botbay project.
I'd like to suggest that we should make it published as soon as possible.
Thank you very much.


Checkstyle to check roaring bitmap code

Current code is mostly hand formatted. This makes it hard to submit PR for people like me who are addicted to java IDEs.
I dont have any preference to a particular format, I will go ahead and propose using the style sheet from this project.
https://github.com/google/styleguide
Here is the description for java. http://google.github.io/styleguide/javaguide.html. They also have style xml for IDEA and Eclipse.

Sounds reasonable.
@owenkaser @omirandette  @gssiyankai @gpunti  Any opinions on this issue? We would effectively be enforcing a format from this point forward.

As the community is growing, defining a code style is definitely the way to go.
+1 for Google Java Style

Yes, it sounds reasonable. +1 for any particular Java style.

@kishoreg  Looks like your proposal is supported.
In time, you could issue a PR with the new style. Ideally with at least some minimal documentation.
I think it is possible to enforce style checking as part of the build using maven-checkstyle-plugin. That would be very handy because if we have to rely on people actually applying the style... it may not get done.

I agree 100%.
I'm good with google java style.
On Fri, Feb 19, 2016 at 2:49 PM, Daniel Lemire<EMAIL_ADDRESS>wrote:

@kishoreg https://github.com/kishoreg Looks like your proposal is
supported.
In time, you could issue a PR with the new style. Ideally with at least
some minimal documentation.
I think it is possible to enforce style checking as part of the build
using maven-checkstyle-plugin. That would be very handy because if we
have to rely on people actually applying the style... it may not get done.
—
Reply to this email directly or view it on GitHub
https://github.com/RoaringBitmap/RoaringBitmap/issues/83#issuecomment-186375156
.

+1 @omirandette

@kishoreg
Do you want to propose a pull request whereas we could enforce styles and/or reformat the code? We need to assign this to someone. Will you take it on?

Hi Daniel,
I will do this over the weekend.
On Thu, Feb 25, 2016 at 10:40 AM, Daniel Lemire<EMAIL_ADDRESS>wrote:

@kishoreg https://github.com/kishoreg
Do you want to propose a pull request whereas we could enforce styles
and/or reformat the code? We need to assign this to someone. Will you take
it on?
—
Reply to this email directly or view it on GitHub
https://github.com/RoaringBitmap/RoaringBitmap/issues/83#issuecomment-188922867
.

@kishoreg Excellent.

I have just added checkstyle.
Whenever you run tests (or mvn checkstyle:check), it should check style compliance.
I think that Google's style is a bit too much... it triggered hundreds of silly violations. What we enforce is pretty close.
Note that testing code is not check for style...
Anyhow. It looks like it is a resolved issue.

If you had uncommitted changes to master... you might suffer a bit since I had to reformat pretty much all the code. But it is one-time thing.


Fixed web design, address error and button text

This is a remake for PR #680

All changes regarding #679 go in separate PR.


fix(server): correct mount path for the health endpoint (#679)

Fixes #679

:+1:

👍

Codecov Report

Merging #680 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #680   +/-   ##
=========================================
  Coverage     83.42%   83.42%
  Complexity      839      839
=========================================
  Files           153      153
  Lines          2245     2245
  Branches        320      320
=========================================
  Hits           1873     1873
  Misses          229      229
  Partials        143      143

Continue to review full report at Codecov.

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

@netme Everything works now! Great Job on upgrading to Spring Boot 2.0!


spdx compatible license

make license tag spdx compatible

This project is no longer maintained. I recommend you check out golja/influxdb for an updated Puppet module for InfluxDB.


Remove references to nascent AMQP API

This is not true. It will be soon. But right now it is confusing.
Signed-off-by: Ben Firshman<EMAIL_ADDRESS>

No fun allowed 😂

(I appreciate you making this searchable though, haha.)

hah yeah I was confused when talking to Andreas about this. Readme-Driven-Development makes a comeback


EGD, Language Tags

@danbalogh  There is a typo in the table under EGD Appendix D "Language Tags". The language code for Dutch is nld, not ndl. I amended XML files accordingly.

Thanks for spotting this, now corrected online; I'll update the offline master along with other edits later on. You can also just post a comment in the google doc itself if you find other errors.


the code in OnStopping() & OnStopped() cannot be executed in LifetimeEventsHostedService

in .NET Generic Host ,the code of class LifetimeEventsHostedService in OnStopping() & OnStopped() cannot be executed  when i publish to docker run as  an container,any idea?

i debug the code OnStopping() & OnStopped() on windows, it's work fine(press ctrl+c finish the process and the code be excuted). but in docker,the code can't be excuted when i use the command docker stop container

Moved to https://github.com/aspnet/AspNetCore.Docs/issues/13446.


[Bug][config-ui] board transfomation match wrong when edit jira blueprint

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
When I delete a board or adjust the order of the boards, the transformation of the second page will not match. For example, the original requirement of board1 is tagA, and the requirement of board2 is tagB. After 1 is deleted, board2 becomes tagA
What you expected to happen
After 1 is deleted, board2 keep tagB
How to reproduce

Anything else
No response
Version
main
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

@likyh This was already resolved with #3275

@likyh This was already resolved with #3275

No, I test on latest main. Please do a test yourself.


Feature Importance

Feature
Support feature importance in tabular data scenarios.

Understand which features are beneficial for prediction and help to develop new features
Feature selection, removing features that are not helpful in prediction

Ideas

GBDTs naturally have APIs for calculating feature importance, it's easy to add.
NNs

Permutation. After shuffling a certain feature, observe the changes in metric. The greater the change, the more important the feature is. Simple.
SHAP. Complex.

Mutual Information Sort is already added here.
For feature sorting in NNs, I recommend you take a look at the ExcelFormer example.
If you are interested in adding any feature related functionalities, you can add it in the transform module.

Thanks. As you mentioned, mutual information sorting and ExcelFormer improve performance through transformation capabilities. However, I want to discuss how much different features contribute to the final prediction result. For example, user behavioral features are important in recommender systems, so their feature importance should be high. pytorch-frame is good to use. It allows me to quickly obtain benchmark results on real-world datasets to determine whether NNs or GBDTs are better. I'm unsure if the functionality to evaluate feature importance is worth integrating as a module into pytorch-frame.

I think you can use Captum https://captum.ai/
cc @weihua916 we can also integrate this in PyT?

Yes, Captum implemented many interpretability methods, Feature Permutation and SHAP are part of them.

Is there any update or roadmap related to it? 👀


ERROR: Unable to download JSON metadata: HTTP Error 500: Internal Server Error (caused by HTTP Error())

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2017.06.23. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2017.06.23

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
C:\Users\PC>"C:\Users\PC\Desktop\youtube-dl.exe" --all-subs --skip-download http://www.atresplayer.com/television/series/refugiados/temporada-1/capitulo-1-captulo_2015050700327.html
[AtresPlayer] capitulo-1-captulo: Downloading webpage
[AtresPlayer] 20150507-EPISODE-01001-false: Downloading player JSON
[AtresPlayer] capitulo-1-captulo: Downloading timestamp
[AtresPlayer] capitulo-1-captulo: Downloading windows video JSON
ERROR: Unable to download JSON metadata: HTTP Error 500: Internal Server Error (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):

Single video: http://www.atresplayer.com/television/series/refugiados/temporada-1/capitulo-1-captulo_2015050700327.html

Note that youtube-dl does not support sites dedicated to copyright infringement. In order for site support request to be accepted all provided example URLs should not violate any copyrights.

Description of your issue, suggested solution and other information
Hi there. I use Youtube-DL for a few days now, and I wanted to try it on Atresplayer. I can watch shows on that website and I wanted to download them with subtitles (they're available). But it just doesn't work. I don't know If i'm doing something wrong... so please, help me? I tried it in two ways : downloading only subtitles, and downloading only an episode. But it still doesn't work.
Regards

You did not provide account credentials to youtube-dl.

Thank you for that quick reply. But... how am I supposed to do this, please?

Read FAQ.


[Workers] Missing compat dates

closes #10586.

This continues the work started in #9235 (the http_headers_getsetcookie was already documented)
Am I telling lies on the Bot Management flag?
Do we also need docs around the experimental flags that aren't yet documented + aren't mentioned as being WIP / not available / deprecated?

service_binding_extra_handler
rtti_api
webgpu

cc: @jasnell / @irvinebroque / @GregBrimble

Gotcha, based on the repo history, looks like @jasnell is the person for the Bot Management one.


Added language selector

:tada: This PR is included in version 1.5.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


C# Unit Test Project: Set PublishTrimmed =false even in Release mode.

The unit tests do not work with PublishTrimmed=true. So building the unit test project in Release configuration will result in the tests no working.
The fix is to set PublishTrimmed=false unconditionally instead of basing it on the Configuration.

/azp run

thanks!


automatic release created for v1.0.0-beta.29

[Added] #2238 Show estimaded fees @fedekunze
[Changed] Circleci config deployment job to deploy lunie.io and beta.lunie.io
[Changed] renamed to Lunie @faboweb

The Pending was not updated when doing manual release


where is the code

I got the book.But, where is the code?

Hi, code for the book is available on Wrox website:
http://www.wrox.com/WileyCDA/WroxTitle/Front-end-Development-with-ASP-NET-Core-Angular-and-Bootstrap.productCd-1119181313,descCd-DOWNLOAD.html
The complete sample for the last chapter is not available yet


Deprecated declarations

When installing the lz4 0.5.0, I get the following warnings:
><EMAIL_ADDRESS>install /Users/username/domains/myprofile/log-encoder/node_modules/lz4
> node-gyp rebuild

  CXX(target) Release/obj.target/lz4/lib/binding/lz4_binding.o
../lib/binding/lz4_binding.cc:205:13: warning: 'LZ4_create' is deprecated: use LZ4_createStream() instead [-Wdeprecated-declarations]
  void* p = LZ4_create( Buffer::Data(input) );
            ^
../lib/binding/../../deps/lz4/lib/lz4.h:348:56: note: 'LZ4_create' has been explicitly marked deprecated here
LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer);
                                                       ^
../lib/binding/lz4_binding.cc:211:62: warning: 'LZ4_sizeofStreamState' is deprecated: use LZ4_createStream() instead [-Wdeprecated-declarations]
  Nan::MaybeLocal<Object> handle = Nan::NewBuffer((char *)p, LZ4_sizeofStreamState(), null_cb, NULL);
                                                             ^
../lib/binding/../../deps/lz4/lib/lz4.h:349:56: note: 'LZ4_sizeofStreamState' has been explicitly marked deprecated here
LZ4_DEPRECATED("use LZ4_createStream() instead") int   LZ4_sizeofStreamState(void);
                                                       ^
../lib/binding/lz4_binding.cc:261:28: warning: 'LZ4_slideInputBuffer' is deprecated: use LZ4_saveDict() instead [-Wdeprecated-declarations]
  char* input_next_block = LZ4_slideInputBuffer(Buffer::Data(lz4ds));
                           ^
../lib/binding/../../deps/lz4/lib/lz4.h:351:56: note: 'LZ4_slideInputBuffer' has been explicitly marked deprecated here
LZ4_DEPRECATED("use LZ4_saveDict() instead")     char* LZ4_slideInputBuffer (void* state);
                                                       ^
3 warnings generated.
  CC(target) Release/obj.target/lz4/deps/lz4/lib/lz4.o
  CC(target) Release/obj.target/lz4/deps/lz4/lib/lz4hc.o
  SOLINK_MODULE(target) Release/lz4.node
  SOLINK_MODULE(target) Release/lz4.node: Finished
  CXX(target) Release/obj.target/xxhash/lib/binding/xxhash_binding.o
  CC(target) Release/obj.target/xxhash/deps/lz4/lib/xxhash.o
  SOLINK_MODULE(target) Release/xxhash.node
  SOLINK_MODULE(target) Release/xxhash.node: Finished
<EMAIL_ADDRESS>node_modules/lz4
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>

Doesn't seem to be fatal, but should be fixed.

Ok, I have reproduced and will fix as soon as I get some time. Unless someone gets to it before I do :).

Hello,
I have removed the unused methods, no more warnings. Will update soon.
Thanks.


Can you highlight overlapping dates in the Calendar component?

💬 Question
I would like to know if I can select overlapping dates like this. I've looked through the source files but cannot seem to find where the backgroundColor is being applied and changed when you select these components.

UI Kitten and Eva version 5.1.1

Package
Version

@eva-design/eva

@ui-kitten/components

Figured this out


dev: remove pr template

[ ] I have considered whether this PR needs review, and requested a review if necessary.

Fixes issue #
Notes for reviewers
Reviewers can skip X, but should pay attention to Y.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#97  👈
#96
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @MartinBernstorff and the rest of your teammates on  Graphite

Merge activity

Mar 30, 6:58 PM GMT+1: Graphite rebased this pull request as part of a merge.


use pub workspaces

As we add more packages, this should end up being a nicer workflow (just one pub solve, more reliable workflow for shared analysis options with includes, one analysis context)

Related to https://github.com/dart-lang/macros/issues/2#issuecomment-2176957077


fix: invalid variable syntax in release pipeline

What type of PR is this?
/kind bug
What this PR does / why we need it:
dryrun parameter syntax error prevents release pipeline from executing. Error is not present in the PR check-in gate so that is probably how it got through.
Running release pipeline now to ensure syntax works.
Requirements:

[x ] uses conventional commit messages
[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 70.926%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2559

Relevant Lines:
3608

💛  - Coveralls


feat: update watermark offset bucket implementation

fix: #301

thinking how can we do a comparison in before and after performance , any ideas?

run the same pipeline which led us to this issue?

run the same pipeline which led us to this issue?

It won't show any performance improvement. It will show that the KV entries are less.
By performance, i meant whether we can see any perceivable improvement is throughput, speed, CPU, etc.


Help Page integration

Help page is an essential tool for any website or application. It supports user autonomy, enhances the user experience, reduces operational costs, builds trust, and provides continuous, accessible support. Investing in a robust Help page is a strategic move that benefits both the users and the organization.

Try to find some ecommerce page for help

sure kindly assign this to me i want to work on it.

@Damini2004 connect with me on meeting for this issue... Then we'll decide to design help page.. then I'll assign you

any update ?

any update ?

Yess i will update you on discord today


python310Packages.nomadnet: 0.3.2 -> 0.3.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.nomadnet is: Off-grid, resilient mesh communication
meta.homepage for python310Packages.nomadnet is: https://github.com/markqvist/NomadNet
meta.changelog for python310Packages.nomadnet is: https://github.com/markqvist/NomadNet/releases/tag/0.3.3
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.3.3 with grep in /nix/store/fiy0d737699rff438mhbny8pfa7sc44a-python3.10-nomadnet-0.3.3
found 0.3.3 in filename of file in /nix/store/fiy0d737699rff438mhbny8pfa7sc44a-python3.10-nomadnet-0.3.3

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
python310Packages.nomadnet
python311Packages.nomadnet

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/fiy0d737699rff438mhbny8pfa7sc44a-python3.10-nomadnet-0.3.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.nomadnet https://github.com/r-ryantm/nixpkgs/archive/1a162d0433e57daf4e465c56b4caa4acf58f4876.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/fiy0d737699rff438mhbny8pfa7sc44a-python3.10-nomadnet-0.3.3
ls -la /nix/store/fiy0d737699rff438mhbny8pfa7sc44a-python3.10-nomadnet-0.3.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

python310Packages.nomadnet
python311Packages.nomadnet

Maintainer pings
cc @fabaff for testing.

Result of nixpkgs-review pr 215495 run on aarch64-darwin 1

2 packages built:

python310Packages.nomadnet
python311Packages.nomadnet


Changes for Perl clients, check_mk, travis builds

The major change here is the Thrift namespace; previously the namespace was a wildcard for all languages.  I've specified namespaces for Python, JavaScript, and Perl explicitly.
There are also changes for check_mk and Travis, notably checking for the KB_AUTH_TOKEN environment variable, and passing '' if it doesn't exist.  This lets the scripts run in Travis (or any environment with the test_resources backing store) without a token.

Current coverage is 69.25%

Merging #121 into develop will not affect coverage as of 6a697b6

@@            develop    #121   diff @@
=======================================
  Files            11      11
  Stmts          2329    2329
  Branches          0       0
  Methods           0       0
=======================================
  Hit            1613    1613
  Partial           0       0
  Missed          716     716

Review entire Coverage Diff as of 6a697b6

Powered by Codecov. Updated on successful CI builds.

I don't see my Thrift changes here, I must have forgotten to push them.  Please don't merge yet.

Ok, I have my thrift changes in now.  Please review and leave me comments, or if there are no problems merge after Travis succeeds.

It looks like test_api_service does not have an entry for genome_annotation yet.  We also probably need to regenerate and commit the perl thrift clients to pick up the namespace changes.  We can do that in this PR, or I can do that after this is merged.
For data_api_service, was the idea to test with assembly first and then add the others later?

Let's merge first, then regenerate.  Does that sound okay?
Yes, test_api_service only supports assembly at the moment.  I'd rather just get the commit in now, and add support for taxon and annotation later (perhaps this week or next).  The data_api_service changes will follow test_api_service; when I add support for other services I'll add them to data_api_service.

Ok, merging.


[RFC-191] On-chain governance

Description
This is the PR that introduces on-chain governance to Edge as a hard fork called governance.
By default, when starting a new supernet, governance will be active from the first block.
Tagging @DannyS03 so that he can update the docs based on described changes.
New contracts
There are 4 new contracts that need to be deployed on a supernet:

ChildGovernor - main governance contract that implements all the main functions for proposals, like propose, execute, cancel, etc. It is an implementation of openzeppelin Governor contract, so it is Bravo compatible, and can be used with Tally (a UI for managing governance proposals on a network).
ChildTimelock - a contract that handles who can propose, execute and vote on a proposal.
NetworkParams - a contract that holds all the network configuration parameters of a supernet, that can be governed.
ForkParams - a contract that holds info about proposed hard forks and from which block are they proposed to become active.

Changes in genesis command
This PR introduces new flags in genesis command, and those are:

checkpoint-interval - uint64 flag that represents number of blocks after which a new checkpoint is submitted (default is 900 blocks).
withdrawal-wait-period - uint64 flag that represents number of epochs after which withdrawal can be done from child chain (default is 1 epoch).
vote-delay - string flag that represents number of blocks after proposal is submitted before voting starts (can be represented by a hex or decimal value, or with big int, default is 10 blocks).
vote-period - string flag that represents number of blocks that the voting period for a proposal lasts (can be represented by a hex or decimal value, or with big int, default is 10000 blocks).
vote-proposal-threshold - string flag that represents number of vote tokens (in wei) required in order for a voter to submit a proposal (can be represented by a hex or decimal value, or with big int, default is 1000 wei).
governor-admin - string flag that represents an address of a governance admin (governance admin can add new or remove old proposers of governance proposals, and add new and remove old executors of accepted proposals. Default is zero address, and that will mean no new addresses can be enabled to propose and execute governance proposals).
proposal-quorum - uint64 flag that represents percentage of total supply of vote token needed for a governance proposal to be accepted (from 0 to 100%, default is 67%).

Changes in genesis.json
Because of the new flags, mentioned in above text, genesis.json is now expanded to hold new data:

in params forks section, there will be a new fork added if the chain is starting a new called governance:

"params": {
        "forks": {
            "governance": {
                "block": 0
            },

in polybft section, two new json parts are added:

"polybft": {
    ...
    "checkpointInterval": 900,
    "withdrawalWaitPeriod": 1,
    ...
}

in polybft section, a new json child is added called governanceConfig, that holds all the data in regards to on-chain governance setup:

"polybft": {
    ...
    "governanceConfig": {
         "votingDelay": "0xa",
         "votingPeriod": "0x2710",
         "proposalThreshold": "0x3e8",
         "governorAdmin": "0x26F6003E6d502CB8Fb5DC2ec8DE9489f3a215EdC",
         "proposalQuorumPercentage": 67,
         "childGovernorAddr": "0x000000000000000000000000000000000000100C",
         "childTimelockAddr": "0x000000000000000000000000000000000000100D",
         "networkParamsAddr": "0x000000000000000000000000000000000000100e",
         "forkParamsAddr": "0x000000000000000000000000000000000000100f"
    }
    ...
}

governanceConfig in genesis.json
governanceConfig is a new part of polybft configuration in genesis.json file, and holds these values:

votingDelay - is the voting delay setup in genesis command, as explained in previous sections.
votingPeriod - is the voting period setup in genesis command, as explained in previous sections.
proposalThreshold - is the proposal threshold setup in genesis command, as explained in previous sections.
governorAdmin - is the address of governance admin setup in genesis command, as explained in previous sections.
proposalQuorumPercentage - is the total voting power percentage needed to accept a proposal, setup in genesis command, as explained in previous sections.
childGovernorAddr - address of ChildGovernor contract on supernet.
childTimelockAddr - address of ChildTimelock contract on supernet.
networkParamsAddr - address of NetworkParams contract on supernet.
forkParamsAddr - address of ForkParams contract on supernet.

Governance on a new chain
By default, when starting a new supernet, the governance fork is active from genesis, and its governanceConfig will be populated on genesis command. Also, the new contracts will be automatically deployed.
Governance on an already running chain
To enable governance on a supernet that was already running on an older version, these are the steps that you need to follow:

Deploy the new governance contracts on supernet (deploy them, and initialize them). Save their addresses, since you will need them later.
Upgrade ValidatorSet and RewardPool contracts (because they are modified in regards to on-chain governance).
Edit genesis.json to have checkpointInterval and withdrawalWaitPeriod with values that you provided when initializing NetworkParams contract.
Edit genesis.json to have governanceConfig, and provide addresses of contracts from step 1, provide address of governance admin you specified when you deployed ChildTimelock contract, provide configuration values you specified when you deployed NetworkParams contract.
Edit genesis.json forks section to have governance and specify some future block from which governance becomes active.
Upgrade the nodes to use a new version of code which has governance fork.
Start the nodes.

Network configuration parameters supported in governance
These are the client configuration parameters that can be governed in the on-chain governance:

uint256 checkpointBlockInterval - in blocks
uint256 epochSize - in blocks
uint256 epochReward - in wei
uint256 sprintSize - in blocks
uint256 minValidatorSetSize - in number of validators
uint256 maxValidatorSetSize - in number of validators
uint256 withdrawalWaitPeriod - in blocks
uint256 blockTime - in seconds
uint256 blockTimeDrift - in seconds
uint256 votingDelay - in blocks
uint256 votingPeriod - in blocks
uint256 proposalThreshold - in percent

Requirements when deploying governance contracts
When deploying governance contracts you are required to specify some things.

NetworkParams contract - specify initial network configuration parameters when initializing the contract. When deploying a new supernet, this is done automatically on genesis, since those configuration parameters are read from genesis.json and passed to contract initializer. When deploying the contract manually, you need to do this manually, but make sure those values match the ones in genesis.json. You also need to specify the contract owner. In our case, this is the ChildTimelock contract, because it is the ChildTimelock who executes an appropriate function on the NetworkParams when proposal is executed.
ForkParams contract - specify contract owner. In our case, this is the ChildTimelock contract, because it is the ChildTimelock who executes an appropriate function on the ForkParams when proposal is executed.
ChildTimelock contract - specify minDelay value (which represents the delay after which accepted and queued proposal can be executed, and is specified in number of blocks). You also need to specify list of addresses that represent the initial proposers and executors of governance proposals. Please note that you need to add address of ChildGovernor contract to these lists as well. You can do that after you initialize the contract by calling the grantRole(bytes32 role, address account) function on ChildTimelock contract (this can only be done by the governance admin). You also need to specify the address of governance admin (the one who can add and remove proposers and executioners). When deploying a new supernet, all this is done automatically by reading the governanceConfig in genesis.json, and in this case minDelay is by default 1 block, and can not be changed.
ChildGovernor contract - specify token used for voting. This should be the address of ValidatorSet contract on supernet, since he acts as a wrapper token around stake of validators. We do not recommend using any other token, because they need to implement ERC20VotesUpgradable interface from openzeppelin to be compatible. You also need to specify the addresses of NetworkParams and ChildTimelock contracts, and initial proposalQuorumPercentage from genesis.json file. When deploying a new supernet, all this is done automatically by reading the governanceConfig in genesis.json.

Rules of governance on a supernet
By default, when deploying a new supernet with governance fork enabled, governance is configured like this:

Voting token for voting on governance proposals is the stake token representation on supernet which is the ValidatorSet contract. It implements ERC20VotesUpgradable to be compatible with Bravo governance. You can use some other token when you deploy the contracts manually, but we do not recommend this. Voting token provided by Edge will always be the stake token on L2 (ValidatorSet contract), and this can not be changed through genesis when deploying a new supernet. When deploying manually, we do not limit the users to use another token, but we do not recommend it.
Only inital validator set will be able to propose and execute proposals. This is default behavior provided by Edge when deploying a new supernet, and can not be changed through genesis. governorAdmin can later add new addresses and remove old ones. Please note that proposers need to have vote tokens in their balance in order to propose a proposal if the proposal threshold is greater than 0. When deploying contracts manually, we do not limit the users to specify other addresses. Once the supernet is started, the governorAdmin can add new proposers and executioners.
governorAdmin is taken from the genesis specification and passed to the ChildTimelock contract. Only him can add new and remove old proposers and executioners, as well as admins.

Proposal lifecycle for a change of some network configuration parameter
Proposing a new proposal

First requirement is that user address needs to be in the list of proposers on ChildTimelock contract.
Second requirement is that user has enough vote tokens if the proposalThreshold is greater than zero. If it is zero, no vote tokens are required to propose a change on governance.
Proposal is submitted by calling the:

function propose(
    address[] memory targets,
    uint256[] memory values,
    bytes[] memory calldatas,
    string memory description
)

function on ChildGovernor contract.

targets - are the addresses of contracts on which change will be executed. In this case address of NetworkParams contract.
values - values of transactions. In this case, it should be 0.
calldatas - abi encoded call to desired function on NetworkParams contract. For example if we want to change epochSize, this should be abi encoded call to function setNewEpochSize(uint256 newEpochSize) with specified new epoch size.
description - string description of given proposal that other users can see when voting. For example, Changing epoch size from 10 to 100 blocks.
Important note here is to remember, that targets, values and calldatas are paired lists, and need to have the same amount of items.

Once the proposal is submitted, and after voteDelay number of blocks passes, the voting can start.

Voting on a proposal
To vote on a proposal, voters need to have some vote tokens in order to have influence on the proposal acceptance, and the voteDelay number of blocks needs to pass, otherwise, the vote will not be counted. There is no limit who can vote on a proposal, but they can only vote once for a given proposal. Voters can even cast a vote if they don't have any tokens, but they will not have any influence on the proposal.
Voting is done by calling a function from the castVote family of functions on ChildGovernor:
function castVote(uint256 proposalId, uint8 support)
function castVoteWithReason(
    uint256 proposalId,
    uint8 support,
    string calldata reason
)
function castVoteWithReasonAndParams(
    uint256 proposalId,
    uint8 support,
    string calldata reason,
    bytes memory params
)
function castVoteBySig(
    uint256 proposalId,
    uint8 support,
    uint8 v,
    bytes32 r,
    bytes32 s
)
function castVoteWithReasonAndParamsBySig(
    uint256 proposalId,
    uint8 support,
    string calldata reason,
    bytes memory params,
    uint8 v,
    bytes32 r,
    bytes32 s
)

Once the vote is submitted, the voting power (weight, or amount of voting tokens that address had when proposal was submitted) of the vote will be added to required proposal and it's vote type. Users can vote: For, Against or Abstained.
If the proposal has quorum of For votes (meaning, the proposalQuorum percentage of total supply of vote token at the time of proposal submition is reached for For votes), then, that proposal is accepted after the votePeriod ends. Otherwise, it will not be accepted (marked as Defeated on contract).
Queue a proposal
Once the voting period ends, and proposal has quorum of For votes, user needs to queue the porposal for execution. This is done by calling the queue(uint256 proposalId) function on ChildGovernor contract. There is no limit who can queue a proposal.
Execute a proposal
Once the proposal is queued and minDelay of blocks provided to ChildTimelock passes, proposal can be executed. This can be done by any address that is in the executors list on ChildTimelock contract, and by calling:
function execute(
    address[] memory targets,
    uint256[] memory values,
    bytes[] memory calldatas,
    bytes32 descriptionHash
)

function on ChildGovernor contract. The user needs to provide the same values as when proposal was submitted, only difference being the keccak256 hash of proposal description string.
Once the proposal is executed, it will be marked on contracts as Executed and no other action can be done on that proposal. It will be kept in contract storage.
When the proposal is executed, the address in targets parameter will be called, by using its calldata. In our example, setNewEpochSize function will be called, which will set the new epoch size on NetworkParams contract, and the new epoch size will be used by the edge client. More about this in later sections.
Canceling a proposal
Canceling a proposal can only be done by the proposer of the proposal, and if proposal is not already executed or canceled. This is done by calling the:
function cancel(
    address[] memory targets,
    uint256[] memory values,
    bytes[] memory calldatas,
    bytes32 descriptionHash
)

function on ChildGovernor contract. Notice that the parameters of function are the same as on execute.
Proposal lifecycle for an introduction of some hard fork
The lifecycle of a governance proposal for some hard fork is the same as a proposal of change of some network configuration parameter. Only difference is in setting targets and calldatas fields when proposing and executing proposals.
For example, we want to propose activation of fork testFork from block 100k. We would do that by specifying the address of ForkParams contract in targets parameter, and abi encoded call of addNewFeature(uint256 blockNumber, string calldata feature) function on that contract (where you specified from which block the feature is active and it's name).
When does a change of some network configuration parameter take effect?
Once the proposal for a change of some network configuration parameter is executed, and that parameter gets updated on NetworkParams contract, it's change does not happen immediately. To ensure correctness and liveness of our consensus, we can not just change some network configuration in the middle of an epoch. Changing some critical parameters like block time or epoch size in the middle of an epoch can have serious consequences, because consensus relies on these two fields. Because of that, once that proposal is executed and parameter updated on NetworkParams contract, that event will be caught by the client and saved to it's database. Once the epoch, in which those proposals got executed, finishes, the client will read the new values, and update it's configuration for the next epoch. This ensures correctness of consensus and mitigates possible issues that could arise if these changes are turned on immediately.
There are few exceptions to this. Change to next parameters takes effect immediately once their proposals get executed, since they are not used by the consensus engine and protocol, nor Edge client, but only on contracts:

epochReward,
withdrawalWaitPeriod,
votingDelay,
votingPeriod,
proposalThreshold.

To have a more clearer picture, check this diagram out:

When does a change to activate some hard fork take effect?
Proposals to activate/deactivate some hard fork take effect immediately on the block which was specified as the activation block for that feature. So, for example, if we want to activate london fork on block 100k, and that proposal is executed on block 90k, the edge client will immediately save the info that that fork will be active from block 100k.
How to activate/deactivate a hord fork using on-chain governance?
To activate a fork using on-chain governance users need to:
Send a governance proposal to activate a fork, where proposal calldata must be a call to addNewFeature function on ForkParams contract. In given calldata user must specify fork name and block from which it should be active (fork name in the proposal must match the name of that fork in code:).
Proposal must have enough votes, and executed.
After proposal gets executed, fork will be automatically added to edge client forks where it becomes active from specified block.
If a user didn't specify that fork in genesis, that fork will automatically be turned off when chain starts, and it can be activated by later specifying it in the genesis and setting some future block for it (restart of all nodes is required), or by using on-chain governance.
If a user specified a fork in genesis, and that fork gets activated when its block is reached, there is one way to deactivate it, and it's by using on-chain governance. Basically, user will need to create a proposal that changes it's block number to some block that will either never be reached, or it will be reached after a long period of time (they can always change this using ForkParams contract).
To deactivate a fork using on-chain governance users need to:
Send a governance proposal to deactivate a fork, where proposal calldata must be a call to addNewFeature function on ForkParams contract (if it is not already added to that contract), or updateFeatureBlock (if it was already added to that contract). In given calldata user must specify fork name and some big block number that will not be reached in a long time (fork name in the proposal must match the name of that fork in code:).
Proposal must have enough votes, and executed.
After proposal gets executed, fork will be automatically deactivated on edge client.
Code changes

Deployed and initialized new contracts for governance through genesis.
Updated genesis.json file to hold new configuration.
Updated genesis command with new flags.
Implemented goernanceManager on Edge client which is a handler of governance proposal events. It does these things:

on starting of node it will take the genesis client configuration and save it to boltdb if the chain is just started (or the node just started syncing from genesis block). If we are starting from some newer block (in cases when node was down some time), genesis configuration will already be saved to boltdb.
on finalization of each block (either from consensus or syncer), iterates through transaction receipts to see if any governance proposal was executed in given block. If it was executed, it will save those events to boltdb under epoch in which proposal was executed.
on starting of the new epoch, it will check if there are any found governance events from previous step that happened in the closing epoch. If we had any events we found and saved in boltdb it will iterate through them and update client configuration based on new values of changed network parameters through on chain governance. Updated client configuration will be saved to boltdb. This is done at the end of epoch, because we can not ensure stability if we start changing parameters at the end of epoch. For example, if we are to change epoch size in the middle of epoch, a lot of things like distributing rewards, and commiting an epoch will not work correctly. That is why, we will save executed proposal events to boltdb first, and then at the end of the epoch, update the client configuration based on them.
provides a function to get the most current configuration to consensus_runtime, so that the client has the latest parameter values.

consensus_runtime is changed so that now each epoch has it's own client configuration, provided by the governance_manager. A new field is introduced to epochMetadata struct (which holds config and data from current epoch), called CurrentClientConfig, and it will use that field whenever some parameter from client configuration is needed in some part of code.
Distribution of rewards is moved to the first block of epoch because of the change on ValidatorSet contract to implement ERC20VoteUpgradable. It's totalSupplyAt function got changed because of this, and now no longer supports getting totalSupply in the current checkpoint, and this is actively used by RewardPool to have more precise reward distribution. Because of this the distribution of rewards for previous epoch is moved to the first block of next epoch. This has three benefits:

It lowers gas consumption on epoch ending blocks.
It enables more accurate reward distribution.
We can use ValidatorSet as voting token for governance.

To support fork acitvation/deactivation:

governanceManager is expanded to collect both NewFeature and UpdatedFeature events that get emitted by ForkParams functions addNewFeature and updateFeatureBlock respectively.
Those events will be saved to a separate bucket called forkParamsEventsBucket, where key is hash of fork name and value is block from which that feature is active.
On finalization of each block (either from consensus or syncer), governanceManager will get those events from receipts and save them in boltdb. Note, that governanceManager has a means to get missed events (if some error occurred while saving those events in previous block.
On each block that had these ForkParams events, it will register and activate/deactivate those forks in forkManager, so that the rest of the code knows if that fork is active or not, and from which block.

Written e2e tests for successful and unsuccessful governance proposals.

Changes include

[ ] Bugfix (non-breaking change that solves an issue)
[ ] Hotfix (change that solves an urgent issue, and requires immediate attention)
[x] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

[x] I have assigned this PR to myself
[x] I have added at least 1 reviewer
[x] I have added the relevant labels
[ ] I have updated the official documentation
[x] I have added sufficient documentation in code

Testing

[x] I have tested this code with the official test suite
[x] I have tested this code manually

We should strongly consider adding defaultBaseFeeChangeDenom as a governable param. With a low block time, the default value of this param - which is inherited from Geth - allows the 1559 base fee to vary wildly.
We tweaked it 2X (to 16) in Bor but likely should have gone 2X further.

We should strongly consider adding defaultBaseFeeChangeDenom as a governable param. With a low block time, the default value of this param - which is inherited from Geth - allows the 1559 base fee to vary wildly. We tweaked it 2X (to 16) in Bor but likely should have gone 2X further.

Added to the backlog and we are going to revisit it in the future.


Problem with setting input values to datetimepicker manually

Hi,
Want to set time values manually in input box by typing, but it is not updating the manually typed values in the result box. Also when you delete the hour input box value and pressed "Tab" key to go in next input box for selecting the minutes values, it updating the hour input box values to "NaN" values.

Hi,

When you input values by typing, it will be reflected in DateTimePicker Header section on focus out event input field.
If you delete value and press TAB, all fields will show NaN. You will not be able to change the value.

Thanks for reporting a bug.

Hi,
Thanks for quick reply.
How can we resolved these issues.

You can replace following lines of code in _getValuesFromInputBoxes method
dtPickerObj.dataObject.iCurrentHour = parseInt($(dtPickerObj.element).find(".hour .dtpicker-compValue").val());
dtPickerObj.dataObject.iCurrentMinutes = dtPickerObj._adjustMinutes(parseInt($(dtPickerObj.element).find(".minutes .dtpicker-compValue").val()));

with
dtPickerObj.dataObject.iCurrentHour = parseInt($(dtPickerObj.element).find(".hour .dtpicker-compValue").val()) || dtPickerObj.dataObject.iCurrentHour;
dtPickerObj.dataObject.iCurrentMinutes = dtPickerObj._adjustMinutes(parseInt($(dtPickerObj.element).find(".minutes .dtpicker-compValue").val())) || dtPickerObj.dataObject.iCurrentMinutes;

I will update repo later.

Hi Neha,
Thanks for the help.
NaN issue is resolved, but we are facing issues with maually typed values in input field specially for 12 PM. Also have restricted the minTime : local time and maxTime: 11:59 PM. This issues are not coming when we are changing values through Up - Down arrows.

Hi,
You can download updated version of DateTimePicker and check whether your issue is solved.

Hi Neha,
Have updated the css and js from your repo, but still facing the same 12 PM issue. Please find the attached file for more details about the time picker. Please open this (dateTimePicker-issue.webm) file in google chrome, it will directly play as video.

Please check feature you want in some example in DateTimePicker Demo folder (e.g. Format-parameters.htm). As far as I checked in this example, I could type in 12:00 AM and 12:00 PM value.


Write InfiniBand ping-pong test

Uses two VMs to run a simple test of sending data back and forth to ensure RDMA / InfiniBand is functioning.
Draft because some changes need to be made to Nics still. I drafted some changes to ensure my test works, but I need to organize them better to ensure my changes don't break any other code.

@squirrelsc Since this ping pong test is small / fast can we change its priority (technically it was part of the other infiniband test cases which have been given priority 4)? What is your suggestion?

@squirrelsc Since this ping pong test is small / fast can we change its priority (technically it was part of the other infiniband test cases which have been given priority 4)? What is your suggestion?

yes, we can change it to P1, so this feature area can be validated more.


Android - Device name always NULL (device discovered event)

Hi,
I have a problem with the Device Name. It does not depand on device model. On all devices I have tested I get NULL device name on OnDiscovered event. On IOS there is no problem. Device names are fine. On always get NULL. Rest parameters are fine and I can connect to the device.
Expected behavior
On both platforms OnDiscovered returns IDevice object that has name.
Actual behavior
On IOS devices has name while on Android it is always NULL.
Crashlog
Configuration
Version: 1.1.0
Platform: Android

Have you tried the sample App, does it happen with it?

Do you have any code you can share? The sample app seems to work fine. So does our current production app.

I'm guessing it's not an issue anymore