Netflix error with 0.13.4 & 0.13.5 but not 0.13.2

I'm submitting a ...

[x] bug report
[ ] feature request
[ ] support request

General information
I am running the Netflix plugin in Kodi Alpha 1 that was built from source for my 64-bit Arch based linux OS.
Prerequisites

[x] Are you running the latest version?

Description
The Netflix plugin 0.13.2 still works fine, but when it automatically upgraded to 0.13.4 I would get an error on startup of Kodi and when I try to launch the Netflix plugin.
"Netflix Error
Check the log for more information"
Steps to Reproduce

Launch Kodi (error message is displayed as plugins are loaded)
Select Netflix plugin (error message is displayed again)

Expected behavior:

Launch Kodi (no error messages)
Select Netflix plugin (Netflix launches and runs as it did in 0.13.2)

Actual behavior:
Explained in steps to reproduce.
Context (Environment)
Installation

[ ] I installed the plugin via zip from the Releases page
[x] I´m using the Netflix Repo
[ ] I´m using a different source (Please tell which)

Operating System

[x] Linux (x86/x64)
[ ] OSX (x86/x64)
[ ] Windows (x86/x64)
[ ] Linux (ARM)
[ ] Android

Additional informatin on the environment
[Descripe your environment a bit more detailed, are you using LibreElec f.e.]
Debug log
Here is the pastebin log snippet for when I first launch Kodi:
https://pastebin.com/ZZE5qyNe
Here is the pastebin log snippet for when I try to launch the Netflix Plugin:
https://pastebin.com/WyKDYyrR
Other information
This looks very similar to the issue reported here:
https://github.com/asciidisco/plugin.video.netflix/issues/357
For him, the upgrade from 0.13.4 to 0.13.5 apparently fixed it, but not so much for me.

Excuse my english, I'm french...
I have the same problem.
It's because falkorCache has uncorrect escape string, or escape string is not encoded or double encoded, I don't know...
It's not general, it depends of the titles of the videos in falkorCache (different by users), and if these titles contain double-quote. So, falkorCache json was wrong... and can't be parsed !
I use this workaround : replace \" by \\" in content before encode('utf-8').decode('string_escape')
replace
content = content.encode('utf-8').decode('string_escape')
by
content = content.replace('\"', '\\"').encode('utf-8').decode('string_escape')
at https://github.com/asciidisco/plugin.video.netflix/blob/master/resources/lib/NetflixSession.py#L143
This allow to conserve the escape string (for double-quote in string) in json objects after decode('string_escape'), and all working nice now (for me)

@Dodobibi I made the change you suggested, but it did not make any difference in my case.  If I get an opportunity, I will do some further investigation this weekend.  My guess is in the parentheses in the title, but that is purely speculation since that is the only difference I can see with that title.  I will report back any findings.

Are you tried to restart kodi after change ?
can your post your complete falkorCache (WITHOUT sensible informations in profiles)
I'm pretty sure it's a wrong json parse.

It seems that:
https://github.com/asciidisco/plugin.video.netflix/blob/master/resources/lib/NetflixSession.py#L176
is corrupting the json data somehow (for me anyway)

I've wondered what the pattern r"\{([^)]+)\}" in NetflixSession.py line 176 is intended to do. After having studied regular expressions a bit over the years (i.e. I'm a noobie), my understanding is that that pattern captures all the characters in a string between the outer curly brackets unless there is a ')' somewhere in there. In that case, the search fails and findall() returns an empty list, which would result in get_profiles() returning an empty dictionary. In other words, if Netflix includes a ')' anywhere in falkorCache, the add-on will extract no useful profile from it.
If the intent of the search pattern is to capture the falkorCache JSON object, perhaps it might be better to do the search with search(r"netflix.falkorCache\s*=\s*(.*?);</script>",content) with a few other changes to support that search.

@dgktkr I was trying to figure the r"\{([^)]+)\}" expression out as well, but it was late last night and I was just hacking away at it.  I originally thought the issue was with the single quotes and I was able to revert those changes, but when I got to the information that I posted I realized that there was more going on and I would need to sit down this weekend and study the expression to figure out what it is actually doing (unless the developers have addressed it before I get to it)

This regular expression is for extract json from text  (bad) extracted from html, and add { and } for create a textual json object.
I think is not a good solution, but...
The problem is quote (single and double). The decode encode (line 143) escape the quotes in string and this produce a wrong json text...
Look at falkorCache juste before line 176.
I will do test this weekend and I will propose a PR with a more clean solution for extracting falkorCache from content.
Have a nice weekend !

@Dodobibi falkorCache just before line 176 seems fine (with regards to JSON syntax) apart from the extraneous text at the end.  For my account, the problem is occurring with line 176 where text is disappearing (and breaking JSON syntax).  It's possible that it is related to single and double quotes somehow, but it seems that regex is ultimately what is stripping the content out and breaking JSON syntax.  I can't confirm that the JSON syntax is the only issue, though.
As a sidenote, I was looking at the falkorCache on the web browser on another machine and the content appeared to be completely different and did not contain this title with parentheses in it.

It seems fine, but is not.
Try to clean the end, and past it in an code editor wich support json, you will seen errors, just where the quotes.

@Dodobibi I don't know if it is safe to paste the entire string, but I will show you from jsoneditoronline.org
Before line 176 (cleaned up):

After line 176:

@knappster1  How do you debug ?
Sorry to insist, but if you copy/past from console, or log, the quotes are escaped (by python print function), then, the json semms fine, but json really passed to json.parse (L176), is not...
I debug with pydev, I put a breakpoint and extract the json text before line 176 with debugger.
Look at this excerpt (in notifications.fulllist.message.templateJSON.elements.altText) :
{
"templateFormat": "TEXT",
"messageGuid": "2591B14FE51AF0DDD5C84F7115904F4C6452B41D",
"boxArtSecure": true,
"uiPlatform": "AKIRA",
"eventGuid": "604843E4F78AACA09DA9FA5DEBEC35F46452AE84",
"boxArtFormat": "tcard",
"templateJSON": {
"elements": {
"image": {
"target": {
"url": "http://www.netflix.com/title/80198305",
"type": "DISPLAY"
},
"altText": "Chapitre trente-cinq\u00A0: "Le meilleur des mondes"",
"urls": {
"112x63": "https://art-s.nflximg.net/70a76/0d72b291cd6d02bb40c58736c2c37488b4170a76.jpg"
}
},
"text": {
"target": {
"url": "http://www.netflix.com/title/80198305",
"type": "DISPLAY"
},
"showTimestamp": true,
"body": "Un nouvel \u00E9pisode est disponible",
"header": "Riverdale"
}
},
"videoType": "show",
"videoId": 80198305,
"layout": "IMAGE-TEXT"
}
}`
Try it in jsoneditoronline.org, and you will see than "Le meilleur des mondes", quotes are not correctly escaped.
It is for this reason that the regex produces a bad json : "DISPLAY"", ""112x63" The comma is escaped... and there are missing elements...
Remove the quotes around "Le meilleur des mondes", or escape their with , and json will OK.
This is the source of the problem.
Regards,

@Dodobibi I am just debugging from the printout in the debug log from the print command that I've added into the script.  Can you recommend how to setup the debugging with pydev and setting up the breakpoint?  Is there already a guide somewhere?

@Dodobibi, my problem https://github.com/asciidisco/plugin.video.netflix/issues/357 has returned and your solution of replacing
content = content.encode('utf-8').decode('string_escape')
with
content = content.replace('\"', '\\"').encode('utf-8').decode('string_escape') fixes the problem.
I have been able to write to a file the original data received from the Netflix website. There, the quote marks inside quote marks are properly escaped, so the falkorCache JSON is valid. After
content = content.encode('utf-8').decode('string_escape')
is applied, the JSON is no longer valid.
Your solution fixes that. Thank you.

Thanx for your support, guys! Yes, this place is something which makes me headache, too.
For sure the quoting must be fixed somehow, but the regex is not safe here, I agree.
Unfortunately json parser returns nothing if I pass more data as expected, my first approach was let json parser findd the end of the block, but I was without success. Maybe someone find a solution to let JSON parser parse until an error occurs.
Could be possible with overriding this and that, but I'm not the py dev.

OK,
There is two problems :

Double escaping the double-quotes for keeping escape after decode unicode to string
Extracting json object correctly (without pollution at the end)

Can you test this :
replace line 143
content = content.encode('utf-8').decode('string_escape')
by
content = content.replace('\"', '\\"').encode('utf-8').decode('string_escape')
This resolve the issue when double-quotes are in string.
and at line 173
        # find falkor cache
        falkorCache = content[content.find('netflix.falkorCache = '):]
        # Extract JSON
        falkorCache = recompile(r"\{([^)]+)\}").findall(falkorCache)
        if not falkorCache:
            return profiles
        falkorDict = json.loads('{' + falkorCache[0] + '}')
        _profiles = falkorDict['profiles']

by
        # find falkor cache and extract JSON text
        falkorCache = recompile(r"netflix\.falkorCache\s*=\s*(.*?);\s*</script>").findall(content)
        if not falkorCache:
            return profiles
        falkorDict = json.loads(falkorCache[0])
        _profiles = falkorDict['profiles']

This returns a json object without pollution at the end, then it will be parsed by json.loads correctly and completly. This should resolve the other issue (@knappster1 )
No need to add braces around falkorCache[0] : '{' + falkorCache[0] + '}' because the regex correctly extract the json object and completly with braces.
and finally at line 145
react_context = recompile('reactContext(?s)(.*);').findall(content)
by
react_context = recompile(r"netflix\.reactContext\s*=\s*(.*?);\s*</script>").findall(content)
This just for extracting reactContext cleanly, in the same way than falkorCache, without pollution.
@dgktkr Thank you for your help with regex. I think it's a good solution.
@knappster1 Can you confirm me if this patch resolve your issue (when brace in title) ?
If this resolve all issues, @liberty-developer : Can you push theses patchs ?

Yes sure, will push things tonight if we're all fine with this

Sample problem here, windows, some times i can login, but after, get same problem, i cant fix reinstaling kodi or netflix addon :(

@Dodobibi I made the 3 changes to 0.13.5 that you suggested and all seems to work fine for me.

@liberty-developer : I cloned the faktor branch and all seems work fine.
PS : If you can you merge the #354 too ? (Add French translation, but with one correction : Recommendations = Recommandations) It would be perfect !

done, can we close this issue?

thx guys, was a pleasure with you

@dgktkr @Dodobibi there seem to be new issues now after the commit:
18:20:42.612 T:139984451397376   ERROR:   File "/var/lib/vdr/.kodi/addons/plugin.video.netflix/resources/lib/NetflixSession.py", line 282, in login
18:20:42.612 T:139984451397376   ERROR:     content=page.text)
18:20:42.612 T:139984451397376   ERROR:   File "/var/lib/vdr/.kodi/addons/plugin.video.netflix/resources/lib/NetflixSession.py", line 150, in extract_inline_netflix_page_data
18:20:42.612 T:139984451397376   ERROR:     '"' + item + '":(.*?)"(.+?)"').findall(react_context[0])
any clue what could be wrong there?

OK, I think I know why...
Because double escape the content with .replace('\"', '\\"'), then '"' + item + '":(.*?)"(.+?)"').findall(react_context[0]) does not work,
Two way to solve this :

adjust regex on line 150 for work with escaped double quotes (more fast)
or parse reactContext with json.loads and access it with full path of properties of items (I think is more clean but more complicated.

You can try first solution with '\\"' + item + '\\":(.*?)\\"(.+?)\\"').findall(react_context[0]), but I'm not sure until I can test it.
I can't test now, but I will propose a workaround more late this evening, and I will test all other regex if there are another in code.

Thx! this is really an ugly place, would be interesting if the JSON is so poor already if we load it or if we break it when we decode to / from utf-8 after retrieval

I don't know if this has any bearing on the current problem, but after staring at the code for a while it dawned on me that lines 149 and 150 of NetflixSession.py (except for the line break) read
            match = recompile(                 '"' + item + '":(.*?)"(.+?)"').findall(react_context[0])
Showing that a raw string is not being used for the search pattern. Would it help if that was changed?
            match = recompile(                 r'"' + item + '":(.*?)"(.+?)"').findall(react_context[0])
dgktkr

@dgktkr I am confused.  0.13.5 has worked well for me once I made these changes:
https://github.com/asciidisco/plugin.video.netflix/issues/362#issuecomment-390994868
I think that @liberty-developer is talking about a different user.  I have not yet upgraded to 0.13.6
As best I can tell, my issue was related to a video with ) in the recently watched list.  For example Beauty and the Beast (2017)
Others seem to be having issues with other characters as well.  When I upgrade to 0.13.6 I will report if I experience any issues.

Yes, its a user form kodinerds forum, so not reproducable here.
The user is happy with 0.13.5, but not with 0.13.6
I still believe that we should not decode the raw incoming data before we json'ed it.
@knappster1 because you can reproduce issues you'll be a good testing candidate :-)

@liberty-developer It seems to me that issue #362 here is different from the one the most recent one you describe a couple of posts above (the same as #373 and #377?), which occurs earlier in the startup sequence of the add-on (line 150 of NetflixSession.py).

Look at PR #378
Overall, I improved html (encoding) responses to remove json errors. Can solve issue #373, and other related to json.loads.
Be sure we must retrieve html with response.content and not with content.text. Because json is inlined in html, and html is utf-8 encoded, response.content give a raw content, wich we can manipulate and decoding correctly, while content.text return an altered escaped json,
I also improved the method to retrieve reactContext items (more cleanly, and without a regex, possible
source of problems).

parse reactContext with json.loads and access it with full path of properties of items (I think is more clean).

I add a hook react_context = react_context.replace('^(?!\s*$).+', ''). It's because when we are unlogged, Netflix send regex in the reactContext json (wich correct in javascript, but not in json), which cause wrong json (Yes, again !!! A workaround consist to remove these regex, not necessary).
I did a lot of test, and hope everything works fine now.

wow, cool!! this is greeat. Just wanted to start with an user inverstigating further!
I'll test with the user and come back

@liberty-developer 0.13.6 works for me without modification.
@Dodobibi I downloaded your NetflixSession.py from https://github.com/asciidisco/plugin.video.netflix/pull/378 and copied it over what came with 0.13.6 and it works well for me, too.

@Dodobibi  unfortunately still issues with umlaute.
I asked the user to write the content to file, I have it here but don't want to share public.
Can you pls send me an email (the one attached to my github account) so we can share the information ? I'll be unavailable until tonight (CET),

react_context = recompile(r"netflix.reactContext\s*=\s*(.?);\s").findall(content)[0]
IndexError: list index out of range

It seems that content has no reactContext ?!?
@liberty-developer Yes, I can try to debug with your files. I send you my mail.

@Dodobibi we should do the regexp beore we do the decoding / escaping.
Seems to solve the issues with the data I send you via mail.

react_context = recompile(blabla
react:context = react:context.replace('"', '\"').decode('unicode_escape')

@knappster1 can you apply patches?
patch -p 1 < test.patch
Curious if this brakes anything for you
diff --git a/resources/lib/NetflixSession.py b/resources/lib/NetflixSession.py
index c050eec..e2b40f1 100644
--- a/resources/lib/NetflixSession.py
+++ b/resources/lib/NetflixSession.py
@@ -141,10 +141,10 @@ class NetflixSession(object):
         self.nx_common.log(msg='Parsing inline data...')
         items = self.page_items if items is None else items
         user_data = {'gpsModel': 'harris'}
-        content = content.replace('\"', '\\"').decode('unicode_escape')
         # find <script/> tag witch contains the 'reactContext' globals
         react_context = recompile(r"netflix\.reactContext\s*=\s*(.*?);\s*</script>").findall(content)[0]
         # Hook for cleaning json when unloggued
+        react_context = react_context.replace('\"', '\\"').decode('unicode_escape')
         react_context = react_context.replace('^(?!\s*$).+', '')
         react_context_dict = json.loads(react_context, encoding='utf-8')
         # iterate over all wanted item keys & try to fetch them
@@ -181,7 +181,11 @@ class NetflixSession(object):
         falkorCache = recompile(r"netflix\.falkorCache\s*=\s*(.*?);\s*</script>").findall(content)
         if not falkorCache:
             return profiles
-        falkorDict = json.loads(falkorCache[0], encoding='utf-8')
+        falkorCache = falkorCache[0]
+        falkorCache = falkorCache.replace('\"', '\\"').decode('unicode_escape')
+        falkorCache = falkorCache.replace('^(?!\s*$).+', '')
+
+        falkorDict = json.loads(falkorCache, encoding='utf-8')
         _profiles = falkorDict['profiles']

         for guid in _profiles:

@liberty-developer I only seen your post.
You can do recompile... before replace, decode... but json.loads can return an error, (because possible line-feed in string). It's safe to remove '\n' before decoding

you didn't receive my mail?

nevermind, misunderstood your previous post, all fine.
I'll come back to you if I have the original unicode content.

FWIW The add-on with all the latest patches (https://github.com/asciidisco/plugin.video.netflix/pull/378/commits/c0b2d9672f3d8ae67a3454323d9d55ed21a9b2d8 + the one 4-5 posts above this one) works for me even though I have a recently viewed a movie with an umlaut in the title (3 Türken und ein Baby).
Before applying the patches and before starting to view that movie, the add-on (0.13.6) had worked well. Then I found that movie and watched for a short time on Firefox. After that the add-on failed to run. But now that I've applied the recent patches, the add-on runs well again.

@Dodobibi I believe that \n is ok for JSON parser.
Do you want to add my diff to your PR ?
I'll wait until tonight for the OK of user with the issues.
If things work fine for him, we can merge

@liberty-developer \n is OK, but after decoding, it's a real endline "LF", wich do falling regex and else if reges pass, json.loads fail too.
It's the first reason than your user's file is incorrect. regex fail.
But I find a clean solution for this (I was sleep on it):

Use re.DOTALL flag to regex (so regex is compliant with endline in (.*?) grabbing)
And use strict=False parameter in json.loads (this authorize json to have endline in string too !)

I do tests again with special characters in strings, braces, endline, etc ... and I will do propose a new fully PR (including your diffs) in one or two hours.
PS : We can do recompile before replace, decode (DOTALL is not necessary in this case, but keeping it, it's safely. and do it first increases perfs because size of string to replace... decode... is shorter)

I propose a new PR #380  wich replace #378 with little refactor for regex and json.loads, with comments.
@liberty-developer Can you delete #378 please ? It's obsolete.
My tests successfully passed, but I can't test with umlaut or other special char because I don't know how netflix encode them initially. If users can test it (@knappster1 @dgktkr )? I think they are correctly encoded, so, they must pass. But...
I add a helper to save content at raw to disk (commented by default) L155-156, if this can help to analyse the original content... but not paste it on Internet. If uncommented, the file is saved at userdata/addon_data/plugin.video.netflix/raw_content
I waiting your returns.

@Dodobibi if https://github.com/asciidisco/plugin.video.netflix/issues/362#issuecomment-392361646 is still the latest, I ran this patch and things look okay for me.  Unfortunately I've just noticed that the title is no longer on my recently watched list, so I cannot be sure that I am still a good test candidate for this.
I am currently unable to add anything to My List through the addon so I will create a separate issue for that.  I added it through a browser just to see if it would lead to any json issues, but so far, so good.

@knappster1 It seems that Add and Remove from 'My list' work, but the addon refrech this list only after reloading profil, or restart. (for me)

@dodobibi https://github.com/asciidisco/plugin.video.netflix/pull/380 works well for me.

The user I'm supporting has:
18:20:14.071 T:140231412016896   DEBUG: [Netflix] Started (Version 0.13.6)
18:20:14.071 T:140231412016896   DEBUG: [Netflix] "Navigation::router" called with arguments :paramstring = :
18:20:14.071 T:140231412016896   DEBUG: [Netflix] "Navigation::before_routing_action" called with arguments :params = {}:
18:20:14.072 T:140231057782528   DEBUG: [Netflix] Loading cookies from memory
18:20:14.072 T:140231057782528   DEBUG: [Netflix] Cookie expires:<PHONE_NUMBER> /<PHONE_NUMBER>
18:20:14.074 T:140231412016896   DEBUG: [Netflix] "Navigation::before_routing_action" returned: {}
18:20:14.074 T:140231412016896   DEBUG: [Netflix] "Navigation::show_profiles" called
18:20:14.221 T:140231412016896   DEBUG: [Netflix] "Navigation::show_profiles" returned: None
18:20:14.221 T:140231412016896   DEBUG: [Netflix] "Navigation::router" returned: None

So seems that we're still not done ;-( Waiting for the debug file....

@liberty-developer Can you give the url of posts on kodinerd where your user talk ?
I would like to understand his problem.

nvm, all fine after clean login

Yes 👍

This add-on is launched as "service" by Kodi.
It work in background.
When I start Kodi, I must wait 10-20 seconds to this add-on fully initialized before navigate in Netflix, else I have error too, but in my case, it's not a real error, just wait complete init and go to Netflix again.

Perhaps a minor nit with #380 and 0.13.7.
Lines 155 and 156 of NetflixSession.py are
 # with open(self.data_path + 'raw_content', "wb") as f:
 #     f.write(content)

which I think won't work if 'content' contains characters that are outside the range of 0-127. (Please someone correct me if that's not right.) Also, will the file be written if the script errors out?
I suggest instead
  # with open(self.data_path + 'raw_content', "wb") as f:
  # f.write(content.decode('utf-8').encode('unicode_escape'))
  #     f.close()

The goal is to save the original content received without touch it's encoding.
It work as this because the file is writing as binary "wb".


API call to list extensions active with HaaS

We need an API call to list the which extensions are available for a given HaaS installation.
For eg.
User should be able to run a command and inquire which obm driver is active
or which switch drivers are available.
Users will be mostly system administrators managing HaaS.

Would one API call that lists every extension suffice, or should there be an argument for the type of extension (auth, switches, etc.) to be described?

I think an API that lists everything should suffice. Just package the response in a way such that it's easier to get the stuff we need.

should there be an argument for the type of extension (auth, switches, etc.) to be described

you can do that in the CLI

I have an implementation of this finished, going to wait until the name change to present it.

#820 fixes this.


Doubts about the inlier_threshold param

Hi,
the inlier_threshold parameter is set to 2.0 in the demo folder script, and 0. in the test folder script. Which value is preferable for testing on data from yfcc100m and sun3d, respectively?
Thanks!

Thanks for attention.
We choose inlier_threshold=0 for all methods during verification.
However, we have proved in another work (ConvMatch, Figure 7) that the best threshold is not 0 and it varies from different methods, we set the threshold as 0 just for fair comparison and easy implementation. In the demo we set the threshold as 2.0 just for better visualization, and actually 2.0 performs better for testing on data from yfcc100m and sun3d.

Thanks!


Overlapping rides, after optimization

Scenario:

Server dspo-test.tixizug.ch
Optimize rides on Monday 10.04.2017

Comments:

This daily view contains shared rides, which have been declared as "work in progress" in April 2017..
The Optimization may abort (white screen) after one or two shifts.

Cannot be reproduced, probably problem with migrated data.

This popped up again in version 3.0.2-beta just before the release.

Same (more or less) as issue #256, which has been closed in commit https://github.com/TIXI24/sfitixi/commit/3fdd195a0fd3535f36264464976e03040f483e19

Reopened, same error found in daily plan 26.10.2017.
Build configuration checker to analyse the new and optimized configuration.

This bug was reproduced after days of extensive online testing. The bug is caused by mutable RideNode objects which are NOT cloned properly (shallow clone) in the 'clone $rideConfiguration' statement in RideStrategieAnnealing.php.

Requirements:

The nested objects RideConfiguration -> RideNodeList -> RideNode need to be extended with custom 'deep cloning' statements.
The concept of the next-object and previous-object pointers needs to change from objects to integers, making the nested objects (shallow) 'clonable'.
The RideNode object properties are 'public' which is unsafe and NOT best practice code. Hide the properties behind proper setters and getters making the code more robust.
Use the concept of making a 'final configuration check' to ensure that there are no overlapping nodes and that the RideNodeLists are configured properly.

This is after all the most complex piece of code in the application.

Fixed in commit https://github.com/TIXI24/sfitixi/commit/66022ca1e11979881097119f95786bb8e4625712


Showing images with matplotlib backend

I've just discovered this library today and I really like it! I use vscode, and I wanted to use lovely tensors' image plotting capabilities within a standard python debug session. Since matplotlib works while debugging, at the moment I am defining this hacky function, ltplot, for every python file where I want to do tensor debugging:
import lovely_tensors as lt
lt.monkey_patch()
import matplotlib.pyplot as plt, matplotlib.image as mpimg, io
def ltplot(img):
    'Plot an lt image array such as x.chans, x.rgb, x.plt'
    fp = io.BytesIO(img._repr_png_())
    with fp: img = mpimg.imread(fp, format='png')
    plt.imshow(img)
    plt.show()

And then I would do something like:
ltplot(x.chans)

As a suggestion, maybe we could have something like: lt.monkey_patch(backend='matplotlib'), so that it automatically defaults to plotting using matplotlib.

Thank you! :two_hearts:
I forgot that not everyone had converted their workflow to the blessed ways of nbdev. :) (and it totally works in VScode, that's how I use it).
I think it's a reasonable request, either, as you suggested, as an argument to monkey_patch, or maybe better if I rework (and rename) PRINT_OPTIONS to cover the image backend too. I should be able to get on it in around a week, but if you'd like to implement it, PRs are very welcome.

I didn't know about nbdev, but it looks very interesting. I will look into it, and I may convert too!

https://www.youtube.com/watch?v=67FdzLSt4aA

I second this feature, it would be nice to be able to do tensor.plt_show(name="optional window name") for those of us not using notebooks (or VSCode). Are PR's welcome?

Yep, very much!
.plt() actually can take an ax= for the matplotlib axis, but it's not the case for the image methods since they are not based on matplotlib.
As for the exact interface, I'm not completely certain what it should look like.
Maybe tensor.plt.to_mpl(name="optional window name")?
I'm also thinking about a better way to normalize the image values, particularly useful for .chan
For example, in this code https://xl0.github.io/Visualize-Understand-CNNs/impl.html , I end up with functions like sigmas() and pos_sigmas() all over the place. They bring values into the desired [0,1] or [0.5 ,1] range, and I should probably add a normalization function to lovely for this purpose, for example:
tensor.normalizer("sigma", 3) -> touch.Tensor rescaled in a way that maps values μ +/- 3σ into [0, 1] interval.
So the full call would be along the lines of tensot.normalize("sigmas", 3).chans.to_mpl("Window Name")
Or, since nobody got time to type, t.n("sigma", 3).chans.mpl(...)
I'd rather have this chained interface over having the functions with a dozen of partially overlapping parameters. Do you have any thoughts on this or other ideas for the interface?

Sounds good! Prefer if it's easy to remember and quick to type because I'll often be exploring tensors interactively in pdb. If there's only one backend, then even just tensor.plt.show() would be nice. Don't know what other backends there would be, but maybe that could be set elsewhere, when initializing the library or something, just to keep the API simple. When I want to display a plot in a window I don't really care much how it's done :)

Yep. I think another possible backend is visdom, https://github.com/fossasia/visdom
It's pretty fast and interactive - for example, you can stream training (or generated) images for every iteration with very minimal hit on performance.
But that's a maybe for the distant future, and for now, I think it's going to be just matplotlib. Agree, .show is a better name.
I can jump on this pretty soon. Or would you like to work on it?

You can go ahead!

Very interesting suggestions. I was off a few days, but wanted to add some more ideas for discussion:

The plot functions should automatically be able to handle values outside the [0,1] range without overflowing or artifacts. This could be easily done by always applying basic normalization before plotting: i= (i - i.min()) / (i.max() - i.min()). The rationale is that you never want to see an image with artifacts, I would always want to see it normalized in some way.
I would select the backend on calling the monkey patching, as I suggested: lt.monkey_patch(backend='matplotlib'), that way we can use exactly the same interface as the library now has. The rationale is that I would only want to use one backend at a time, so it should not be specified for every plotting call, but rather on importing / setting up the library.
At least for the matplotlib backend, I would like the possibility to have a bar showing the actual range of values (not the normalized ones). This is not achievable unless (de)normalization is performed within the plotting function (see next point). I would add it as something like input.rgb(title='', bar=True)
Since (de)normalization is always used for plotting purposes, I would not do something like t.n("sigma", 3), as I do not care about that intermediate (de)normalized tensor, I just want to plot it! So I would rather have something like we have now: input.rgb(denorm=([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])).
I would provide different normalization strategies, the default one being my first point in this list, and others being percentile-based (see code below, very useful in practice to get rid of extreme values, although slower to compute), or z-score based. I would like an interface like: input.rgb(norm='minmax'), where norm can be 'minmax', threshold number(s), or 'zscore', and the denorm parameter can stay as is.

def threshold_normalization(image, thres=[0.1, 99.9]):
    val_l, val_h = np.percentile(image, thres)
    image[image < val_l] = val_l
    image[image > val_h] = val_h
    return (image.astype(np.float32) - val_l) / (val_h - val_l + 1e-6)

The plot functions should automatically be able to handle values outside the [0,1] range without overflowing or artifacts. This could be easily done by always applying basic normalization before plotting: i= (i - i.min()) / (i.max() - i.min()).

Strongly disagree. Normalization silently hides important information (images with different normalizations will appear identical). The default should never hide information. (This is especially important when plotting color images. Less so for channels and single-channel heatmaps.)
In my opinion, we should replace the values, that would overflow with some distinct color and print a warning in a style similar to the NaN/Inf warnings. This should be the default (imho).
I am not opposed to having automatic normalization as an optional parameter (via minmax or via quantiles or maybe even histogram normalization).

@xl0 @RuRo I agree with both your comments!
Indeed if going the .n() route, calling .rgb or .chans should not normalize the data in any way. I also didn't know about the color coding for NaN/Inf/outside of range, but as it is now, it is probably the best way of doing it! Furthermore, I would also add this color coding to .rgb, and briefly talk about it in the Index notebook, which is what I (most users) look at when first encountering the lib.
Finally, it might make sense to still be able to pass the arguments of set_config directly to monkey_patch(**kwargs), so that we need one less line of code for setting up the library. It is probably a bit messier than it is now, so I am not sure if it is worth it...

Yep, that's what it's like right now:
https://xl0.github.io/lovely-numpy/utils.colormap.html
Highlighting colors for < -1, 1<  +/- inf and nan.
That's for .chans. For RGB, I'm not 100% sure what would be the best approach. Right now the values just roll over, which actually does make it visually clear that an overflow is happening. But I could also assign specific colours to the various invalid intervals. Of course, with RGB, the highlight colours will always overlap with valid ones. Have you seen any examples of this done well?

Hi!
I'm finally done with the matplotlib rework. Please take a look:
https://xl0.github.io/lovely-numpy/matplotlib.html#without-jupyter
I'll give Lovely JAX some love now, and will be back to work on the normalization stuff in about a week.

@xl0

For me

assert lovely_tensors.__version__ == '0.1.12'
lovely_tensors.set_config(fig_close=False, fig_show=True)
torch.randn(3, 1024, 1024).chans()

still doesn't open the plot. But
torch.randn(3, 1024, 1024).chans.fig.show()

does. The numpy version works as expected:
assert lovely_numpy.__version__ == '0.2.6'
lovely_numpy.set_config(fig_close=False, fig_show=True)
lovely_numpy.lo(np.random.randn(1024, 1024, 3)).chans()

What do you think about dynamically checking, if the user is running in a non-Jupyter environment (i.e. IPython or a regular script) and making fig_show=True the default?

Also, you might want to do fig.show() instead of plt.show(). The latter will also show all other figures, that just happened to be open at that time, which might not be desirable.

I'll see what's causing it tomorrow.

I'm for it.

My understanding is, fig.show() won't work without a call to plt.show() in a GUI backend:

https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.show
Is this correct?

3. My understanding is, fig.show() won't work without a call to plt.show() in a GUI backend:
https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.show
Is this correct?

@xl0 Ah, my bad. Calling fig.show() works in both interactive IPython and interactive Python shells, but it does nothing in a standalone script. So a GUI isn't strictly required, but standalone scripts still need to call plt.show().
Bizarrely, some surface level googling seems to suggest, that matplotlib doesn't have a portable way to "show this specific figure only, don't touch the other ones". Huh.

@RuRo I fixed the issue with the figures not showing. Could you try the current git?
pip install git+https://github.com/xl0/lovely-tensors
Don't think there is a solution for fig.show(), I might play with it later.
I'll get back and add the dynamic fig_show default later. Or you can have a go at it.

@xl0 yup, current master works as expected.


update docs related sdk

What this PR does / why we need it:

Update SDK docs.
Create a link for SDK docs in README since someone asked me how to use the KFServing SDK.

This change is

/assign @animeshsingh

@animeshsingh Any more comments? thanks.

What will be corresponding SDK version version be on pypi?

Will refresh new one for the this after PR merged, and let you know.

Also at some point we shall rename set_credentials to set_storage_credentials
There are some comments I have on the syntax difference rollout/promote etc...but open an issue for us to discuss

Could you please also create ticket for discussion for rename the function? this is another things, we can address that in another ticket later. thanks.

/lgtm

/retest


struct - add circle check to avoid stack overflow

Might want to double check your work. It doesnt build and the imports are changed.
If you want to submit a pr for format changes, thats fine but lets create a seperate pr for that.

I want to give you credit for this. So if you submit a clean pr with the changes in it ill try to get it merged into develop. Overwise ill try to utilize parts of your pr in order to resolve stack overflow.


About the UKBB dataset

Hi, nice work! I am applying for the UKBB dataset now. I have applied the account. Could you share the category ID or other dataset information for me? Because I don't know which dataset I need to apply and download. Thank you very much.

Hi, thanks for the interest. You need to download cardiac MRI data and non-imaging tabular data (phenotypes). The id of used tabular features can be found in this paper's supplementary material https://openaccess.thecvf.com/content/CVPR2023/html/Hager_Best_of_Both_Worlds_Multimodal_Contrastive_Learning_With_Tabular_and_CVPR_2023_paper.html

Thank you very much for the answer. May I ask do we need to pay for the dataset?

Yes, you could ask the UK Biobank office for details<EMAIL_ADDRESS>


Add zip/3

Something like this:
%% zip(Xs,Ys,Pairs)
%
%    True if Pairs is a list of corresponding `X-Y` pairs taken from Xs and Ys.
%    If Xs is shorter than Ys (or vice versa), excess elements are ignored.

usage examples:
?- zip([a,b,c],[1,2,3],Pairs).
Pairs = [a-1,b-2,c-3].

?- zip([a,b,c],[1,2],Pairs).
Pairs = [a-1,b-2].

I haven't implemented this yet because I'm not sure how useful the semantics of zip(-,-,+) are.  Perhaps the "excess elements" should be included as an output argument like zip(+Xs,+Ys,-Extras,-Pairs) which would make zip(-,-,+,+) mode sensible.
I'm not sure yet.

This predicate is different than pairs_keys_values/3 because it doesn't require the "input" lists to have the same length.


Is it possible to set the placeholder image while loading the image from url?

I already used this library, and it works well.. but while loading the image from url, I wanna set the placeholder image.
Please let me know if it is possible or not.

One way to do this is by wrapping it in a component that displays a local <Image /> while the fast image is loading, then replace it once the image is loaded. You may be able use the display: 'none' or height: 0, opacity: 0 style on the FastImage component while it loads, then update the component to only show the FastImage.

Can you show it with an example @edmundito ? Should we use onLoadEnd handler here?
What if I've 100+ images do I setState 100 times?

+1

Duplicate: https://github.com/DylanVann/react-native-fast-image/issues/5
It's super easy to implement this currently using a local Image behind FastImage. This will probably be added eventually though.

It's been 2 years still no progress are we going to add this feature in the near future?


1.12 alpha compatibility

Q
A

Branch?
master (new features)

Bug fix?
no/yes

New feature?
no/yes

Related tickets
fixes #X, partially #Y, mentioned in #Z

Issue to make

Superseed by https://github.com/Sylius/PayPalPlugin/pull/260


Bug: Main Homepage Image has white background in dark theme

What would you like to share?
Current:

Expected:

Additional information
No response

I want to work on this issue.


Load DSL - waitUntil - spec for monitoring the API result

Async processing is to be monitored through monitoring APIs, e.g:
waitUntil(session ->
    http("monitor")
        .target("/monitor")
        .get()
        .saveTo("result"),
        result -> result.getStatusCode() == 200,
        1 mins, 10 retries)

The measurement is to be done from the first monitoring request till the last attempt.
Operation signature is as follows:
waitUntil(Function<Spec, UserSession> specFunction ,
        Function<HttpResult, Boolean> specFunction,
        Duration delay, // Delay between two attempts
        Integer maxRetry // max attempt
)

We can realize the behavior with run-retryIf specs.


--timezone shows the wrong starting zone (I think)

Just doing a little testing before I go all in on this great tool, and I noticed what I think is a bug.
I have a bunch of photos that I took in city X with a Canon that didn't TZ-stamp the time. I loaded them into Photos in city Y, which is one time zone west of X. When I look at the time in Photos, the TZ seems to have been set to city Y's (I guess since that's where I was using Photos). Now when I use photos_time_warp to fix the time zone, Photos updates the time to +1 from what it was, consistent with the idea that it set the time zone to city Y's when I loaded the photos and now is correctly at city X's.
The bug is that photos_time_warp reports this in verbose mode:
Updated timezone for photo IMG_7655.JPG (185BB35F-43F2-4500-9A5E-926A3D77EA51) from America/New_York, offset=-14400 to GMT+0300, offset=10800
America/New_York is where I am now, which is a lot more than 1 hour away from GMT+0300, so it seems unlikely that that was the starting point.

What was the full command line you used for photos_time_warp?

photos_time_warp -V --timezone +0300
PS I have a question about time zones. Put it in an issue or maybe have discussions open?

PS I have a question about time zones. Put it in an issue or maybe have discussions open?

I opened discussions
The command you entered means "set timezone to GMT+0300" so it looks like the script did exactly as directed?   I'm not clear on what you expected vs what happened?

The command you entered means "set timezone to GMT+0300" so it looks like the script did exactly as directed? I'm not clear on what you expected vs what happened?

Yes, it did what it was supposed to, but the starting time zone wasn't New York, it was Rome, so the right thing is happening, but photos_time_warp is reporting the wrong starting zone.

I'll take a look.  This is weird as the info reported in the verbose message is pulled directly from the Photos database.  In your example, that means that Photos thinks the timezone is really New York, not Rome.

I've not been able to replicate this.  Let me know if you still are having this issue.


chore: don't attempt to push .snupkg twice

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

AWS CodeBuild CI Report

Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Admin tweaks

The following two changes effectively make inlines "collapsable"/optional.

min_num = 0

~extra = 0~ PI prefers these to be expanded by default.

Only display the number of given existing observations or an extra equal to the total applicable observables.

Don't use any inlines for admin pages, do so only for the data admin pages.

Exclude the following from the data admin pages:

Instrument
Observable
QCAnnotator
QCAnnotation

@fabbasinejad Thanks for the review 👍


cmake: fix bug in STRING REPLACE

The last argument of STRING REPLACE, which is a variable, has to be
inside double quotes otherwise it may be misinterpreted.

Well, if VERSION_STR's value is "0.14.0", that's fine, but if it's "something with spaces", suddenly the CMAKE command ends up having 3 parameters instead of one ([something, with, spaces] instead of "something with spaces").

Right ok.


No instructions/information about what to do with systems already running legacy outset

I have many systems running legacy outset. There's no documentation indicating if I need to do anything (uninstall, disable, etc...) before installing Outset 4.0. It would be nice to have this in the FAQ or something.

It seems this is just seamlessly taken care of either by the installer or the new version of Outset. Still might be worth a mention on the wiki but I'm going to close this issue.

correct on both counts - the installer and outset binary try to move everything over for you.
if you do that and something doesn't move as you'd expect then please raise that as an issue


ESLint

Lints the project according to a pretty standard set of ESLint rules; big change - moves to 2-space indentation.

Hi @jeffwilcox, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.azure.com.

TTYL, AZPRBOT;


MKTG-648 Give doc headings visible on-hover links

Closing, because work transferred to a clean branch and to PR # 375


CORE-14127: Set explicit file permissions for CPK disk cache.

Set file permissions for the CPKs that we cache on disk to be rw-------.
Also set the permissions for this cache directory to be rwx------.
Set workspace directory permissions to rwxr-xr-x.
Set temporary directory permissions to rwx------.
It is also probably a Very Good Idea :tm: to close a ByteChannel once we've finished writing to it.
And convert some Kotlin classes which only contain companion object into a Kotlin object.

Worth just sanity checking on windows? Looks sensible though.


Ensure OutOfMemoryException gets reported as a build failure

See #5150

I tried inserting this, and it still seems to say:
Build FAILED.
    0 Warning(s)
    0 Error(s)

although without the popups asking if I want to abort.


InvalidArgument4 Error in NtFreeVirtualMemory Routine

When calling SharpSploit.Execution.DynamicInvoke.Generic.GetSyscallStub() the call to NtFreeVirtualMemory returns an NTSTATUS = STATUS_INVALID_PARAMETER_4 (0xC00000F2).
I was attempting to call "NtAllocateVirtualMemory" this way:
IntPtr pSyscall = SharpSploit.Execution.DynamicInvoke.Generic.GetSyscallStub("NtAllocateVirtualMemory");
This eventually causes this function to be called:
Native.NtFreeVirtualMemory((IntPtr)(-1), ref pImage, ref RegionSize, Execute.Win32.Kernel32.AllocationType.Reserve);
The error that was being returned was the catch-all error in Native.cs:
if (retValue != Execute.Native.NTSTATUS.Success) {     // STATUS_OBJECT_TYPE_MISMATCH == 0xC0000024     throw new InvalidOperationException("There is a mismatch between the type of object that is required by the requested operation and the type of object that is specified in the request.");             }
Calling this code path, there is nothing that I can do to influence the variable type being used for the call to NtFreeVirtualMemory. I was able to add in an extra condition to get it to ignore the error as a work-around. It seems to not like the "Execute.Win32.Kernel32.AllocationType" being passed?

I changed the call to:
Native.NtFreeVirtualMemory((IntPtr)(-1), ref pImage, ref RegionSize, Execute.Win32.Kernel32.AllocationType.Release);
After reviewing the documentation for NtFreeVirtualMemory, it seems like the incorrect value was entered here. Valid values are MEM_RELEASE, MEM_DECOMMIT.
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-ntfreevirtualmemory


Dropdown items are not sorted alphabetically in new designer

Describe the Bug with repro steps

What type of Logic App Is this happening in?
Consumption (Portal)
Are you using new designer or old designer
New Designer
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
No response
Screenshots or Videos
No response
Browser
Chrome
Additional context
No response
AB#25431320

Fixing on the side:
https://github.com/Azure/LogicAppsUX/pull/3499

Looks like my first run at the change was merged.
https://github.com/Azure/LogicAppsUX/pull/3499
Although, @Eric-B-Wu gave me some guidance in a comment about how we should move the sorting to a different area. Therefore, I started this new PR with the changes.
https://github.com/Azure/LogicAppsUX/pull/3582
Still looking for a bit of guidance or clarity around one of the suggestions though.


Fun.Ext

This will entail adding an extensionality mega-rule/tactic

[Note: in the case of equality of lambda terms, the basic equality rules are already sufficient; this would just be useful in more general cases. In any case, we could use eta expansion combined with lambda-equality to get general funext.]

Could you possibly provide an example in your mind that is not about lambdas? I guess some combination of these rules would be useful, but not sure of which one you are referring to.

@favonia The examples I had in mind were things like pair extensionality as well (if the projections are equal, then the whole things is equal)...
Ultimately, I figured I'd add these rules as soon as I needed them in a proof 😆

I think the current auto sort of already does this. So I guess you want a tactic that tries only these rules? In general I guess it's useful to have specific autos and I feel we can easily code up one for "eta-expansion then equality".

@favonia Sure; though, the secret is I don't know that I have actually implemented these extensionality rules.
In any case, this issue is a low priority (I've updated it), so we shouldn't worry about it until it comes up in practice.


Editing tools hover changes - problem

While we hover on the editing tools on the dark mode then tools color is not showing . Because of the black color not changing while we change to dark mode

also this

Yes sure you can go ahead @YasirKhan231

ok i work on this


allow "callable" classes & closure as controller services

what do you think about allowing any callable as controller services? (or anywhere a callback is expected)
at the moment closure cannot be used as controllers because callback should be objects on which a method is called. but in php there are 2 other kind of callable:

objects with an __invoke method (can be used like that: 'callable:__invoke')
closure

I guess something along those lines could work:
class CallbackResolver
{
    public function isValid($name)
    {
        return is_string($name);
    }

    public function convertCallback($name)
    {
        if (preg_match(static::SERVICE_PATTERN, $name)) {
            list($service, $method) = explode(':', $name, 2);
            if (!isset($this->app[$service])) {
                throw new \InvalidArgumentException(sprintf('Service "%s" does not exist.', $service));
            }

            $callback = array($this->app[$service], $method);
        } else {
            $callback = $this->app[$service];
        }
        if (!is_callable($callback)) {
            throw new \InvalidArgumentException(sprintf('Service "%s" is not callable.', $name));
        }
        return $callback;
    }

Ya, that seems good to me, you should make a PR into master.


How stop playing video when navigate to other screen

Dear,
Could you please show How stop playing video when navigate to other screen?
Thanks.
Best regards,
LNPQuang

@lnpquang  Did you find a solution for this?
This solution doesn't work:
  componentWillMount() {     ...     this.props.navigation.addListener('willFocus', (route) => {       console.log("naviguation changed")       this.setState({         paused: true       });     });   }

@DonavanMartin Can you try this? It's a long time ago, I'm not sure it's still working or not:
<YouTube
videoId={video.youtubeId}
play={this.state.isPlaying}
fullscreen={false}
loop={false}
onReady={e => this.setState({isReady: true})}
onChangeState={e => this.setState({status: e.state})}
onChangeQuality={e => this.setState({quality: e.quality})}
onError={e => this.setState({error: e.error})}
      style={{alignSelf: 'center', height: 200, width: 350}}
      key={video.id}
    />


Move provider OAuth config under server.Config

Summary
In the next PR (#3334) we need to move the OAuth config under providers
themselves, but in order to do that, we need to get rid of the oauth client
config code calling viper.Get directly or else we'll break all our tests.
This PR does that and gets rid of the Google OAuth configuration and other
now-unused code.
Because the next PR will move the OAuth client code around to providers, I
didn't get overboard with testing here.
Fixes #2798
Change Type

[ ] Bug fix (resolves an issue without affecting existing features)
[ ] Feature (adds new functionality without breaking changes)
[ ] Breaking change (may impact existing functionalities or require documentation updates)
[ ] Documentation (updates or additions to documentation)
[x] Refactoring or test improvements (no bug fixes or new functionality)

Testing
make test and provider enroll
Review Checklist:

[x] Reviewed my own code for quality and clarity.
[x] Added comments to complex or tricky code sections.
[ ] Updated any affected documentation.
[x] Included tests that validate the fix or feature.
[ ] Checked that related changes are merged.

coverage: 51.96% (+0.05%) from 51.915%
when pulling 9a4eee3fc9bf2912cd79bffe9dc2612f3a6f1b32 on jhrozek:oauth_config
into 2749c31101e48fbd2f5fe88bd2b15d2fa4123f53 on stacklok:main.


[FLINK-36892][Runtime] Properly handle the watermark status within async state processing

What is the purpose of the change
The watermark status is not properly handle in async state processing. It is emitted to downstream synchronously, while the watermarks will respect the ongoing timer processing. That should be fixed and aligned.
Brief change log

Rewrite processWatermarkStatus in AbstractAsyncStateStreamOperatorV2  and AbstractAsyncStateStreamOperator, making watermark status also respect the timers.

Verifying this change
This change is already covered by existing tests.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

Reviewed by Chi on 12/12/24. appears that this PR is healthily progressing

Thanks for the review! Merging...


TypeScript Doctoberfest

For a while now, we've felt like our documentation has needed a little bit of love, so tomorrow (October 13), the TypeScript team is going to be having a doc-a-thon!
Because TypeScript is extremely community-driven, we want to include others to help us in our efforts. While we're mainly focusing on sprucing up our Handbook, we're also looking for contributions to our Wiki, our Samples, and even code documentation for our language service. Even general review on content, grammar, and spelling is something we would appreciate a ton.
If there's a topic that interests you, consider asking us in our Gitter room or posting an issue. That way you can ask to claim a task or to collaborate with someone who's already working on something you're also interested in.

@bowdenk7 is really stepping up his Doctoberfest game

That. is. awesome.

@jonathandturner feel free to join if you're up to it :wink:

Would love to help out with some stuff, not sure what though ;) but definitely with reviews and stuff :)

@DickvdBrink sure! You can proofread the PRs on the Handbook, and file any issues on it or the wiki if something could be written a bit better/clearer.


is this the reason why rclone was banned from ACD?

rclone/amazonclouddrive/amazonclouddrive.go
line 37    rcloneClientID = "amzn1.application-oa2-client.6bf18d2d1f5b485c94c8988bb03ad0e7"
line 38    rcloneEncryptedClientSecret = "ZP12wYlGw198FtmqfOxyNAGXU3fwVcQdmt--ba1d00wJnUs0LOzvVyXVDbqhbcUqnr5Vd1QejwWmiv1Ep7UJG1kUQeuBP5n9goXWd5MrAf0"
This is a private key for using amazon services.
Other opensource softwares was not banned and they dont show this information in their code.
They provide an external server to authenticate.
You can check
https://www.npmjs.com/package/clouddrive
https://drivesink.appspot.com/

Highly likely. AWS actually runs an internal program which runs queries for client ids and secrets to ensure accounts are not compromised. I'm sure this is the same program running to clean out ACD keys.

https://forum.rclone.org/t/rclone-has-been-banned-from-amazon-drive/2314

Update 2017-05-20
I have now heard back from Amazon. Rclone has been banned for having the encrypted secrets in the source code.
I've asked for new credentials so I can build an auth server and get rclone going again - I haven't heard back on that reply yet, but it is plausible we could get rclone running again with Amazon Drive in the not too distant future.
Thank you all for your patience

yes

rclone is an amazingly powerful tool.  I find I am using it in many ways via cron.  If you need a vm somewhere or other hosting resources I'd be willing to help!

I'm going to close this issue now - for the resolution see https://forum.rclone.org/t/rclone-has-been-banned-from-amazon-drive/


Allow usage of multiple sprites per entity.

I have a few separate tilemap images for various animations that I want to apply to a given entity or component.
For example, I'd like to do something like the following.
let __standing_sprites = {
'PlayerStandUp': [0, 0],
'PlayerStandDown': [1, 0]
};

let __walking_sprites = {
'PlayerWalkUp': [0, 0],
'PlayerWalkUp2': [0, 0],
'PlayerWalkDown': [1, 0]
'PlayerWalkDown2': [1, 0]
};

Crafty.sprite(18, 58, "gfx/skins/101.png", __standing_sprites);
Crafty.sprite(26, 61, "gfx/skins/102.png", __walking_sprites);

let entity = Crafty.e("2D, Canvas, SpriteAnimation, PlayerStandUp");

entity.reel('PlayerWalkUp', 500, [ 'PlayerWalkUp', 'PlayerWalkUp2' ]);
entity.reel('PlayerWalkDown', 500, [ 'PlayerWalkDown', 'PlayerWalkDown2' ]);

Is there any way you could do this?
I don't see any way I could currently, without shoving them into one huge tile sheet and losing the ability to define the grid like I do with 18, 58 and 26, 61. Thanks. :rabbit:

As a workaround, you can swap which tilesheet is used by swapping components.  (Removing PlayerStandUp and adding PlayerWalkDown, in this instance.)
It would be better if there was a convenience method for doing this, though!


Uncaught TypeError: Right-hand side of 'instanceof' is not callable

[Enter steps to reproduce:]
Recently returned to coding & am learning markdown. Just started using Atom & would very much like to have a synced rendering as I type.  If I may be of further assistance please contact me.
Hoping you can make this work with my current kit,
Ryan

Editing a .md file using Markdown Writer 2.11.10 along with Markdown Preview-plus 3.11.5.
Noted that panes were not scroll–syncing.
Opened Package manager to check status of this package: "Enabled".
Expanded package details to check on needed command, binding, or config -> error thrown.

Atom: 1.45.0 x64
Electron: 4.2.7
OS: Mac OS X 10.13.6
Thrown From: markdown-scroll-sync package 2.1.2
Stack Trace
Uncaught TypeError: Right-hand side of 'instanceof' is not callable
At /Users/Main/.atom/packages/markdown-scroll-sync/lib/main.coffee:38

TypeError: Right-hand side of 'instanceof' is not callable
    at /packages/markdown-scroll-sync/lib/main.coffee:38:14
    at Function.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1214120)
    at Emitter.emit (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1215561)
    at Workspace.didChangeActivePaneItemOnPaneContainer (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:424586)
    at WorkspaceCenter.paneContainer.onDidChangeActivePaneItem.t (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:14:44778)
    at Function.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1214120)
    at Emitter.emit (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:1215561)
    at PaneContainer.didChangeActiveItemOnPane (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:446919)
    at PaneContainer.didActivatePane (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:446396)
    at Pane.activate (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:463814)
    at Pane.focus (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:11:455257)
    at HTMLElement.handleFocus (/app.asar/src/pane-element.js:41:20)

Commands
  2x -2:31.3.0 settings-view:uninstall-packages (webview.markdown-preview-plus.native-key-bindings)

Non-Core Packages
academic-markdown 0.3.8
atom-beautify 0.33.4
atom-ide-ui 0.13.0
atom-notes 1.23.0
cheatsheet 2.0.0
color-picker 2.3.0
expose 0.15.0
file-icons 2.1.40
highlight-selected 0.17.0
html-tag-auto-complete 0.1.1
ide-html 0.6.0
ide-r 0.1.8
language-markdown 0.37.0
markdown-image-paste 2.5.2
markdown-pdf 2.3.3
markdown-preview-plus 3.11.5
markdown-scroll-sync 2.1.2
markdown-to-html 0.5.0
markdown-writer 2.11.10
organized 0.8.1
pandoc-convert 1.1.1
pane-layout-plus 0.7.4
tool-bar 1.2.2
tool-bar-markdown-writer 0.5.1

Seems the package is no longer supported.  the last pull was in 2017.  Apologies for opening a new issue.  Switched to Markdown Preview Enhanced .  Problem resolved/Issue closed.


Add Kubernetes Pull Token for specific sensor_type

I've added the pull-token generation.
Design question: Line 399, I've added a new line break which make the script ending with a new line.
so it's nice for someone looking to get the image pull token
BUT for automation it force scripts to use echo -n $() to remove the new line break
I think it's better to keep the new line break => any comment on this ?

Lgtm! printf is much more cleaner


NavIcon not showing

Icon not showing ... Is there anything missing from me

facing same issue, here is the demo of CodeSandbox
https://codesandbox.io/s/interesting-wave-c21jf

@deshario
https://codesandbox.io/s/interesting-wave-c21jf
You can include Font Awesome css file in your html file, please see above mentioned link for your ready reference

thx @aakhan89  i was looking for a solution for hours ...


Please add the table border properly.

Please add the table border properly in compose extension section-

Name
Type
Maximum Size
Required
Description

botId
String

✔
The unique Microsoft app ID for the bot that backs the message extension, as registered with the Bot Framework. The ID can be the same as the overall App ID.

commands
Array of objects
10
✔
Array of commands the message extension supports.

canUpdateConfiguration
Boolean

A value indicating whether the configuration of a message extension can be updated by the user. Default: false.

messageHandlers
Array of objects
5

A list of handlers that allow apps to be invoked when certain conditions are met.

messageHandlers.type
String

The type of message handler. Must be "link".

messageHandlers.value.domains
Array of strings
2048 characters

Array of domains that the link message handler can register for.

messageHandlers.value.supportsAnonymizedPayloads
Boolean

A boolean value that indicates whether the app's link message handler supports anonymous invoke flow. Default is false.

Document Link-https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema#composeextensions
Currently it is showing like below-

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

ID: 0f94a488-d636-92b3-21eb-c88744c8f272
Version Independent ID: 7b3413f4-9ade-accf-5cb2-83fead11a32a
Content: Manifest schema reference - Teams
Content Source: msteams-platform/resources/schema/manifest-schema.md
Service: msteams
GitHub Login: @surbhigupta
Microsoft Alias: surbhigupta

@surbhigupta12 -Could you please help us to update the document.

The ask for creating a table is not possible.


希望有个配置能够隐藏裁剪标记

What problem does this feature solve?
希望有个配置能够隐藏裁剪标记

What does the proposed API look like?
希望能够像这样

设置margin颜色为背景色即可，如设置：marginIndicatorColor:#ffffff
https://hufe.club/canvas-editor-docs/guide/option.html


Table of coordinate changes for a given gene in the gene page

The idea would be to have a table where the changes in gene structure for a given gene are listed. This can be obtained from the tsv files:

results/all_coordinate_changes_file_comments.tsv: changes from svn
results/pre_svn_coordinate_changes_file_comments.tsv: changes from pre-svn ftp folders

They are in the genome_changelog repo in this folder:
https://github.com/pombase/genome_changelog/tree/master/results
This is an example of grepping SPAC1565.08 (cdc48) on both files.
revision	user	date	chromosome	systematic_id	primary_name	feature_type	added_or_removed	value	db_xref	pombase_reference	pombase_comments
8650	kmr44	2023-01-12	I	SPAC1486.05		5'UTR	added	3196965..3197027	PMID:30566651
8650	kmr44	2023-01-12	I	SPAC1486.05		5'UTR	removed	3196998..3197027	PMID:18641648,PMID:20118936
3985	vw253	2017-04-12	I	SPAC1486.05	nup189	CDS	added	join(3197028..3197529,3197529..3202450)		PMID:26615217; pers. comm. Li-Lin Du	Frameshifted by Chr_I:3197528!A→AG
3985	vw253	2017-04-12	I	SPAC1486.05	nup189	CDS	removed	join(3197028..3197525,3197528..3202450)
2917	vw253	2015-09-01	I	SPAC1486.05	nup189	CDS	added	join(3197028..3197525,3197528..3202450)
2917	vw253	2015-09-01	I	SPAC1486.05	nup189	CDS	removed	join(3197028..3197528,3197528..3202450)
2716	vw253	2015-04-14	I	SPAC1486.05	nup189	CDS	added	join(3197028..3197528,3197528..3202450)
2716	vw253	2015-04-14	I	SPAC1486.05	nup189	CDS	removed	join(3197028..3197443,3197530..3202450)		pers. comm. Y. Hiraoka
20110324	-	2011-03-24	I	SPAC1486.05	nup189	3'UTR	removed	3202451..3202485
20110204	-	2011-02-04	I	SPAC1486.05		5'UTR	added	3196998..3197027
20050705	-	2005-07-05	I	SPAC1486.05		3'UTR	added	3203351..3203385

db_xref lists additions / removals of db_xref qualifiers associated with a feature that occurred in the same revision.
pombase_reference and pombase_comments come from the curation repo data_files/gene-coordinate-change-data.tsv matched to the closest date.

NOTE: This table contains changes in gene structure, not coordinates. As in, if the genome sequence changed, and the gene coordinates were shifted so that it sequence remained the same, the change is not listed.

As I said on the call the other day, the "unique identifier" of a feature is the combination of systematic_id + feature_type, so if the feature type is changed, the change is listed as below:
revision	user	date	chromosome	systematic_id	primary_name	feature_type	added_or_removed	value
8658	kmr44	2023-01-16	I	SPNCRNA.2013		lncRNA	added	complement(18768..19648)
8658	kmr44	2023-01-16	I	SPNCRNA.2013		ncRNA	removed	complement(18768..19648)
7957	kmr44	2022-01-12	I	SPNCRNA.2013		ncRNA	added	complement(18768..19648)

Maybe then it makes no sense to show those changes, since they are not really gene structure changes. Equivalent files omitting those kinds of change can be found in:

results/all_coordinate_changes_file_comments_no_type_change.tsv: changes from svn
results/pre_svn_coordinate_changes_file_comments_no_type_change.tsv: changes from pre-svn ftp folders

For the same id, you get only this single line from those files:
7957    kmr44   2022-01-12      I       SPNCRNA.2013            ncRNA   added   complement(18768..19648)

So my suggestion is to use the files that end with _no_type_change.tsv.
The relevant columns to be included (I think) are:

date
chromosome (sometimes there has been a feature with the same id in another chromosome, often by mistake)
systematic_id (can be omitted in gene page)
primary_name (can be omitted in gene page)
feature_type
added_or_removed
value
db_xref
pombase_reference (could be merged with db_xref)
pombase_comments

One more thing:
The changelog of coordinates registers when features are added or removed, as well as when they change.
However, the changelog of qualifiers (where I list for example the changes in db_xref) only registers changes (otherwise it would be a massive file), so no db_xref comment is linked to the creation of a feature or the removal. In principle those qualifiers are still there, so accessible from the gene feature in Jbrowse, or if they were changed at the same time as the gene structure (pressumably because the removed PMID descibed the old structure), they would appear in the rows of the table.

[ ] To capture this, I could at least link the comments in this file in a future version:

https://github.com/pombase/genome_changelog/blob/master/gene_changes_comments_and_pmids/new-gene-data.tsv
https://github.com/pombase/genome_changelog/blob/master/gene_changes_comments_and_pmids/removed-gene-data.tsv

On the genes pages what columns should the table have?  Is this enough?:

date
description of change

do we want to display when the gene was added to PomBase when with "genome project" as the default?

db_xref/pombase_reference
pombase_comments

Sounds good. @manulera  any other suggestions?

Hi @kimrutherford, thinking about what we discussed yesterday I have made another file that maybe makes things a bit easier.
What I did was to take the old *_coordinate_changes_file_comments_no_type_change and create a new file where only unique removed coordinate values are shown (should contain all non-current values only once), and where comments and db_xref are combined comma separated. For the db_xref column, the added and removed values are in separated columns. I think this might be more convenient. Sorry for not having thought about it before, and maybe you have already done something on your side already, but just in case it helps.

script: https://github.com/pombase/genome_changelog/blob/master/make_all_previous_coords_file.py
result: https://github.com/pombase/genome_changelog/blob/master/results/all_previous_coords.tsv

It contains both svn and pre-svn coordinates.

Thanks Manu.
Is that new file missing a row for SPBC21C3.07c?
In the older file we have:
20071219        -       2007-12-19      II      SPBC21C3.07c            CDS     added   complement(join(3807920..3808607,3808665..3808795))                     Solexa intron data; removed final exon, not supported by data
20071219        -       2007-12-19      II      SPBC21C3.07c            CDS     removed complement(join(3807714..3807783,3807963..3808607,3808665..3808795))

but there is no row with the date 2007-12-19 in the new file.

So the file keeps only unique values of removed rows, and the latest date where that coordinate existed
This:
8650	kmr44	2023-01-12	II	SPBC21C3.07c		5'UTR	added	complement(3808796..3808853)	PMID:30566651
8650	kmr44	2023-01-12	II	SPBC21C3.07c		5'UTR	removed	complement(3808796..3808991)	PMID:21511999
20110324	-	2011-03-24	II	SPBC21C3.07c		3'UTR	added	complement(3807091..3807713)
20110324	-	2011-03-24	II	SPBC21C3.07c		5'UTR	added	complement(3808796..3808991)
20080222	-	2008-02-22	II	SPBC21C3.07c		CDS	removed	complement(join(3807827..3807891,3807946..3808607,3808665..3808795))
20080222	-	2008-02-22	II	SPBC21C3.07c		CDS	removed	complement(join(3807920..3808607,3808665..3808795))			Solexa transread data; added two 3’ exons
20080123	-	2008-01-23	II	SPBC21C3.07c		CDS	added	complement(join(3807714..3807783,3807831..3807891,3807946..3808607,3808665..3808795))
20080123	-	2008-01-23	II	SPBC21C3.07c		CDS	added	complement(join(3807827..3807891,3807946..3808607,3808665..3808795))
20071219	-	2007-12-19	II	SPBC21C3.07c		CDS	added	complement(join(3807920..3808607,3808665..3808795))			Solexa intron data; removed final exon, not supported by data
20071219	-	2007-12-19	II	SPBC21C3.07c		CDS	removed	complement(join(3807714..3807783,3807963..3808607,3808665..3808795))

Becomes this:
II      SPBC21C3.07c            5'UTR   complement(3808796..3808991)    2023-01-12      PMID:21511999
II      SPBC21C3.07c            CDS     complement(join(3807827..3807891,3807946..3808607,3808665..3808795))    2008-02-22
II      SPBC21C3.07c            CDS     complement(join(3807920..3808607,3808665..3808795))     2008-02-22                              Solexa transread data; added two 3’ exons

I thought comments from pombase were always matched to the "removed" comment, but I can see it's not the case here. Not sure why that is, I have to check. Perhaps it would be best to link the comment to both removed and added?

Sorry, there was indeed a mistake, and complement(join(3807714..3807783,3807963..3808607,3808665..3808795)) was missing (coordinates are so similar that I could not tell). I was doing an inner join instead of a left join, so that the changes that did not appear as added were lost. Now it should be fixed. Sorry about that. I will push a fix shortly. I will also include the pombase comments.

Hi Kim, it's fixed now, I think. I have kept the comments associated with the addition and removal of a given gene, so it looks like this:

chromosome
systematic_id
primary_name
feature_type
value
date
db_xref_removed
db_xref_added
pombase_reference_removed
pombase_reference_added
pombase_comments_removed
pombase_comments_added

II
SPBC21C3.07c

5'UTR
complement(3808796..3808991)
2023-01-12
PMID:21511999

II
SPBC21C3.07c

CDS
complement(join(3807714..3807783,3807963..3808607,3808665..3808795))
2007-12-19

Solexa intron data; removed final exon, not supported by data

II
SPBC21C3.07c

CDS
complement(join(3807827..3807891,3807946..3808607,3808665..3808795))
2008-02-22

Solexa transread data; added two 3’ exons

II
SPBC21C3.07c

CDS
complement(join(3807920..3808607,3808665..3808795))
2008-02-22

Solexa transread data; added two 3’ exons
Solexa intron data; removed final exon, not supported by data

Thanks Manu.  That file is much easier to parse and the gene history tables are looking better now.
Here's an example: https://desktop.kmr.nz/gene/SPBC21C3.07c

The PMID IDs in the references are links now.  The other IDs will take longer.  Here's another example:
https://desktop.kmr.nz/gene/SPSNRNA.06

If the comments ever need editing to make them more readable , where would we do that?

@ValWood the files that end with data.tsv in this folder:
https://github.com/pombase/genome_changelog/tree/master/gene_changes_comments_and_pmids

I forgot about this issue.  The table is available on the dev site:
http://dev.pombase.kmr.nz/gene/SPCC622.17
There are few things to chat about next time we have a call.

Looks good to me!

Change header:
Date -> Used until
Add a new row with "now" for the date and the current structure.

I think if we use "used until" we can remove the "previous" of the second header

I've made the changes that we talked about including adding the gene history to the left hand menu.  Is there anything else to do?  Do we need a information/help icon for the gene history sections?

Maybe I would rename the block to "Gene Structure History", to be a bit more specific.
We can discuss this when we speak, and maybe we don't want to go into this, but there is an extra thing that we could do. The displayed coordinates refer to the genome sequence that existed at that moment in the contig file. This means that if the genome sequence since then, especially with insertions / deletions of nucleotides, using that feature location on the current genome sequence might not return the right sequence. The log of where the genome sequence changed is here:
https://github.com/pombase/genome_changelog/blob/master/results/genome_sequence_changes.tsv
If we don't include this in the table, then I can definitely create a help section explaining this.

Maybe I would rename the block to "Gene Structure History", to be a bit more specific.

That makes sense.  I'll make that change.

Maybe I would rename the block to "Gene Structure History", to be a bit more specific.

Done!

TODO @manulera document section and refer to old assembly sequences

I have created a documentation page for the history section on this new branch

Thanks!  I'm going to merge the change so we can see how it looks.

I think you have to create a component in Angular for this, but if I can do anything else on my side let me know.

I won't need to add a component.  It's all (sort of) automatic.  To add documentation we just need to add a .md file in the documentation directory.

Also, I was thinking that now that the svn files are accessible, we could add an extra field on the table with a link to the file of that genome version. I could add this as an extra field to the table.

Good plan!

I'm going to merge the change so we can see how it looks.

This is how it looks on my desktop:
https://desktop.kmr.nz/documentation/gene-page-gene-structure-history

Also, I was thinking that now that the svn files are accessible, we could add an extra field on the table with a link to the file of that genome version. I could add this as an extra field to the table.

Ok, I have added this. An extra column in the usual file (results/all_previous_coords.tsv) called genome_snapshot, link to the svn or ftp folder of the revision prior to the introduction of the change.

I guess once that's in we can close this one.

Also, I was thinking that now that the svn files are accessible, we could add an extra field on the table with a link to the file of that genome version.

I'm adding this now.  I'm not sure what text to use for the column header and the text to use for the links.  This is what I currently have:

I think Genome snapshot is good for the header, perhaps for the value we can use the revision number, could be something like:

svn:8760 for svn revisions
ftp:20110304 for ftp revisions

That constitutes some sort of unique identifier.

Hi @manulera

I think Genome snapshot is good for the header, perhaps for the value we can use the revision number, could be something like:
svn:8760 for svn revisions
ftp:20110304 for ftp revisions

That makes sense.  I've implemented that: https://www.pombase.org/gene/SPCC622.17
I've noticed a small issue.  The SVN URLs before revision 374 need to be slightly different.  I got the paths wrong when I initially set up SVN so I had to move things in changeset 374.  Would you be able to change the URLs for revisions 1 to 373 in the data file to this pattern: https://curation.pombase.org/pombe-embl-repo?p=REVISION?  So drop the "/trunk" from the URL for the old revisions.
Thanks!

Hi @kimrutherford, the svn urls are now fixed with https://github.com/pombase/genome_changelog/commit/662bc55643c663b8c2975dc8ed1dd5f9e13fd999

Hi @kimrutherford, the svn urls are now fixed

Thanks!


feat: add profile to launch harbor as external registry

Description
Add a new skaffold profile to use a Harbor registry instead of the Docker one
Also fixes FL-1477 & FL-1479, which was needed for creating the skaffold profile
Companion PR

https://github.com/Substra/substra-documentation/pull/416

How has this been tested?

Checklist

[x] changelog was updated with notable changes
[ ] documentation was updated

/e2e

End to end tests: :hourglass_flowing_sand: STARTING

/e2e --tests=doc

End to end tests: :hourglass_flowing_sand: STARTING


Flip andThen parameters for better currying [breaking change]

Right now, the signature of andThen is
andThen(decoder, fn)

Changing the order of the parameters to
andThen(fn, decoder)

would adhere to the idea that you first pass configuration into the function, and later the data the function operates on.
Elm also did this change in 0.18: https://github.com/elm-lang/elm-platform/blob/master/upgrade-docs/0.18.md#backticks-and-andthen

Ramda also takes this approach:

The parameters to Ramda functions are arranged to make it convenient for currying. The data to be operated on is generally supplied last.

http://ramdajs.com/

I don't really see any benefit in doing this, since JavaScript does not support currying or the pipeline operator. I'd love to hear an argument on this though.

I am aware that this change doesn't give much advantage when it comes to currying or pipelining because JavaScript doesn't support this (yet?).
For me, this is more about a consistent rule how function arguments are ordered. I don't want to think about or look up what the order of the arguments is, it helps me, if that just follows a simple rule.
Right now map looks like map(fn, decoder) and andThen looks like andThen(decoder, fn).
Additionally, people coming from Elm won't be irritated. Elm is not yet very popular, but if you have ever done some stuff in Elm and you have to come back to TypeScript, you probably want Elm-like JSON decoders, and this is the only good and maintained library that I know of.

I don't use this library anymore, closing after no response for a few months.

Sorry for the radio silence, work has been keeping me super busy. I've actually been thinking about this quite a bit, and I have a little regret with the way I designed this library. I tried to make the API as close to Elm's as possible, and I think I should have embraced the OO part of JavaScript more.
decoder.map(fn)
decoder.andThen(fn)

I think this fits better into the JavaScript/TypeScript world, and I could get rid of a weird hack in the source code that I had to make in order to allow "package private functions". Any thoughts?

This is a conflict I've been struggeling with, too. For my current project and for my JSON decoder I just used functions everywhere, just like Ramda. The advantage is that I can discard all the strange OO-stuff in JavaScript and just work with functions and values. The problem with this approach is that you can't really hide implementation details, because TypeScript doesn't have features like opaque types. I think both approaches are valid in the current JavaScript landscape and your suggestion looks reasonable to me.


Update eventbright with ATO discount option

Cleaned up HTML
Moved old events to the bottom
Updated profile
Removed old tickets
Changed early bird ticket date to expire on 8/31
https://www.eventbrite.com/e/nc-open-pass-2018-tickets-42176718701

social media post about early bird extension set for tomorrow


WIP: update runtime to use FUNC_PORT for custom port

Here is a work-in-progress for support custom port via FUNC_PORT environment variable.
I have only tested the python runtimes, and still need to test the others, but would like some feedbacks on dotnet core runtime especially.
This is dependent by #397.

@andresmgot @ngtuna  can you take a look at this one, and let me know if this is an acceptable approach?
langruntime.go also pins to specific image, so for me to continue the development of #397 it might be easier if we can merge this one first?   That way we can add some integration tests of the custom port.

/cc @allantargino

thanks @ngtuna can you modify/add an integration test to check that changing the port works? You can do that here or in #397

Thanks @andresmgot Sure will do

I have to land this, then build new serial of runtime images and update controller to use the new digests. The integration tests then will pass in #397


Ensure that logical volume is activated

This pull request resolves an issue where /dev/mapper/... is missing and subsequently causes a failure when the filesystem is checked or created.   This situation happens during the case were we create a new ebs volume from snapshot that contained an already provisioned volume group and logical volume.  These restored logical volumes are initially marked inactive.

Sorry about the lengthy delay. It seems legit; can you sign the CLA and I'll merge?

Hi. I am an automated pull request bot named Curry. There are commits in this pull request whose authors are not yet authorized to contribute to Chef Software, Inc. projects or are using a non-GitHub verified email address. To become authorized to contribute, you will need to sign the Contributor License Agreement (CLA) as an individual or on behalf of your company. You can read more on Chef's blog.
GitHub Users Who Are Not Authorized To Contribute
The following GitHub users do not appear to have signed a CLA:

@jgartrel

Please sign the CLA here.

Since the CLA hasn't been signed in over 6 month for this PR I'm going to close it out at this point.  If the author would like to sign the CLA feel free to open up the PR again.


make repls for all targets

now that bazel run can support repls without any silly dance
see: https://groups.google.com/d/msg/bazel-discuss/hXpklreOPik/2Suxd84dAgAJ
maybe we should make a .repl runnable target as an optional output of all rules. Then users can do
bazel run --direct_run //foo/bar:baz.repl

and be dropped directly into a repl session with the same classpath as the target.
I think this would be a nice usability win to avoid having to manually make a second target, and if it is an optional output it shouldn't slow down the build unless needed.
What do you think @ittaiz

Sounds like an awesome win!
On Fri, 23 Mar 2018 at 3:12 P. Oscar Boykin<EMAIL_ADDRESS>wrote:

now that bazel run can support repls without any silly dance
see:
https://groups.google.com/d/msg/bazel-discuss/hXpklreOPik/2Suxd84dAgAJ
maybe we should make a .repl runnable target as an optional output of all
rules. Then users can do
bazel run --direct_run //foo/bar:baz.repl
and be dropped directly into a repl session with the same classpath as the
target.
I think this would be a nice usability win to avoid having to manually
make a second target, and if it is an optional output it shouldn't slow
down the build unless needed.
What do you think @ittaiz https://github.com/ittaiz
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bazelbuild/rules_scala/issues/448, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABUIFywzwEIbDnCiaPsG2FXhoHq1Ib2eks5thD4JgaJpZM4S3_Am
.


Create Lambda function host application

It looks like good idea to create example\project which allows microservice framework to be hosted inside AWS\Azure lambda function. Integration of existing framework with lambda function should be relatively easy activity.
Main use case which is covered by this example is creation of service\website which is rarely invoked and execution as separate application looks like vast of  resources.

Example was added into GodelTech.Microservices.Examples repository.


Class/Subclass Advancement Enhancements

-Spellcasting-

A way to track spell caster advancement for purpose of spell slot assignment during advancement.

-Starting Equipment-

Option to have starting equipment include containers for "starter packs"
Option to have multiple selections from the same item under the Choices (i.e. Any two martial weapons and selecting the same weapon twice.)
Option to set the Quantity of items received. (You can create a separate reference item that has a higher quantity but would be cleaner to be able to set the amount per item.)
Under Choose Items, be able to group selections together as a single option. (i.e. Get sword and shield OR get a gun)

-Notes-

A generic option for a note that can have references for any obscure options (link to journals, items, etc.)

Not sure exactly what you mean by "spell slot assignment". Do you mean linking spells to a certain class?
All of the starting equipment is handled by "Starting Equipment" on classes & backgrounds:
Including packs in starting equipment:

Quantity of items:

Grouping items together:

Ah I failed to see this was under the Details tab, I was making adjustments all from the Advancement tab which did not have these options.
For spell slots there is no way to automatically assign spell slots through class advancement. From what I can tell it would be a manual process to update how many of what spell slots you have available.

Spell slot progression is done in the config and can be adjusted through a World Script for custom ones, for instance a 3/4's caster, or a 1/3 Pact Caster. Or even creating new types of spell slots.

I do see that it is working, for some reason not sure what I did it didn't seem to add spell slots.
I'm going to update the request. I think I have actual suggestions.

-Replacement Features-

An option to drop/select an option already on your character sheet to be replaced by a new selected option. (Cantrip, Spell, Subclass Feature, etc)

The ItemChoiceAdvancement now has the option to replace previously made choices. That is probably what you want for subclass features. For spells, since there is no automated system for adding them yet, you can just delete the old ones and drop new ones on the sheet.

-Notes-

A generic option for a note that can have references for any obscure options (link to journals, items, etc.)

Not sure what you mean here.

The ItemChoiceAdvancement now has the option to replace previously made choices. That is probably what you want for subclass features. For spells, since there is no automated system for adding them yet, you can just delete the old ones and drop new ones on the sheet.
Sorry haven't been keeping up with the releases, you guys do loads of work and it is appreciated!

For the notes, it is basically a stop-gap just to kind of fill those niche situations. For example on Mark of Finding Human the Spells of the Mark are dependent on the PC having the spellcasting feature. So as far as advancement is concerned I can set up a Grant Items advancement as follows:

Which is presented to the player as:

This shows that all of the spells are optional however there is no indication of why these spells are optional unless of course you have already read the Race features. However this assumes that the players are smart and take their time going through these advancement steps.
A second option would be to use the Choose Items as such:

Which is presented to the player as:

Now we can see what the criteria is for selecting these spells via the hint and we can tick all of the boxes or not as necessary. This would likely be the best option in the current system.
However the Hint doesn't allow any links or formatting so in extreme cases can still be missed.
What I purpose (and perhaps is silly) is a Note section that just brings up a section that you can read and make the necessary decision as needed. Something kind of like this:

Also as I'm writing this I see it would be nice to have a select all/select none option for these advancements for the player.

Another good example of use for the note would be the Rogue Expertise feature. You get expertise at 1st level but it also gives you additional Expertise options at 6th Level and it can serve as a reminder to grant yourself those two extra skill upgrades without having to go through the hassle of creating another whole placeholder feature.


Update JavaClient to a new version - cut a new release containing this update

[x] Update to the new JavaClient version
[x] cut a new release

Prerequisite ticket https://github.com/OA-PASS/java-fedora-client/issues/87

Completed: https://github.com/OA-PASS/nihms-submission-etl/releases/tag/1.3.1


Hello from the author of Bearded Theme

Hello I am the author of Bearded Theme, I receive issues from your port of my version to VSCode, users think I am the author of this port. Could you add "unofficial" either in the name, or on the icon (or both) of your port ?
Link to the issue : https://github.com/BeardedBear/bearded-theme/issues/103

Hello, this is my bad! I forgot add "unofficial" in name.
I will do your request.

No probs, thanks ;)


vue-server-renderer, npm audit reports vulnerability in serialize-javascript version

Version
2.6.10
Reproduction link
https://www.npmjs.com/advisories/1426
Steps to reproduce
1- Install vue-server-renderer
2- Run npm audit
What is expected?
Upgrading to a newer version would solve this issue.
What is actually happening?
There is a 'Cross-Site Scripting'  vulnerability in dependency 'serialize-javascript'. Upgrade to version 2.1.1 or higher would solve the issue.

As reads on npm audit report
│ Moderate: Cross-Site Scripting
│ Package: serialize-javascript
│ Patched in: >=2.1.1
│ Dependency of: vue-server-renderer
│ Path: vue-server-renderer > serialize-javascript
│ More info: https://npmjs.com/advisories/1426

Thank you there is already an open pull request


⚠ Samsung has degraded performance

In 29aa31a, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2588 ms

Resolved: Samsung performance has improved in 12b4d11.


Now install fail (engine node incompatibile)

Anyone encountered this? I'm trying to deploy to Now with default settings. Not sure how to proceed. This is right after 4 values are entered into a CLI
> WARN! Requested node version 6.11.1 is not available
> Using Node.js 8.11.3 (default)
> https://slackin-okvkceeimm.now.sh [in clipboard] (bru1) [4s]
> Building…
> ▲ yarn
> yarn install v1.9.4
> info No lockfile found.
> [1/5] Validating package.json...
> error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version "6.11.1".
> error Found incompatible module
> info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
> Error! Build failed

Could it be I need to have a local version of node matched? I don't see how this would make a different for remote deployment. Please advise...

I get the same error after I input the four API keys!
> WARN! Requested node version 6.11.1 is not available
> Using Node.js 8.11.3 (default)
> https://slackin-kkzwucgxti.now.sh [in clipboard] (sfo1) [988ms]
> Building…
> ▲ yarn
> yarn install v1.9.4
> info No lockfile found.
> [1/5] Validating package.json...
> error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version "6.11.1".
> info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
> error Found incompatible module
> Error! Build failed```

probably duplicate of #379

You can modify the node version defined in package.json to '8' or '10'.


charter link in README.md is broken

The current README.md has a link in the Table of Contents to charter, but when clicking on it, it returns a 404 - page not found on the opencontainers.org website.

Yeah it needs to point to https://github.com/opencontainers/tob/blob/master/CHARTER.md. The URL changed last year.

This appears to have been fixed.  Not sure when.


Port visual shader node icons from Godot 2.1.x (3.x)

3.x version of https://github.com/godotengine/godot/pull/51702.
This also adds an icon for VisualScriptComment.
Preview

Thanks!


CSS3 fixed flex display, title no longer appearing

CSS3 fixed issue with flex display causing title to appear, still rough

Huzzah


tango_icons_vendor: 0.0.1-1 in 'foxy/distribution.yaml' [bloom]

Increasing version of package(s) in repository tango_icons_vendor to 0.0.1-1:

upstream repository: https://github.com/ros-visualization/tango_icons_vendor.git
release repository: https://github.com/ros2-gbp/tango_icons_vendor-release.git
distro file: foxy/distribution.yaml
bloom version: 0.9.7
previous version for package: null

tango_icons_vendor
* Added common linters (#7 <https://github.com/ros-visualization/tango_icons_vendor/issues/7>)
  * Added common linters
  * Fixed license in package.xml
* Remaned package qt_gui_icons -> tango_icons_vendor (#4 <https://github.com/ros-visualization/tango_icons_vendor/issues/4>)
  * Remaned package qt_gui_icons -> tango_icons_vendor
  * Updated CMake var to install tango icons: INSTALL_TANGO_ICONS
  * Added cmake option INSTALL_TANGO_ICONS
  * Fixed logic
  * set INSTALL_TANGO_ICONS_DEFAULT_VALUE to option
  * Make linters happy
* Updated link on the description (#6 <https://github.com/ros-visualization/tango_icons_vendor/issues/6>)
* Updated the maintainer (#5 <https://github.com/ros-visualization/tango_icons_vendor/issues/5>)
* Version 0.0.0 this package was never released (#3 <https://github.com/ros-visualization/tango_icons_vendor/issues/3>)
* Install icons by default on macOS too (#1 <https://github.com/ros-visualization/tango_icons_vendor/issues/1>)
* Updating package.xml
* fixup! Install tango icons
* Adding icons
* Install tango icons
* Contributors: Alejandro Hernández Cordero, Stephen, Stephen Brawner

Consider adding a source entry too

@jacobperron added source entry


inconsistent dice-results

Hello,
I love the Inline-Table-Rolls, cause it is way more fancy to display the results then with a regular table-roll.
But in our last session we got the problem that the results were mixxed up. If the table has some rolling inside they will get these different for every player.
For example:
A table with rolling inside the results:

called with th following macro:

will get for 3 different players three different results:
(first result is with the macro the second result is with the roll-button directly on the table)

That get us confused for a while^^'
It would be great if that can be fixxed in the future.

Fixed in latest release


Use parametrized topic ID in P2P layer of go-header library

Currently, HeaderExchangeService and BlockExchangeService do not use a parametrized topic ID in the P2P layer of go-header library. Once, go-header library supports a parametrized topic ID, we should make these exchange services use customized P2P topic IDs.

This came up while adding a BlockExchangeService where the networkID had to be changed to the current chain ID with -block appended to it for it to work. Ideally, when we want two different P2P layers for the same chain, we can have separate topics with the same chainID.

Ideally, when we want two different P2P layers for the same chain, we can have separate topics with the same chainID.

Can you elaborate on this? Why would the same chain want different p2p layers? This seems counterintuitive to me.
cc @nashqueue

Yeah, for a single rollup chain, there can be a P2P network for full nodes to exchange blocks and another P2P network for all nodes (full and light) to exchange headers.


Uninstallation of istio resources test

Description
Changes proposed in this pull request:

Add check that Istio resources are removed on Istio CR deletion

/test all