Optional and multi-segment path parameters

This is a meta issue representing a number of requests over the years including  #1459 #1840 #892
Currently the OpenAPI specification does not allow optional path parameters nor path parameter values that allow characters such as the /.  This means that if you had the following API description:
  /myfiles/{mypath}/{filename}:
    parameters:
      - name: mypath
        type: string
      - name: filename
        type: string

then you would not be allowed to have myPath = "a/path/to/a/file" unless you escaped the forward slash character.
Also, the RFC6570 URI Template /myreports/{reportName}{/nonDefaultFormat} where the last path segment is optional is not supported by OAS.
The primary reason for not supporting these types of APIs is that it creates the potential of an ambiguous match between a URL and the corresponding path item.  Some tooling depends on being able to identify the API description for a specific URL.  If multiple pathItems match, then some kind of alternate selection algorithm must be defined.
There have been a number of suggestions on how that selection algorithm might work, with varying levels of complexity.  The open question is if there is enough community demand to justify the work necessary to find an acceptable solution.
If you have real-world scenarios where adding support for either multi-segment path parameters or optional path segments would make your life easier, please share them in this issue.

We have a few use cases when it comes to GitHub API v3. The current workaround is to annotate multi segment parameters with an extension, but this is far from ideal as far as tooling support and specification adherence goes.

File system / git repository paths. For example creating a file in a repository has a path parameter that takes an arbitrary path: https://docs.github.com/en/rest/reference/repos#create-or-update-file-contents
Git refs: The ref param in github API can often be a SHA, a branch name, or a tag name. Branch names can easily contain slashes. Example: https://docs.github.com/en/rest/reference/checks#list-check-runs-for-a-git-reference

The URI Template + operator is another alternative although I think it has the same potential for ambiguity as the / operator. The + operator allows reserved characters, so the example /myfiles/{mypath}/{filename} could be /myfiles/{+mypath}/filename which could match /myfiles/a/path/to/file/myfile to { "mypath": "a/path/to/file", "filename": "myfile"}.
I know @awwright has written a URI matcher for URI Template (https://github.com/awwright/uri-template-router). He might have some insight on how to deal with the ambiguities.

@jdesrosiers The allowReserved property was added to the parameter object in 3.0 to provide the same capability as the + operator, but we limited it to only be usable in query parameters. https://spec.openapis.org/oas/v3.1.0#fixed-fields-9

uri-template-router tries to invent a general algorithm for reversing a URI Template and it is, indeed, somewhat complicated, in large part because URI Template isn't designed for matching.
The first rule I try to follow is a simple, self-evident principle: If b is a strict subset of a, then match a before b.
This means that http://example.com/a/b/ will match templates in the following order:

http://example.com/a/{+foo}/ and http://example.com/{+foo}/b/
http://example.com/{a}/{+b}/
http://example.com/{a}/{b}/
http://example.com/{+foo}/
http://example.com/{+foo}

Then for picking between disjoint URI templates, prefer templates that are strict subsets when only looking at the first characters. Therefore, http://example.com/a/{+foo}/ would be matched first because if you compare only the first 20 characters of matching URIs, http://example.com/a is a strict subset of http://example.com/{+foo} (where {+foo} matches zero-or-one characters).
Finally, I match empty strings by default. Because URI Template isn't a matching syntax (like regexp), it doesn't have a way for requiring a minimum number of matches. Developers requiring a match are expected to validate the values for the matches, and call Result#next if one of the variables is invalid (e.g. is empty, when a minimum of 1 character is expected).
I recall there being one or two small bugs with the algorithm that I have, I was in the process of mathematically trying to prove this algorithm is computationally possible, and then got sidetracked.

I dove into a "parsing strings" rabbit hole and I've come up with some interesting findings:
A URI Template is a subclass of a regular expression, which in turn can be expressed as a
Non-deterministic Finite Automaton (NDFA), which in turn is expressible as a
Deterministic Finite Automaton (DFA).
There is an optimal, normalized form for DFA. Once you build a DFA from a URI template, you can cache it/save it.
You can reverse the DFA back into a regular expression or URI Template.
Any URI that you can build with a URI Template can be reversed into one or more values for that URI template that will build that URI, and this can be done deterministically (so that there is a "canon" value).
It is also mathematically possible to detect these ambiguous cases, where a single URI is potentially parsed into multiple values.
The algorithms for building the DFA are complicated (at least 1k LoC), but the machine is computationally straightforward: Once you've built the state machine, it can be parsed in O(n) time, n = length of input string, no backtracking.
You can even add complicated processing on top of the URI Template. For example, you could register two URI templates:

http://example.com/blog/{+foo} where foo ~= /^\d+$/
http://example.com/blog/{bar} where bar ~= /[0-9a-fA-F]+/

... and the DFA compiler could detect that (1) is a subset of (2), because of the regex constraints, even though the URI Templates by themselves would suggest the opposite.

In a world where Godel's incompleteness theorem usually rules, and O(n!) algorithms are often our best case, this is pretty exciting. The question is, what can OpenAPI take from this? My opinion is that frameworks exist to remove implementation burden from developers. But writing all of this into OpenAPI (e.g. the regex constraints on URI Template variables) could potentially be prohibitive to complete implementations being written at all.
I'm going to continue to work on this; but what sort of work would you find useful?

Hello I would like to offer a real world example of the need for this.
I have a legacy API that uses optional path params for paging information. So URLs like:
 https://somewhere/books;count=100?someparam=foo
I'm trying to put a new API gateway in front of this API and the gateway strictly requires all APIs to be done in OpenAPISpec, because I cannot model the optional path param (that I can see), the Gateway is returning 404 for any requests containing it. Unfortunately this is not something I can change, the API has thousands of consumers and serves 40 billion requests a year. Switching to all query params or headers or something else would be a major breaking change. my only other option would be to write some proxy in front of the Gateway to rewrite the URLs but that seems silly. So it would be great if the Spec could support this.

I propose to add support of {+path} expression from RFC6570.
Please vote on this if you agree!

wouldn't http://example.com/{+a}/{+b}/ be ambiguous?
Probably only one {+PathElement} per path should be allowed

@rafalkrupinski

wouldn't http://example.com/{+a}/{+b}/ be ambiguous?

No, not really. It's ambiguous in the sense that there's multiple values for a and b that can produce the same URI.
However, there's only one match that will be made by a finite state machine; such that b will never contain any "/" characters.

@awwright

There's only one match that will be made by a finite state machine; the one such that b will never contain any "/" characters.

Isn't that arbitrary? Might as well be parsed such that a never contains any '/' characters.
Besides, that would mean the pattern degenerates to http://example.com/{+a}/{b}/ (or http://example.com/{a}/{+b}/)

In our case we have multiple params per path but they always come at the end:
http://example.com/foo;count=5;start=10

In our case we have multiple params per path but they always come at the end: http://example.com/foo;count=5;start=10

Those are "matrix" parameters, not "path" parameters.

@yinzara my bad, you are correct, are Matrix params supported by OpenAPISpec? Because I have not really been able to get them to work when they are Optional, which is what brought me here. I assume this would be a different issue?

@rafalkrupinski

Isn't that arbitrary? Might as well be parsed such that a never contains any '/' characters.

It's not arbitrary in the sense that someone choose it to work that way, from among other options; that's just how finite state machines work.

Besides, that would mean the pattern degenerates to http://example.com/{+a}/{b}/ (or http://example.com/{a}/{+b}/)

Sort of, the + operator permits many additional characters, not just "/".
Besides that, yes, for any URI Template where there's multiple different values that map to the same URI, there's a normalized form that will match only the "first" of those equivalent values (leaving the "redundant" values to not match at all). It might not be expressible as a URI Template, but you can notate it as a regular expression.

@ryber > my only other option would be to write some proxy in front of the Gateway to rewrite the URLs but that seems silly.
That doesn't seem silly at all to me. It's the right thing to do when marking an endpoint as deprecated while still supporting it. If you can rewrite the old form to the new form, then your application only needs to support the new form, and it also lets you gate which clients are still allowed to use the old form (you can use the User-Agent or an authorization token to block new clients from using the old form).

I am very much interested in this, because I would like to be able to document APIs that already exist, even if they don't conform to common designs.
As such, I think it would be useful to look at the routing patterns actually supported by popular implementations, rather than trying to define a new system, or adapt an RFC intended for a different purpose.
In PHP, the most popular router is probably nikic/fastroute which allows aribtrary optional text (not just optional parameters), but in limited positions, presumably to limit the the ambiguity:

Furthermore parts of the route enclosed in [...] are considered optional, so that /foo[bar] will match both /foo and /foobar. Optional parts are only supported in a trailing position, not in the middle of a route.
// This route
$r->addRoute('GET', '/user/{id:\d+}[/{name}]', 'handler');
// Is equivalent to these two routes
$r->addRoute('GET', '/user/{id:\d+}', 'handler');
$r->addRoute('GET', '/user/{id:\d+}/{name}', 'handler');

// Multiple nested optional parts are possible as well
$r->addRoute('GET', '/user[/{id:\d+}[/{name}]]', 'handler');

// This route is NOT valid, because optional parts can only occur at the end
$r->addRoute('GET', '/user[/{id:\d+}]/{name}', 'handler');

In node.js the ExpressJS Routing component uses a "path to regexp" library, which allows optional parts to appear anywhere in the URL. Ambiguity is resolved by matching patterns in the order they're defined (it's also possible for a handler to call next('route') to find the next matching pattern, but that's probably less relevant to the current discussion).
In ASP.net Core, the Routing system features "URL templates" supporting optional parameters with {foo?} and defaulted parameters with {foo=bar}, as well as "catch-all" parameters with {*foo} or {**foo}. The matching rules are quite involved, but well-defined, and ambiguity is resolved using a "priority" system which by default is based on the specificity of the match:

For example, consider templates /Products/List and /Products/{id}. It would be reasonable to assume that /Products/List is a better match than /Products/{id} for the URL path /Products/List. This works because the literal segment /List is considered to have better precedence than the parameter segment /{id}.
The details of how precedence works are coupled to how route templates are defined:

Templates with more segments are considered more specific.
A segment with literal text is considered more specific than a parameter segment.
A parameter segment with a constraint is considered more specific than one without.
A complex segment is considered as specific as a parameter segment with a constraint.
Catch-all parameters are the least specific. See catch-all in the Route templates section for important information on catch-all routes.

Another way to look at it is that optional components or parameters are (at least in most cases) just a short-hand for something that can already be expressed by defining multiple routes with the same properties. Note the FastRoute example can be expressed as two separate routes; and the ASP.net example is ambiguous even though it uses two separate patterns, not an optional segment.
It seems to me that for most use cases, it would be sufficient to have two algorithms specified:

Given a path with optional parts, generate an equivalent list of paths with no optional parts.
Given a URL and a list of paths (after the above expansion, if necessary), select one. That could be order-based, like Express; or incorporate specificity, like ASP.net.

I'm not entirely certain why there is so much over-engineering in here. We don't need a RFC, we just need to able to explode a parameter into a list of prefixes or suffixes
Just add:
style: "path"
Next to matrix, form and whatever the other one is and that's all ...

Random dev who bumped into this challenge here...
Maybe it would be helpful to pick a good, intuitive use case that there is a need for: Expressing a file system path.
So, https://example.com/files/a/path/to/a/file
If we express our path like /files/{directories+}/{filename} then there will be no ambiguity. There is clearly one or more directory and they should be deserialized into a list. The file is at the end.
But if, in a slightly conceived example, we have packs of dogs and clowders of cats, how can this be expressed in a path?
/fido/buster/kitty/bella/luna
/fido/buster/buddy/bella/luna
We'll find that this can't be done. A path definition like /{+dogs}/{+cats}/ doesn't work because there is no knowing where one list starts and the other ends.
I think this is the ambiguity problem discussed and why having two multi-path segments next to each other won't work.
This path definition, however, can be deserialized nicely.
/dogs/fido/buster/buddy/cats/bella/luna
/dogs/{+dogs}/cats/{+cats}
Well, unless there is a jokester that names there cat "cats"...

@jpsalvesen This actually has an answer, see my comment at https://github.com/OAI/OpenAPI-Specification/issues/2653#issuecomment-1219139893
In regular expressions, selecting between behaviors for how to handle this is called "greedy" and "non-greedy".

Yeah, full control over regexp group definition must be exposed, not just greedy "any char".
I'd like to see something like PEG parser here.

@jpsalvesen I get what you're saying, but there's multiple concepts to distinguish:
A URI template maps a variable binding to a URI.
When you write a URI like http://example.com/{+a}/{+b}/ then is true there will be multiple bindings that will map to the same URI. But by definition, because they all form the same URI, they must identify the same resource. All this means is that you have multiple bindings that identify the same resource. For example, http://example.com/1/2/3/ identifies the same resource as { a: "1/2", b: "3" } identifies the same resource as { a: "1", b: "2/3" }.
Further, among these alternate variable bindings, only one is canonical. In this example, the first match ({ a: "1/2", b: "3" }) is the canonical one that will be produced by a finite state machine.
So, the inverse function may be injective, but it is not ambiguous.

:(

As others above have stated, it should be a greedy state machine.
The pattern of /{+a}/{+b} will always parse /1/2/3/4/5/6/7 as a=1/2/3/4/5/6 and b=7, deterministically.
If you want a double wildcard in this case, you have to specify a deterministic split point other than just a /, so for example:
/{+a}/foos/{+b} would be the solutions.
To use the Cats vs Dogs example, you would do
/cats/{+cats}/dogs/{+dogs
as a route, which will result in the user needing to submit to a url like so:
/cats/bella/luna/dogs/fido/spot
which will serialize:
cats=bella/luna
and
dogs=fido/spot

The Moonwalk (OAS 4) proposal currently includes full support for RFC 6570 URI Templates.  Further discussion should happen in that repository, as the change is too large to go in the 3.x line.


Add TransformContainer

Closes https://github.com/godotengine/godot-proposals/issues/7053
Supersedes #87081
https://github.com/user-attachments/assets/3ce091c1-e643-4ad3-b490-2709e90e60b7
https://github.com/user-attachments/assets/bf4c2ea7-dc78-4511-b991-174c272875b8
Icon probably needs change.

But if it has to be done, perhaps one could argue visual or render would be a more intuitive, and perhaps less redundant prefix.

transform prefix is more consistent with the class' name.
TransformContainer with visual_offset etc. would be odd.
idk

Not much of a fan of prefixing all of these properties with "transform_", I'll say that much. I know why that's the case, as some of these properties would otherwise conflict with Control's own.

The prefix could be removed from the inspector by using a property group I'd say.

Then the container would have all properties in a group.

It doesn't affect input, right? So I should agree that calling this container just  TransformContainter may be confusing for those who will expect it to affect everything.
(But for me this naming is ok because I know background)

Just to clarify the main difference between this and the other implementation is this one being a container itself instead of a drop down in pre existing control nodes?
if so id be curious as to why this is preferred, sure the other option adds a little more "bloat to preexisting nodes." but it also seems a tad more convenient then having yet another control node for nesting control nodes in.
I assume the main advantage of this approach is allowing one to apply said transform to various nested controls more easily?

sure the other option adds a little more "bloat" to preexisting nodes

Yes, it adds bloat to all Control nodes. There is thousands of them in the editor. It's extra data per each node and the extra transform is processed regardless if it was used. The new container allows using transform only in the nodes that actually need it, and most often there won't be many of them.

right, thanks for the explanation !

The prefix could be removed from the inspector by using a property group I'd say.

Then the container would have all properties in a group.

Control itself is like this. It's not unprecedented.

Maybe rotation pivot and scale pivot should be separate for finer control?

Nice to see relative pivot working here!
Some problems I found:

Flickering when resizing

https://github.com/user-attachments/assets/e7745f82-ad62-49fa-9f41-d552176e2950

Scale-Rotation order. It shears the control which is a cool effect but it would be nice if there was a way to avoid that. Perhaps a dropdown to select the order of operations? Would also be nice to be able to offset in a different order to move the thing in "orthographic projection"

https://github.com/user-attachments/assets/b833850a-047f-48a7-8f3d-474d7abd5458

Can't see the effect in the running game no matter how hard I try with a nested ColorRect. Possibly related to 1?

https://github.com/user-attachments/assets/bddbeefe-b98b-4599-bb5c-8853033759da
3.1 Managed to see the effect using a PanelContainer instead of a ColorRect. However it snaps back to untransformed when the window is resized
https://github.com/user-attachments/assets/079b0e3d-a2a8-439c-a523-873561573b8b

I understand this is a purely visual effect but would go hard if it supported input too. Unless documented this will probably be reported as a bug at some point

https://github.com/user-attachments/assets/310e3388-2eee-48f6-bef8-db0c30b1c00c

Scale ratio lock is missing unlike in the regular Control transform, which is a very useful feature

P.S To be honest after testing this I don't really understand how this is different from the regular Control transform, and why this needed a new node instead of having the Control node's transform improved. But I didn't read through the whole conversation in the proposal. On the other hand maybe if you need to read the full conversation in a github proposal to understand the feature then maybe it won't be obvious to users why this exists and when to use it over the regular node transforms

Great work, thanks for putting in the time for this!
I have similar thoughts on this as i do with the alternative PR
I still prefer reducing the necessary nesting of the scene tree as opposed to the number of properties in a node. Having to add an extra MarginContainer for offsetting is already an annoying part of the workflow for what I believe to be a very common aspect of UI: positioning items. timoschwarzer demonstrated that adding these properties to Control has negligible impact on memory overhead, and even KoBeWi proposed a change to optimize it further in that thread.
Regardless, I prefer either solution way above none at all, this difference is annoying but minor to me overall.
My stronger criticisms are similar to the ones I had in the other PR:
I think the "Relative to size" toggles should be default disabled, to keep them in-line with how transforms work everywhere else. A case could be made to have the Pivot Relative be default enabled, since rotating about the center is a common usecase. But I do not think the Offset Relative should be default enabled. The base transform and positioning properties are based on absolute units, I see no reason that it should be different here. This will just end up being another annoying part of the workflow, manually disabling this check every time I want to move a UI element a few pixels. (others seem to agree)
I agree with @passivestar that the skewing behavior is unintuitive and that it should be under an option, or simply removed. A user can reproduce the skewing effect by nesting TransformContainers if they desire. This adds yet another difference from the normal position/rotation behavior
A common usecase for me is to animate button hover effects, the current implementation prevents me from e.g. shifting the button up and rotating it without making it skew undesirably.
As for passivestar's 4th point, I do not think this (or the alternative PR) should support input. The idea is that this is a purely visual change detached from the UI processing, akin to CSS's transform property. Again using a button hover effect as an example, keeping the input area unchanged prevents the very common issue of a button jittering up and down as it goes in and out of hover when the cursor is on the edge. Having an alternative solution for this may be nice, but not as a part of this PR.

Pushed more changes. Additional property hints and some fixes for multiple children.
I ran into more problems though.
https://github.com/user-attachments/assets/d7fc8517-14bb-477a-9ec3-50c058064638
Like this label which is shrunk to the center. It has pivot of 0.5, 0.5, but it's centered around its own center (as if it was anchored to the top). Probably not expected behavior.

Flickering when resizing
Can't see the effect in the running game no matter how hard I try with a nested ColorRect. Possibly related to 1?

They are indeed the same issue. For some reason the Control will reset its transform after sorting. Another case when this happens is when you add a new Control to a transformed TransformContainer. The transform will not apply immediately. Not sure how to solve that yet.

I understand this is a purely visual effect but would go hard if it supported input too. Unless documented this will probably be reported as a bug at some point

Added a mention in the doc.

Perhaps a dropdown to select the order of operations? Would also be nice to be able to offset in a different order to move the thing in "orthographic projection"

I'm not familiar with transforms, if you can suggest list of available options and their effect I can add them.

I agree with passivestar that the skewing behavior is unintuitive and that it should be under an option, or simply removed.

The skewing behavior is not intended. It's some transform magic gone wrong.

I'm not familiar with transforms, if you can suggest list of available options and their effect I can add them.

if you see skewing as a bug and intend to fix it you can just ignore that comment because it's not that relevant without skewing

I concur with @torcado194 that the implementation of a separate node for offsetting render transforms is annoying from a developer perspective, except significantly moreso than MarginContainers.
Consider a common case with say, 4 buttons setup in a VBoxContainer. To implement any interesting animations on them (hover effects, slide-in on appear, etc) each of those buttons now requires a separate TransformContainer in-between, which conflicts with any script anticipating Button children in the VBoxContainer. Adding these containers and patching scripts to support them makes iteration very slow -- this situation is OK for MarginContainers (they wrap over the VBoxContainer instead), but Containers are a headache to attach between existing, dynamic elements.
Also, compare TransformContainer to the current approach of implementing UI animations in Godot: add a parent Control in-between the VBoxContainer and the Button to serve as layout, and then manipulate the transform of the Button instead. TransformContainer directly mimics this process and does not address most of its problems.
I agree that a separate container like this is indeed the most efficient way to introduce UI animations. However, I worry that it stems from undervaluing how critical supporting convenient UI animations is for producing robust, responsive game UI. Since it has been shown that the overhead in the editor scene is negligible (0.18% more heap memory in the editor scene, according to the other PR), I find it preferable if it is implemented as properties (to me, the convenience greatly outweighs the seemingly minimal costs).

Also, compare TransformContainer to the current approach of implementing UI animations in Godot: add a parent Control in-between the VBoxContainer and the Button to serve as layout, and then manipulate the transform of the Button instead.

The main benefit is that TransformContainer has no problems with sizing that may come with using Controls. The transform is applied on top of existing layout, so if the container resizes, it does not break animations that may e.g. use absolute position values.

Since it has been shown that the overhead in the editor scene is negligible (0.18% more heap memory in the editor scene, according to the other PR)

That's only memory usage, but the other performance impact was not measured. Since all Controls have to process extra transform, it may impact startup time.

With that said, this PR is just another alternative for the same problem. Aside from #87081, there is also #95632. In the end we can merge only one of them and which one is still up to be decided.

The leading blocker to my approval of adding render transforms on Controls would be confusion between the different property systems. Performance overhead is not the leading blocker.


Some missing steps in dev setup

While configuring a new dev environment, I noticed a couple of steps missing.
First, at least on my Ubuntu 18.04 install, the mox3 module is missing as a dependency, so that had to be added to the pip install command (though, it looks like one of the unit tests in that package fails...).
Second, to run the gcloud emulator, the project name must be set.  A call to gcloud config set project <name> does the job, but is missing from the setup instructions.
I confess, I don't know a dang thing about the actual technical details of developing for gcloud, so I don't know the proper value to set for the project name (i.e., are there namespacing issues that have to be considered, or, if you don't plan to deploy to gcloud, is any ol' name suitable?), otherwise I'd put together a pull request to fix these two issues.
Edit:
It also looks like the dev_appserver wrapper hasn't been updated to support python3?

hey brett, sorry for the trouble, and thanks for the feedback! both great points. i didn't realize you needed to set the gcloud current project just to run the datastore emulator, but TIL.
these would both be great additions to the setup docs. any interest in filing a PR? mox3~=0.28 would be the right addition to requirements.txt, to match granary and oauth-dropins, and you can set the project to brid-gy. (you're right though, bridgy doesn't do anything special with the current project, so any name should be fine.)
feel free to grab me in indieweb chat too if you want!

BTW, my life got a little crazy this week so I haven't had a chance to get back to this, but I can certainly throw a PR together to make those changes!
Should I file a separate issue around the lack of python3 support for dev_appserver, or is that already on the radar somewhere?

thanks again @fancypantalons!


html2ts should honor outDir setting

When generating a .ts file from .html it should be stored in the configured outDir (if there is one configured).
At the moment, the .ts file is generated in the source directory, only the derived .js and .map files are stored in the outDir correctly.
If using outDir for that is not an option, maybe one could introduce a separate option for that (e.g. 'htmlOutDir')?

Valid point. I personally don't use outDir so it hadn't occured to me that this may be necessary, but I'll make changes to honor outDir.

Btw, i just checked the source, and "htmlOutDir" is already a valid option.

At least "htmlOutDir" has no effect in my case...

I'll test it later this week. Thx for reporting!
On Tue, Aug 4, 2015 at 2:20 PM Tobias Henöckl<EMAIL_ADDRESS>wrote:

At least "htmlOutDir" has no effect in my case...
—
Reply to this email directly or view it on GitHub
https://github.com/TypeStrong/grunt-ts/issues/271#issuecomment-127581557
.

This will be fixed in #275 when that is complete (still work-in-progress).

Hello, @hoeni - Would you please try<EMAIL_ADDRESS>and let me know if it resolves your issue?  Please note that this is a significant rewrite of the options resolution logic so it may have other issues.  Let me know if you see anything.

This should be corrected in v5, just released to npm.  Please reopen if not.

Sorry, I didn't find the time yet to test it yet. I'll reopen if there are any issues!

No worries!  Thanks for the report.


Robot loading unit-test - [merged]

In GitLab by @cmastalli on Jan 25, 2019, 00:55
Merges robots-unittest -> topic/refact
It provides a test file for CI jobs.

In GitLab by @nmansard on Jan 25, 2019, 08:26
I believe we can remove the " if main". Or only keep it for verbosity?

In GitLab by @nmansard on Jan 25, 2019, 08:26
Could you make a simple nq,nv sanity check for each model?

In GitLab by @cmastalli on Jan 25, 2019, 09:26
changed this line in version 2 of the diff

In GitLab by @cmastalli on Jan 25, 2019, 09:26
changed this line in version 2 of the diff

In GitLab by @cmastalli on Jan 25, 2019, 09:26
added 1 commit
e2697622 - [unittest] nq,nv sanity check for each robot model
Compare with previous version

In GitLab by @cmastalli on Jan 25, 2019, 09:29
I included the nq,nv sanity check as suggested.
However, for some reason, talos_reduced_v2.py creates a memory corruption during the loading process. Instead talos_reduced.urdf works well.
@rbudhira -- do you any idea? I installed talos-data v0.021.r2

In GitLab by @cmastalli on Jan 25, 2019, 09:29
Please see that I added these sanity checks!

In GitLab by @ostasse on Jan 25, 2019, 09:40
Note that our robot is talos_reduced_v1 and has reduced limits on the shoulder arm_right_1

In GitLab by @cmastalli on Jan 25, 2019, 09:46
@ostasse I don't see talos_reduced_v1 inside the repository. I just see talos_reduced.urdf and talos_reduced_v2.urdf.
Could you let me know if you refer to talos_reduced.urdf as talos_reduced_v1.urdf?

In GitLab by @ostasse on Jan 25, 2019, 09:50
yes you are right talos_reduced.urdf is talos_reduced_v1.urdf (the one for our robot).
v2 are for the newest version of Talos.

In GitLab by @cmastalli on Jan 25, 2019, 10:09
added 1 commit
b74ca36d - [robots] Loading talos_reduced.urdf instead of talos_reduced_v2.urdf
Compare with previous version

In GitLab by @cmastalli on Jan 25, 2019, 10:11
I use the unittest environment which is nicer!

In GitLab by @cmastalli on Jan 25, 2019, 10:11
resolved all discussions

In GitLab by @cmastalli on Jan 25, 2019, 10:12
Done! I load the talos_reduced.urdf
@nmansard -- please proceed with the merging process. All discussions were resolved

In GitLab by @nmansard on Jan 25, 2019, 10:27
merged

In GitLab by @nmansard on Jan 25, 2019, 10:27
mentioned in commit e086e7e145c92f00b70dce38584a0ec835017e87


Use of stack layout X accessor

I am clear about the actual usage of X accessor in stack layout. Though i gave x-accessor, stacking was   applied based on index.
var layers = [
  {
    "name": "apples",
    "values": [
      { "x": "a", "y":  91},
      { "x": "b", "y": 290}
    ]
  },
  {
    "name": "oranges",
    "values": [
      { "x": "b", "y":  9},
      { "x": "a", "y": 49}
    ]
  }
];

var stack = d3.layout.stack()
    .x(function(d){return d.x})
    .y(function(d){return d.y})
    .values(function(d) { return d.values; });

Here i have give x-accessor, See  in the second layer "orange" order of x value is not as same as order of x values in first layer . But stacking of data was only by index, not by "x".

Stack values are always grouped by index. The purpose of the x-accessor is only to compute the derivative when using the “wiggle” offset. There was already some information about this in the API reference, but I’ve just edited it to hopefully make it clearer. Thanks for the report.


Publish 84855 84630

I requested two changes in the edits you've made. Please can you also move Sent for peer review under Posted to bioRxiv in the object for 10.1101/2<IP_ADDRESS>4241? I missed this yesterday and it needs fixing ahead of publication.
Otherwise LGTM, thanks!

All changes are done, also timeline items for 10.1101/2<IP_ADDRESS>4241 are in Chronological order. Please let me know if you have more comments. Thanks!

Nice one - thanks!

Nice one - thanks!

Thanks you! I will revert the last change for 10.1101/2<IP_ADDRESS>4241 and will create a new PR for it, it is fine for you?

Sure :+1:

Sure 👍

Thank you! You can find here the new PR for chronological timeline


[WIP] Fix svcat version command & add tests

Dealing with #2092

[x] Fix version command
[ ] Add tests

Edit: Oops linked wrong issue id

Due to a bug in our travis file, this PR must be rebased in order to get the CI build to run for this PR.
/label needs-rebase

@carolynvs the rebase went so bad i guess

Let me know if you'd like help with the rebase!

I dont know how but it worked 🥇

@A-Hilaly Your merge worked just fine 👍 , when your PR is accepted and merged, all the commits will be squashed and just the changes that you see in the Files tab of the PR will end up being included.
Now that the CI build has run on your PR, there is a build error that needs to be addressed:
https://travis-ci.org/kubernetes-incubator/service-catalog/jobs/392480016#L736

@carolynvs Thanks for clarifying !
I fixed the changed the header boilerplate.

@A-Hilaly After digging into the fakes provided by our generated clientset, I've come to realize that it's not possible to fake the server returning an error when querying the ServerVersion() at this time.
https://github.com/kubernetes/kubernetes/blob/a9e244d81f05d1fa6965f33b9a3ec04cce6d058f/staging/src/k8s.io/client-go/discovery/fake/discovery.go#L111-L123
Sorry for not investigating if that was possible sooner! 😞
So the tests you have right now are the best we can do. Let's just remove the commented out test and any TODO's, and ship this. :shipit:

/retest

Tests passed now ! i got this wierd error before :
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received


How to load models from S3

Hello Team,
We want to run litserve on a single machine. The catch being we want to load models from S3.
The model file path and the model name needs to be read from a config file.
Want to understand if there is a way to enable such a model registry in order to register the model for inference without having to explicitly hardcode the path in the inference class itself?

hi @AbhishekBose, you can read the config file and load the model in setup method.
import litserve as ls

class CustomAPI(ls.LitAPI):
    def setup(self, device):
        model_path = read_config()
        self.model = load_model(model_path)

    ...

@aniketmaurya If I have to register a new model at runtime? Is that possible or do I have to restart the server every time I onboard a new model or a new version of the same model?
I am mentioning from a context of torchserve where we can register the models and their versions with the number of workers specified through a register model api at runtime.

@aniketmaurya Currently we serve pythonic workflows as a sidecar application to our main ML service platform application. In that regard, it becomes a difficult to redeploy updates every time there's a change. We were thinking if would be possible to register the serving class in some manner at runtime itself.
This makes the model deployment experience completely self served for the Data scientists in concern. They can test just the model on their local machine and the push it to the server.

@aniketmaurya it is quite simple in PyTorch: https://github.com/oobabooga/text-generation-webui/blob/d1af7a41ade7bd3c3a463bfa640725edb818ebaf/modules/models.py#L391

@aniketmaurya Currently we serve pythonic workflows as a sidecar application to our main ML service platform application. In that regard, it becomes a difficult to redeploy updates every time there's a change. We were thinking if would be possible to register the serving class in some manner at runtime itself. This makes the model deployment experience completely self served for the Data scientists in concern. They can test just the model on their local machine and the push it to the server.

@AbhishekBose you can use a callback to detect file change and reload the model.
@cyberluke LitServe is a generic serving framework and it is not limited to a particular ML library like PyTorch.


Add some notes about viewing bindings output.

I found this helpful when debugging, so I thought others might too.

ci failure is spurious.

👍


Adding more fallbacks for BufferingHelper temporary folder location

Fixes:
https://github.com/aspnet/HttpAbstractions/issues/168

:shipit:

updated the PR.

:shipit:

merged https://github.com/aspnet/HttpAbstractions/commit/a6670114b16c90295af312427f05420fc9a63763


Add Zoom Effect to Images with Class .menu on Hover

Description

Related Issues

Closes #

Type of PR

[ ] ()

Screenshots / videos (if applicable)

Checklist

[x] I have gone through the contributing guide
[x] I have updated my branch and synced it with project main branch before making this PR
[x] I have performed a self-review of my code
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.

Additional context:

Thank you! @Anjaliavv51

@harshpareshbhaigosalya full the PR description properly.

Please consider this issue under the GSSoC Extended and Hacktoberfest Accepted tags.

Please consider this issue under the GSSoC Extended and Hacktoberfest Accepted tags.

Enter the issue number in PR description and place screenshot of your changes too


SD V1.5: disable Flash-attention by default

Because of the risk of oom on 910A of sdv1.5+ FA, we should change the default setting and leave the option to the user.

Please resolve the conflict


Add CodeQL security scan for KM (only) to CI workflow

Update workflow to include CodeQL extended security scan as part of regular CI flow.
Fixes #1510

In the initializing codeql step there is a warning:
Warning: 1 issue was detected with this workflow: Using on.push.paths-ignore can prevent Code Scanning annotating new alerts in your pull requests.
Is this expected?


fix: add keys to tags and split license notice by lines

Description
Tags inside formatMessage.rich calls need to be given key attributes or else the console complains. This required the License section to get broken into paragraphs so each of the <p> elements in it could have a unique key.
Task Item
closes #7382

Coverage decreased (-0.005%) to 50.867% when pulling fb20b0bbf02a62a678b18a4202eef1eb1b70d65c on beyackle/7382_keysInAbout into fd7a2cfb8d4d2cacb648b9ea7864a3fc8b038721 on main.


Incorrect url in v2ray-core.rb

Open https://github.com/v2ray/homebrew-v2ray/blob/master/Formula/v2ray-core.rb
The ttps should be https:
version "ttps://api.github.com/repos/v2ray/v2ray-core/releases/22545481"

As a pre release, you can actually wait for the update

Fixed by 9f0e420


Fix for #792

Allow deny clauses for subscriptions to still allow wildcard subscriptions but do not deliver the messages themselves.
Signed-off-by: Derek Collison<EMAIL_ADDRESS>
[X] Link to issue, e.g. Resolves #792
[ ] Documentation added (if applicable)
[X] Tests added
[X] Branch rebased on top of current master (git pull --rebase origin master)
[ X] Changes squashed to a single commit (described here)
[X] Build is green in Travis CI
[X] You have certified that the contribution is your original work and that you license the work to the project under the Apache 2 license

Resolves #792
Changes proposed in this pull request:
/cc @nats-io/core

LGTM. We could cleanup clientHasMovedToDifferentAccount() if now users and client accounts are never nil, but should work the way it is.


Embedding fonts in SVG export

I'm using SVG exported images from excalidraw. I use the hand-draw font in many of them.
Then I use those SVG inside an HTML source (generated by gitlab markdown... so I can't, for example, directly embed SVG in there... img tag is my only choice).
What I noted: it seems that when SVN is included with the img tag, browsers are not downloading external fonts.
I tried the same embedding fonts directly (I'm not an expert, I just followed https://css-tricks.com/using-custom-fonts-with-svg-in-an-image-tag/)... and it works. So it seems that when an SVG image contains embedded fonts the image is properly displayed by browsers (tested Firefox, Chrome and Safari so far).
I'm wondering if this can be a new feature for Excalidraw, something like a new "Embed fonts in SVG" export option.

Duplicate of #1972?

@dai-shi thanks, seems the same feature request


WSL2 docker-compose not working

Microsoft Windows [Version 10.0.18917.1000]
*WSL
NAME            STATE           VERSION
Ubuntu-18.04    Running         2

I'm trying to use docker compose
Compose file:

services:

  zookeeper:
    container_name: ${COMPOSE_PROJECT_NAME}_zookeeper
    image: mbabineau/zookeeper-exhibitor
    restart: on-failure
    environment:
      HOSTNAME: "localhost"
      ZK_DATA_DIR: "/opt/zookeeper/snapshots"
      ZK_LOG_DIR: "/opt/zookeeper/transactions"
    ports:
      - "${ZOOKEEPER_PORT}:2181"
      - "8181:8181"
      - "2888:2888"
      - "3888:3888"
    volumes:
      - zookeeper_transaction_data:/opt/zookeeper/transactions
      - zookeeper_snapshot_data:/opt/zookeeper/snapshots
    networks:
      - development

networks:
  development:
    driver: bridge
    driver_opts:
        com.docker.network.bridge.name: developer-net
volumes:
  zookeeper_transaction_data:
  zookeeper_snapshot_data:

What's wrong / what should be happening instead:
A container stays in restarting state and I see the following in docker logs:

time="2019-06-12T21:40:38.084487200-07:00" level=info msg="shim containerd-shim started" address="/containerd-shim/moby/6fd4d3d517766a4e4f44ae3ea32c5a5048b817a7c1a1b42db367e3bb1eb67cdf/shim.sock" debug=false pid=9761
time="2019-06-12T21:40:38-07:00" level=warning msg="Running modprobe nf_nat failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.43-microsoft-standard/modules.dep.bin'\nmodprobe: WARNING: Module nf_nat not found in directory /lib/modules/4.19.43-microsoft-standard`, error: exit status 1"
time="2019-06-12T21:40:38-07:00" level=warning msg="Running modprobe xt_conntrack failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.43-microsoft-standard/modules.dep.bin'\nmodprobe: WARNING: Module xt_conntrack not found in directory /lib/modules/4.19.43-microsoft-standard`, error: exit status 1"
time="2019-06-12T21:40:38.575774000-07:00" level=info msg="shim reaped" id=6fd4d3d517766a4e4f44ae3ea32c5a5048b817a7c1a1b42db367e3bb1eb67cdf
time="2019-06-12T21:40:38.594109600-07:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
time="2019-06-12T21:40:38.614476500-07:00" level=warning msg="Failed to delete conntrack state for <IP_ADDRESS>: invalid argument"

I believe we recently added nf_nat to our kernel config, this should be resolved in a future Insider build.

What about xt_conntrack it says it's missing as well.

I'm looking into adding that one as well.

Yep, there are a few things missing in the Kernel config for some docker networking scenarios. @benhillis when will the kernel be on a github repo so that we can contribute patches ?

The root cause for this not working was not a missing kernel module. But old version of the image which needed

The root cause was an old image docker was using. Which required vsyscall=emulate. Solved by updating the underlying alpine version.


Make 'enable direnv' step more obvious

I got stuck on direnv magically not seeming to do anything after setting everything up. It took me a while to realize that I missed the "enable direnv according to its instructions" step (assuming that the Nix expression would do that for me), as it was a relatively unnoticeable footnote.
This PR changes that, by making enabling it a clear and discrete step in the setup process.

Looks good thanks.
Merging, the CI error is because of an update of cargo fmt which adds something to the lock file.


Suggestion for when want to select each nested-fields div in jquery

In almost all applications I have done, because of some additional changes I add to each nested_form div, such as collapsing, expending, moving around etc, I needed to select each div for itself in jquery.
I'm not sure if there is already a way to do it in cocoon gem, but a workaround I do is to get id from one my inputs and apply that as data to nested_form div or other parts I wanted to add changes too.
My workaround:
- field_title = f.input :title
// I do this sometimes when I can't select the ID
- tab_id = field_title.match(/id="(?<id>[^"]*)"/)

.nested-fields
  .panel{data: {div: "#{field_id_id}".tr('"=', '')}}
     // Other parts

Is this a good idea and maybe would be great to have a such div selector in the gem.
Great gem 👍

Sorry for keeping this open and unanswered for so long. This seemed more like a hint and not an actual question (?)


PR review edits from public repo PR

PR review edits to second file in https://github.com/MicrosoftDocs/architecture-center/pull/2657 (merged). Thanks!

Thanks! :)


downloaded wikidataset not connected or library not found

When I use the following code:
`# pip install spacy-entity-linker
python -m spacy_entity_linker "download_knowledge_base"
import spacy
nlp = spacy.load("en_core_web_md")
nlp.add_pipe("entity_linker", last=True)
doc = nlp("I watched the Pirates of the Caribbean last silvester")
all_linked_entities = doc._.linkedEntities
for sent in doc.sents:
sent._.linkedEntities.pretty_print()`
I get: 'ValueError: [E139] Knowledge base for component 'entity_linker' is empty. Use the methods kb.add_entity and kb.add_alias to add entries.'
I might need to add the downloaded KG somewhere but it is nowhere stated.
The original code states that add.pipe should be:
nlp.add_pipe("entity_linker", last=True)
But then i get the error: '
ValueError: [E002] Can't find factory for 'entityLinker' for language English (en). This usually happens when spaCy calls nlp.create_pipe with a custom component name that's not registered on the current language class'
Where are things going wrong?

Hi @defreeze ,
Thank you for your interest in this package. You are doing everything right, except for one small detail:
When you add the pipeline component, you are invoking entity_linker instead of entityLinker:

when you call nlp.add_pipe("entity_linker", last=True) you are adding SpaCy's default trainable entity linker, which is empty https://spacy.io/api/entitylinker
instead if you call nlp.add_pipe("entityLinker", last=True) you will add the module developed here which is linked to the knowledge base you downloaded already

Maybe the name of this pipeline component should be made more distinguishable to avoid confusion.
Let me know if this solves your issue!
Martino

thanks for the response! I made a typo in my question here:
The original code states that add.pipe should be:
nlp.add_pipe("entityLinker", last=True)
But then i get the error: '
ValueError: [E002] Can't find factory for 'entityLinker' for language English (en). This usually happens when spaCy calls nlp.create_pipe with a custom component name that's not registered on the current language class'
So i did try the correct naming and i got the above error. This happened for 2 days.
Now after your comment i tried again, and it actually works now!? No idea why, i made no changes but i do not get the error.
Ill try to see if the error happens again and then update this threat.
Thanks for the answer, it does seem to work correctly now.

@defreeze ,
You're welcome!
Maybe you were in the wrong python environment. For that line to work, the package needs to be installed and updated in the current environment.
Let me know if you have further issues :)
Martino

With the updated version v1.0.3, PR #17 was merged.
As a result, the database will be automatically downloaded if it is not found.
I am closing now this issue as it is fixed.
Best,
Martino

I actually still have this problem!
I'm running on colab:
import spacy
!pip install spacy-entity-linker
!python -m spacy_entity_linker "download_knowledge_base"
!python -m spacy download en_core_web_md

import spacy  # version 3.5

# initialize language model
nlp = spacy.load("en_core_web_md")

# add pipeline (declared through entry_points in setup.py)
nlp.add_pipe("entityLinker", last=True)

And get:

ValueError: [E002] Can't find factory for 'entityLinker' for language English (en). This usually happens when spaCy calls `nlp.create_pipe` with a custom component name that's not registered on the current language class. If you're using a Transformer, make sure to install 'spacy-transformers'. If you're using a custom component, make sure you've added the decorator<EMAIL_ADDRESS>(for function components) or<EMAIL_ADDRESS>(for class components).

Available factories: attribute_ruler, tok2vec, merge_noun_chunks, merge_entities, merge_subtokens, token_splitter, doc_cleaner, parser, beam_parser, lemmatizer, trainable_lemmatizer, entity_linker, ner, beam_ner, entity_ruler, tagger, morphologizer, senter, sentencizer, textcat, spancat, spancat_singlelabel, future_entity_ruler, span_ruler, textcat_multilabel, en.lemmatizer

@dersuchendee restarting the kernel helps


finalized edited

removed variable
using an absolute path instead of a relative one
returning HTML format
verified using pip3 and not pip2

Is it a new PR? Why?
There is no reason to close PR with comments and create a new one. You can update an existing one.

@flippy1989 ❤

@flippy1989 ❤


pub documentation doesn't mention the web directory

This issue was originally filed by<EMAIL_ADDRESS>
I'm looking at (http://pub.dartlang.org/doc/package-layout.html), and I don't see any mention of web. I thought that it was common to have a web directory at the same level as lib.

This issue has been moved to dart-lang/pub#298.


adds  to the the travis.yml closes #9

Hope this is good. :)

Looks good. thanks! (note: you can assign PRs to anyone in the org!)


1.bundle.js:81 Uncaught (in promise) Error: Cannot find module './aurelia-auth/auth-filter'.

I ran the example as per the instructions but the AureliaAspNetApp fails to load.
It gets as far as showing 'Aurelia Navigation Skeleton'
The debugger presents the error
1.bundle.js:81 Uncaught (in promise) Error: Cannot find module './aurelia-auth/auth-filter'.

To get this working I used @rmja's solution.  I edited the package.json in 'AureliaAspNetApp'.
and added
"aurelia": {
    "build": {
      "resources": [
        "aurelia-auth/auth-filter"
      ]
    }
  }

After performing an NPM run Build this caused the bundle1.js file to be regenerated with
	var map = { 		"./app": 8, 		"./app.html": 30, 		"./aurelia-auth": "aurelia-auth", 		"./aurelia-auth/auth-filter": 29, 		"./aurelia-auth/auth-filter.js": 29,


Write a function to calculate free energies between states as a function of T.

You should take the fraction_contacts_expectation function in secondary_structure.py as the example.  Instead of passing in a native contact list and a distance cutoff, you pass in a general function of structure (can be anything) that returns one of a list of integers, each integer representing a different configurational state.
Most of the code remains the same.  You calculate the weights at each of the thermodynamic states of interest.  Instead of calculating expectation averages, you calculate the free energy by summing all of the weights (which can be obtained using methods of the pymbar class) corresponding to these discrete integers.  Sum all of the weights that correspond to each integer.  This is the total probability of each state.  The free energy difference between the two states at each temperature will then be ln (sum over weights with category 1 ) /  (sum over weights with category 2 )
Uncertainties in these free energies are a bit more complicated.  It's probably easiest for now to estimate them by propagation of error from ln(p/1-p), assuming that p is distributed by the Bernoulli distribution (https://en.wikipedia.org/wiki/Bernoulli_distribution), and there are only two states.  Given p distributed by the bernoulli distribution, there should be an analytical formula for the distribution of ln(p/(1-p)).  I'll think about it a bit more if there is a better method. Eventually we can validate this by doing bootstrap sampling.

I was talking with @cwalker7, and I think it's a little easier.  Have an indicator function for each configurational state such that it's 1 if it belongs to that configurational state (unfolded, folded A, folded B), and calculate the expectation of that function.  That will give unnormalized probabilities with uncertainties.  The free energy is -kBT log (/< state B>), and the error can be calculated by error propagation of the log ratios.  Note that the uncertainties are correlated since the indicator functions must sum to one, but there are formulae for this.

So, sketching this out a bit more completely:

Start with the "fraction of native contact" code ("expectations_fraction_contacts" in foldamers/parameters/secondary_structure.py
Instead of taking a list of contact pairs, it should take either 1) an array of integers len(number of frames), which classified each structure into one of n states or 2) a custom function that takes as input a structure and outputs an integer (which classifies into one of n states)
Rather than calculating the expectation of Q, calculate the N expectations that the current structure label is equal to n.
All expectations states should be calculated simultaneously (i.e. a vector of expectations calculated simultaneously), since they will be correlated, and you want to get the correlations in the uncertainties included in the calculation.  I think this SHOULD be supported.  They are correlated since you can only be in one state at a time. If there are only 2 states, then this can be done easily afterwards, since the probability of being in one state is just the probability of not being in the other.  Call these expectations <1>,<2>, etc.
The free energy difference between two states i and j will just be -kBT log (/)
Uncertainties are the uncertainties in kBT log-log, and var(kbT log - log) = kBT^2 [var log  + var log  - covar(log i, log j).  the pymbar code actually is generating the log i, log j covariance matrix, and then converting it into expectations  and , so this information can be obtained out of the pymbar with the right commands (I may have to dig that out


Installing hurry-filesize (0.9) fails with VenvCommandError: No matching distribution found

For install of news-please package ( #95 ), with local .venv which is python3.6 :

Installing hurry-filesize (0.9)
[VenvCommandError]
Command ['pip', 'install', '--no-deps', '-r', '/tmp/hurry-filesize-0.9itkt20w9reqs.txt'] errored with the fol
lowing output:
Collecting hurry-filesize==0.9 (from -r /tmp/hurry-filesize-0.9itkt20w9reqs.txt (line 1))
Could not find a version that satisfies the requirement hurry-filesize==0.9 (from -r /tmp/hurry-filesize-0.
9itkt20w9reqs.txt (line 1)) (from versions: )
No matching distribution found for hurry-filesize==0.9 (from -r /tmp/hurry-filesize-0.9itkt20w9reqs.txt (line
1))

Poetry

Version: 0.10.0-alpha.0
Python:  3.5.3

Virtualenv

Python:         3.6.2
Implementation: CPython
Path:           /Projects/newsloader/.venv

System

Platform: linux
OS:       posix

P.S. The correct package name is "hurry.filesize"

(This is another instance of #109 )

Could you try this patch: https://github.com/sdispater/poetry/pull/115
I believe that fixes the issue.

This can be closed now that #115 is merged.


fix: use user timezone for conference expiration date

Up to now, we used server timezone everywhere (set to 'Europe/Paris' by default).
This means that conferences booked for a give day expired at 23:59, Paris time, on the given day. This could cut off a conference earlier than a user expected.
This PR gets the user timezoneOffset (e.g. for GMT+1, timezoneOffset is -60), stores it in the loginToken table, and uses it to set an expiration date in the right timezone.
Known issue : we use timezoneOffset rather than timezone (e.g. Europe/Paris), so when we change from summer to winter time, conferences booked before the time change that take place after the time change will end at 11pm or 1am, rather than midnight. I ignored this. :)
Left for later : display all times in the user's timezone, in the interface and the emails. This is trickier than expected, and with current featureset (conferences booked for whole day) it's only used for logintoken expiration dates. I would rather push this fix to prod fast since it can cut off conferences for users.
Edit : to use date-fns, we would have to use the name of the timezone (e.g. 'Europe/Paris'), and it would handle the change to summer/winter time.
But the JS native way of getting the timezone is not supported on IE : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions
So I am not using it.

Merci pour la review ! J'ai fait les changements.
Le bon default pour userTimezoneOffset c'est bien -60 : c'est la valeur pour la metropole, heure d'hiver. (maintenant quoi!) C'est la valeur la plus probable.

Je reteste ca a la main demain, et ensuite je merge.


Contributing.md still references discussions page

First line:
Answering issues, participating in discussions

Do you want to give it a fresh spin @davidgarywood ?

Also the link to ADR is broken


'Cannot read property 'toString' of null.' when starting debugger for second+ time

Issue Type
Bug
Description
Steps to Reproduce:

Have project open, with "console" in debugger launch configuration set to "integratedTerminal"

Start debugging the program (F5), then quit the application (ex. by using Ctrl-C). Keep the Node Debug Console open.

Try debugging the program again (F5)

OR

Start debugging the program (F5), then click on the Restart button

Expected:
Debugger and program should load like it does in step 2
Actual:
This error occurs:
TypeError: Cannot read property 'toString' of null
at Function.e.isBusy (terminalSupport.ts:56)
at Function.e.runInTerminal (terminalSupport.ts:38)
at _.dispatchRequest (rawDebugSession.ts:393)
at _.e.dispatch (v8Protocol.ts:148)
at _.e.handleData (v8Protocol.ts:104)
at Socket. (v8Protocol.ts:41)
at emitOne (events.js:96)
at Socket.emit (events.js:191)
at readableAddChunk (_stream_readable.js:178)
at Socket.Readable.push (_stream_readable.js:136)
VS Code Info
VS Code version: Code 1.20.0 (c63189deaa8e620f650cc28792b8f5f3363f2c5b, 2018-02-07T17:09:39.780Z)
OS version: Windows_NT x64 6.1.7601

System Info

Item
Value

CPUs
AMD Phenom(tm) II X6 1090T Processor (6 x 3199)

Memory (System)
16.00GB (10.01GB free)

Process Argv
C:\Program Files\Microsoft VS Code\Code.exe

Screen Reader
no

VM
0%

Reproduces without extensions

I cannot reproduce this problem.
Did you configure the integrated terminal in any way, e.g. by setting a special shell via the "terminal.integrated.shell.windows" setting?


Proper deobfuscation mapping file format

Adds support for exporting manually renamed classes/methods/fields etc. in the Tiny v2 format, which is the most versatile out there and can handle a lot more features than JADX's default .jobf format. For more details, see its spec.
Depends on FabricMC's mapping-io library, which theoretically allows JADX to support many more formats in the future.
This PR doesn't add Tiny v2 import support yet, as I don't need it personally atm, but it can be easily added later when needed.
Fixes #1491.
Currently working:

[x] Exporting classes
[x] Exporting fields
[x] Exporting methods
[x] Exporting method args
[ ] Exporting method vars
[x] Exporting comments

@skylot It's almost done now, but I need some help with the method args. How can I access them? I looked around the code, but couldn't find a solution. I mean, there's methodInfo.getArgsCount() and such, but I don't just need the arg count/types, but their old and renamed names, too!
I've tried adding something like this in between here, but it obviously doesn't work (What even are RegisterArgs?):
boolean wasLoaded = mth.isLoaded();
try {
    mth.load();
    for (RegisterArg arg : mth.getArgRegs()) {
        if (mappedMethodArgsAndVars.contains(methodInfo.getDeclClass() + methodInfo.getShortId())) {
            mappingTree.visitClass(classPath);
            mappingTree.visitMethod(methodName, methodDesc);
            mappingTree.visitMethodArg(arg.getRegNum(), 0, arg.getName());
            mappingTree.visitDstName(MappedElementKind.METHOD_ARG, 0, arg.getName());
        }
    }
} catch (DecodeException e) {
    LOG.error("Error while decompiling method " + methodInfo.getShortId());
}
if (!wasLoaded) {
    mth.unload();
}

Thank you! I've already gone down another route, which also works well so far, only issue is that
for (RegisterArg arg : mth.getArgRegs()) {
    arg.getSVar()
}

always returns null. Is there another way to access the arg's SSAVar? I need it to calculate the index for a new JadxCodeRef so I can compare it with the existing saved one (see my code here: JadxCodeRef)

Thank you for the help, method args work now :) One question though: What's the reason for using getTopParentClass() instead of getParentClass() here?
https://github.com/skylot/jadx/blob/fa41874e303f3570de389c118f59444a1139e948/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java#L118

How would I do the same for method vars? I guess I would have to replace the > lineEndPos check here with > methodEndPos, but I don't know how I can get that information (where the method ends / how big the method is):
https://github.com/skylot/jadx/blob/fa41874e303f3570de389c118f59444a1139e948/jadx-gui/src/main/java/jadx/gui/ui/codearea/FridaAction.java#L123-L124

I think you can stop if mth in VarNode became different, i.e. !varNode.getMth().equals(methodNode).
In  collectMethodArgs method I use that check just to be sure, but it not really needed.

Good idea! I still need to get a few properties from the resulting VarNodes, and I'm not sure how. For one, I need the var's offset to be able to use JadxCodeRef.forInsn(varOffset) on it. And mapping-io requires that I provide the method var's lv-index and lv-start-offset aka start-op-code:
<lv-index> refers to the local variable array index of the frames having the variable, see "index" in JVMS SE 8 §4.7.13
<lv-start-offset> is at most the start of the range in which the variable has a value, but doesn't overlap with another variable with the same <lv-index>, see "start_pc" in JVMS SE 8 §4.7.13. The start offset/range for tiny is measured in instructions with a valid opcode, not bytes.

For the local variable index already have code (which I think works correctly), see here:
https://github.com/skylot/jadx/blob/235991fb9c35136f0f8489125821a5d6c8e2999b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java#L254
https://github.com/skylot/jadx/blob/235991fb9c35136f0f8489125821a5d6c8e2999b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java#L265
And I'm not sure if there's an easier way provided by JADX. I have no idea yet how I can get the lv-start-offset

I need the var's offset to be able to use JadxCodeRef.forInsn(varOffset) on it

Offset stored in metadata annotation with type OFFSET and attached to line start, so offset on line before variable declaration is what you need.

method var's lv-index and lv-start-offset

Variables array can be acquired using MethodNode.getDebugInfo().getLocalVars() next use getStartOffset for lv-start-offset and getRegNum() - argsStartReg for lv-index (you can add getter for argsStartReg field in MethodNode). But be aware that getDebugInfo() can return null if debug info is not available.
Also, if you want to check the code, you can start at reader of vars attributes here.

Can I use the localVariable.getStartOffset() directly instead of looping through the class's code metadata looking for the OFFSET annotation?

Can I use the localVariable.getStartOffset() directly

You can, but I am not sure how you will match it with VarNode, because there are can be several variables with same reg num. Anyway, looks like your format can't handle such cases, so we can't do much here.

use [...] getRegNum() - argsStartReg for lv-index

Are you sure? I have this static method:

And since it's static, the local variable index should start at zero, meaning that the lv-index for key would be 0 and for value 1. Using your suggested code:
int lvIndex = varNode.getReg() - methodNode.getArgsStartReg();

I get this:

Which I don't think is correct, is it? 🤔

there are can be several variables with same reg num

In which case?

Well, I can be miss something, that is why I give you a link to a code jadx using to read these values :slightly_smiling_face:
And you can check bytecode and docs for api you are using.
Also, do you know any other tools to work with this format, can you compare or apply/check your output?

In which case?

I don't know, but this can happen.

Enigma (download) can do everything except method vars. Using it on the same app as JADX (after running it through dex2jar) and doing the same renames, I get the expected results:

In which case?

I don't know, but this can happen.

Tiny v2 allows specifying an optional lvt-index:
<lvt-index> is the index into the LocalVariableTable attribute's local_variable_table array, see "local_variable_table" in JVMS SE 8 §4.7.13, not to be confused with "index" referred by <lv-index>

Would this help in such edge cases?

I get the expected results

Wait, so you are trying to use format bound to java bytecode specific internals (check your lv-index doc) for dalvik bytecode? I think conversion can break that part.

Tiny v2 allows specifying an optional lvt-index:

I don't think this will help. Jadx can generate different from original code and use more variables, so it is expected that not all of them can be traced back to original.

Wait, so you are trying to use format bound to java bytecode specific internals (check your lv-index doc) for dalvik bytecode?

I know Java and Dalvik bytecode have a fair share of differences, but doesn't stuff like this carry over? 🤔 Guess I'll have to read the docs more thoroughly (or do you already know for sure there are differences?)

I don't think this will help. Jadx can generate different from original code and use more variables

Wouldn't this be a problem for JADX itself too? When I have old save files and the Java decompiler changes with new versions

or do you already know for sure there are differences?

Stack vs registers? Jadx actually convert stack to registers, that is why there is a minus part in getRegNum() - argsStartReg to undo that conversion (check this line)

Wouldn't this be a problem for JADX itself too?

It can, but ssa versions tied to CFG, and it needs a big change in jadx to break this.

Enigma can do everything

Thanks! I just tried Enigma, and it is very nice, why you ever need a jadx? :rofl:

Stack vs registers? Jadx actually convert stack to registers, that is why there is a minus part in getRegNum() - argsStartReg to undo that conversion (check this line)

Sorry if I'm a bit dumb here; I'm still no bytecode expert by any means. I didn't really get what's the difference between Dalvik and Java bytecode in this specific case, since we're just counting relative positions. In both Java and Dalvik, longs and doubles take up two registers, otherwise one:
https://github.com/skylot/jadx/blob/0c3afcc24cdc911667f373f3753223796cd46539/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java#L775-L783
I fortunately stumbled upon this wiki page which helped me understand the situation: https://github.com/JesusFreke/smali/wiki/Registers
So basically, for method arguments, Java bytecode starts counting at zero (for static methods) or one, and then counts up. Dalvik on the other hand starts at availableRegisters - argCount and always counts up all the way to availableRegisters.  This means conversion is still easy, and we could easily use the normal Tiny v2 format (according to Java conventions), so we 1) comply with the spec and 2) have the file more readable (every sane person would start counting at 0 or 1, not some arbitrary number). JADX can convert it back really fast when importing.
Method vars on the other hand are, as you said, quite suboptimal to implement, and frankly, I guess it's not worth the effort (at least for now).

just tried Enigma, and it is very nice, why you ever need a jadx? 🤣

Mostly because Enigma can't handle Dalvik bytecode, and I thought it's easier to add proper mapping support to JADX than to rebuild Enigma for work with APKs 😅 Also, JADX can do Smali debugging, which is needed for reverse engineering the YouTube app (over at @ReVanced)

Offset stored in metadata annotation with type OFFSET and attached to line start, so offset on line before variable declaration is what you need.

If I understand it correctly, this code should work, right?
private List<SimpleEntry<VarNode, Integer>> collectMethodVars(MethodNode methodNode) {
	ICodeInfo codeInfo = methodNode.getTopParentClass().getCode();
	int mthDefPos = methodNode.getDefPosition();

	List<SimpleEntry<VarNode, Integer>> vars = new ArrayList<>();
	AtomicInteger lastOffset = new AtomicInteger(-1);
	codeInfo.getCodeMetadata().searchDown(mthDefPos, (pos, ann) -> {
		LOG.info("Annotation: " + ann);
		if (ann instanceof InsnCodeOffset) {
			LOG.info("Annotation is CodeOffsetAnnotation");
			lastOffset.set(((InsnCodeOffset) ann).getOffset());
		}
		if (ann instanceof NodeDeclareRef) {
			ICodeNodeRef declRef = ((NodeDeclareRef) ann).getNode();
			if (declRef instanceof VarNode) {
				VarNode varNode = (VarNode) declRef;
				if (!varNode.getMth().equals(methodNode)) {
					// Stop if we've gone too far and have entered a different method
					return Boolean.TRUE;
				}
				if (lastOffset.get() == -1) {
					LOG.error("Couldn't determine the offset for a local variable, skipping");
					return Boolean.TRUE;
				}
				vars.add(new SimpleEntry<VarNode, Integer>(varNode, lastOffset.get()));
			}
		}
		return null;
	});
	return vars;
}

However, it always errors out with "Couldn't determine the offset for a local variable, skipping"

do you know a tool/library for remapping an entire APK?

Sorry, I don't know. Maybe only Threadtear (description mention that android support is coming soon, but still not).

I've also noticed that renamed elements do not carry over to the Smali code, would this be possible to implement eventually?

You mean in jadx? Current "plain" smali is shown using smali library from original files, so it doesn't have renames. But there is also a Show dalvik bytecode version (checkbox in popup menu) which is build on top of jadx IR, so it can show a renames.

Okay, we're approaching the finish line! Only one question and one issue left.
First, I noticed a discrepancy in this part:
https://github.com/skylot/jadx/blob/14fd88b2f8e3a18fe2bfb7a9cdece3451341a029/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java#L183-L189 Shouldn't makeAliasRawFullName also take getAliasPkg() and getAliasShortName() as the first two parameters? If not, then I need to create such a method nevertheless, how should I call it?
And my issue: Somehow, the offset I get from here:
https://github.com/skylot/jadx/blob/9ad0f93a53f6644b6164e5821fe722eb0e2d0f96/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java#L165-L189
is different from the offset that's saved in JADX's project data (JadxCodeRef), computed here:
https://github.com/skylot/jadx/blob/14fd88b2f8e3a18fe2bfb7a9cdece3451341a029/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentAction.java#L94-L103
Which prevents method var comments from being exported:
https://github.com/skylot/jadx/blob/9ad0f93a53f6644b6164e5821fe722eb0e2d0f96/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java#L318-L320

Shouldn't makeAliasRawFullName also take getAliasPkg() and getAliasShortName() as the first two parameters? If not, then I need to create such a method nevertheless, how should I call it?

Yeah, here should be alias pkg and name. Intention was to make aliased name while not using inner classes, i.e. replace back '.' with '$', but looks like this was not used anywhere. And to be honest, I have no idea why you may need this method.

And my issue: Somehow, the offset I get from here:
is different from the offset that's saved in JADX's project data (JadxCodeRef), computed here:

It is hard to tell. Maybe variable declaration without code don't have offset (like int a;) so you get offset from previous instruction. Jadx don't allow attaching comments for such variables for now, you can open a new issue if this is your case.

I'm an absolute idiot... The returned offset was correct the entire time; it was just my test comment that was placed on the wrong line! 🤦
Anyways, after the last two days being completely wasted, this PR is finally done! Definetely not the cleanest code I've ever written, but it does its job. 😅 I'll clean it up in the following PRs when I add mapping-io import support and completely replace the JOBF format with Tiny v2.

@NebelNidas please move all your changes to a new class into a jadx-gui module and jadx.gui.plugins.mapping package (or any other name instead mapping). There are several reasons to do this:

Looks like you don't use any methods of deobfuscator class, so don't mix these features
Unfortunately mapping-io don't use maven central repository (and on top of that you just add jar file), so I don't want users of "jadx-lib" also add addition repo.
I am trying to strip all additional features from jadx-core and keep only decompilation in it.
Later I will try to move your changes to a new plugin and use it also in jadx-cli.

I understand that this will be make an import a little harder to implement (may need to add a new API to insert custom jadx passes), but result will be more modular (and less coupled).

Looks like you don't use any methods of deobfuscator class, so don't mix these features

I purposefully left it in there, because I want to replace the JOBF format with Tiny v2 in the next PR (and JOBF is also partly handled in the Deobfuscator class). But since that will be a separate PR, I can move it into your suggested package, np :)

Can you wait a few minutes before merging please? I'm making the exporting async

Can you wait a few minutes before merging please?

Sure. You can mark PR as draft if it is not ready for merge :)

because I want to replace the JOBF format with Tiny v2 in the next PR

You don't need to replace jobf we're just adding support for other formats.
I plan to extract support for mapping format import/export into a separate optional plugin. Deobfuscator will also be moved to a separate plugin eventually.

I purposefully left it in there

Please, don't mix mapping, deobfuscation and renames these are different things, yes they are related, but yet these are different features. Also, you don't need deobfuscator because node aliases can be accessed (and also updated) from RootNode.

Took a bit longer than expected, but it's ready to be merged now :)


ritaylor review

Hi @richardtaylorrt, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Richard Taylor). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;


TypeError: Cannot read property 'snapshot' of undefined when using --watch

Do you want to request a feature or report a bug?
Bug
What is the current behavior?
Using ts-jest to precprocess files. When running the test with --watch it runs the tests correctly but produces the following error output:
TypeError: Cannot read property 'snapshot' of undefined
    at results (/Users/username/dev/ts-feed/node_modules/jest/node_modules/jest-cli/build/jest.js:334:41)
    at source.getTestPaths.then.then.then.runResults (/Users/username/dev/ts-feed/node_modules/jest/node_modules/jest-cli/build/jest.js:251:28)
    at process._tickCallback (internal/process/next_tick.js:103:7)

If ran without the --watch flag it produces no errors.
If the current behavior is a bug, please provide the steps to reproduce and either a repl.it demo through https://repl.it/languages/jest or a minimal repository on GitHub that we can yarn install and yarn test.
See https://github.com/ph3b/jest-snapshot-error
What is the expected behavior?
Expect jest to run the test in watch mode without producing error outputs.
Please provide your exact Jest configuration and mention your Jest, node, yarn/npm version and operating system.
Node: 6.3.1
Yarn: 0.17.0
Jest: 18.0.0
Mac OS X 10.11.6
Typescript v2.1.4
Please see configuration files in repository posted above.

Thanks for filing an issue, but this is a problem with ts-jest package. I can confirm that it works for Jest 17, but doesn't on Jest 18 as in example you provided. You should probably downgrade to Jest 17 until ts-jest@18 is released and file and issue there.


When Click Citation files, always encounter Internal Server Error?

Same issue here. How did you solve this?

same issue here. Any ideas on how to solve this?

Same for me, was working. loaded more files in and now not

above Internal Server Error for citation resolved...?

Please check the logs for the web server and see if you can see a precise error. Please paste the error here.

Please check the logs for the web server and see if you can see a precise error. Please paste the error here.

Hi, here is my error log. The strange thing is that I can use the citation locally but cannot view it after deploy it. Any suggestions? Thanks.
azure.core.exceptions.HttpResponseError: This request is not authorized to perform this operation using this permission.

Locally, the app uses your user credential, but when deployed, the app uses the app service's managed identity, so its certainly possible for a permission error to happen.
Here is the corresponding infrastructure from main.bicep that sets up the managed identity for acessing storage:
module storageRoleBackend 'core/security/role.bicep' = {
  scope: storageResourceGroup
  name: 'storage-role-backend'
  params: {
    principalId: backend.outputs.identityPrincipalId
    roleDefinitionId: '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1'
    principalType: 'ServicePrincipal'
  }
}

Please double check that your app has that role assigned to it.

Hi Pamela,
Thanks for the reply.
If the blob storage and web app has already set up, how to set up the managed identity to access storage?

Is it inside the Access control (IAM)?
I need to change the setting for blob storage or web app?
Which setting should I change?

Hi Pamela, Thanks for the reply. About Please double check that your app has that role assigned to it.: If the blob storage and web app has already set up, how to set up the managed identity to access storage?
* Is it inside the `Access control (IAM)`?

* I need to change the setting for blob storage or web app?

* Which setting should I change?

Update: Figure it out by myself, no like the role assignment to user, after deploying online, it relays on the Identify of the web app (also the entry name). For more details, I make the changes based on following link: https://tech-tutes.com/2021/03/18/access-azure-blob-storage-using-azure-ad-managed-identity/

can please provide more details on what you did, i already have the identity added but it is still showing me the internal server error. Thanks.

If you are seeing an internal server error, please first check the App Service logs (see FAQ for how to do that) to see the exact error. Once you have the exact error, share that here or in a new issue if you need help understanding it.


chore: upgrade go version to 1.19 for jx-scm

related to related to jenkins-x/jx#8433

/assign @ankitm123

/ok-to-test

/lgtm


Add documentation to call async python from rust

Thank you for contributing to pyo3!
Please consider adding the following to your pull request:

an entry in CHANGELOG.md
docs to all new functions and / or detail in the guide
tests for all new or changed functions

Be aware the CI pipeline will check your pull request for the following:

Rust tests (Just cargo test or make test if you need to test examples)
Rust lints (make clippy)
Rust formatting (cargo fmt)
Python formatting (black . --check. You can install black with pip install black)
Compatibility with all supported Python versions for all examples. This uses tox; you can do run it using make test_py.

You can run a similar set of checks as the CI pipeline using make test.
Unable to run the docs book
I am running the book using the following command and am getting an error:
npx mdbook build -d ../gh-pages-build guide --open
npm ERR! could not determine executable to run

npm ERR! A complete log of this run can be found in:
Add documentation to call async python from rust
npm ERR!     /Users/bruhh/.npm/_logs/2021-06-13T20_04_12_108Z-debug.log

How do I run the book to check if everything is working well?

Thanks for adding this. I think a few edits will be needed to make it flow a bit easier. I've made a couple of suggestions, we might need to re-read again once those are made.
Also, can you please move the contents of this to async-await.md? I don't think we need a new chapter just for this part.

How do I run the book to check if everything is working well?

I think the following should do it:
cargo install mdbook
mdbook build -d ../gh-pages-build guide --open

These changes make sense @davidhewitt . I will make changes on the weekend 😄

@davidhewitt , I have made some updates. Please let me know if this works.

@sansyrox thanks again for the changes, and sorry it has taken me so long to review.
I think the content is good but we still need to make some adjustments to make it easier for the reader to follow. I've made some suggestions which I think introduce the ideas to the reader more gradually as well as telling them in advance what they can expect to learn.

@davidhewitt , sorry for my late revert. I had a busy week. I will make the changes suggested by you! 🖖

@davidhewitt , I have updated the docs. Let me know what you think now?

Thanks, looks fine to me now! There were some other changes to this guide in the meantime, so I've rebased to merge the changes and will merge this now.


temporarily enforce matplotlib backend to use Agg

Pull Request Description
What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)
close #1048
What are the significant changes in functionality due to this change request?

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?
[ ] 9. If any test used as a basis for documentation examples (currently found in raven/tests/framework/user_guide and raven/docs/workshop) have been changed, the associated documentation must be reviewed and assured the text matches the example.

Job Test CentOS 7 on 33536a7 : invalidated by @wangcj05
time out

@joshua-cogliati-inl @mandd @alfoa This is PR is green, could you take a look?


Trouble loading litarvan theme for webkit

I recently installed litarvan on my Manjaro linux 17.0.6 with lightdm-webkit2-greeter configured properly,
I get a blinking screen on loading lightdm. It then asks me to load the default or fallback theme...
seat0-greeter.log
This is the log file of the same, pls help me out!

Go to the AUR Page (In the description) and install it with makepkg -cris, then edit lightdm-webkit2-greeter.conf
That's what worked for me. I got the same error as you trying to do it manually... maybe there is a step in the PKGBUILD that i've been missing. Might be worth reading it.

I have to admit the code is not so clean.
In fact it looks likes it caused by some missing value, it can be your username or something but it really shouldn't happen as even the default theme looks like crashing when i look at the code.
What version of lightdm-webkit2-greeter do you have ? Notice that a good way to test the theme is to run "lightdm-webkit2-greeter" command on a terminal, you could then send me the log if an error is displayed on the terminal

Closed for inactivity

I ran into this problem today. The exact same problem with the same errors.
And I just found some minutes ago after half an hour of check-everything-even-the-theme-code-just-in-case what was the problem because this line was bothering me:
** (WebKitWebProcess:2629): CRITICAL **: lightdm_language_get_name: assertion 'LIGHTDM_IS_LANGUAGE (language)' failed

And the reason was...
$ localectl list-locales
fr_FR.utf8

$ cat /etc/locale.conf
LANG=en_GB.UTF-8

Yep. Turns out my locale was just not generated. (I use both fr_FR and en_GB but forgot to generate en_GB).
I hate myself so much, but hey it's fixed and hopefully I've saved some time for the next one who will commit this error. :slightly_smiling_face:


feat create fake node

What type of PR is this?

/kind feature
What this PR does / why we need it:
Which issue(s) this PR fixes:

For fast create large scale fake nodes.
Special notes for your reviewer:
Does this PR introduce a user-facing change?

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

This feature is already at the 0.3 milestone #413, we want to have a common APIs to configure this without hard coding, if you are interested you can participate in the design of the APIs or even the implementation.😄

This feature is designed in #668 and implemented in #707.
/close


Add share button

Add button to the Now Playing screen to allow sharing of the current song & station via UIActivityViewController

Thanks Chloe! I will take a look at this over the weekend.

Thanks Chloe, I have added your code and thanked you in the readme. (BTW, I updated the share icon to be the iOS 9 share icon, I hope you don't mind).

Share works great. Dig that you put it in the segue section. Thanks again.

Thanks!
Glad you liked it! :)

Chloe

On Feb 24, 2016, at 12:16 PM, Swift Code X<EMAIL_ADDRESS>wrote:
Share works great. Dig that you put it in the segue section. Thanks again.
https://cloud.githubusercontent.com/assets/2042313/13294093/a8ecb8d8-dadf-11e5-8c4b-c1f01d85cb76.png
—
Reply to this email directly or view it on GitHub https://github.com/swiftcodex/Swift-Radio-Pro/pull/15#issuecomment-188358701.


Add 2 new logs regarding to login

I am blocked from publishing a new version, as the test runner we use in CI is crashing. I'll need to fix that before this is testable

This is now in TestFlight

@mulundapm I verified that the new logs ends up in Metabase