OpenShift server failed

pi@raspberrypi:~ $ bypy info
<D> [04:24:06] Using requests.packages.urllib3 to disable warnings
Refreshing, please be patient, it may take upto None seconds...
Authorizing/refreshing with the OpenShift server ...
<E> [04:24:09] Exception:
<type 'exceptions.ValueError'> - No JSON object could be decoded
Stack:
  File "/usr/local/bin/bypy", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 3253, in main
    result = getattr(by, args.command[0])(*uargs)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 937, in info
    return self.quota()
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 943, in quota
    return self.__get(pcsurl + 'quota', pars, self.__quota_act)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 690, in __get
    return self.__request(url, pars, act, 'GET', actargs, retry, addtoken, dumpex, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 668, in __request
    result = self.__request_work(url, pars, act, method, actargs, addtoken, dumpex, **kwnew)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 536, in __request_work
    if const.ENoError == self.__refresh_token(): # refresh the token and re-request
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 889, in __refresh_token
    result = self.__get(url, pars, self.__refresh_token_act, retry = retry, addtoken = False)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 690, in __get
    return self.__request(url, pars, act, 'GET', actargs, retry, addtoken, dumpex, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 668, in __request
    result = self.__request_work(url, pars, act, method, actargs, addtoken, dumpex, **kwnew)
  File "/usr/local/lib/python2.7/dist-packages/bypy/bypy.py", line 518, in __request_work
    perr(formatex(ex))
  File "/usr/local/lib/python2.7/dist-packages/bypy/util.py", line 70, in formatex
    type(ex), ex, ''.join(traceback.format_stack()))

<E> [04:24:09] Maximum number (1) of tries failed.
OpenShift server failed, authorizing/refreshing with the Heroku server ...

不能用了吗？

I have the same problem....
the error informations were just the same.
 [04:24:09] Maximum number (1) of tries failed.
OpenShift server failed, authorizing/refreshing with the Heroku server ...

感谢反馈。
这个错误不要紧的，只是说OpenShift的授权服务器出错（后面还有一个heroku的，应该是通过了），而且只在第一次授权的时候出现。为了避免更多人把这个当做严重错误，我改了一下，现在只要最后授权成功就不报错了。


Removal of trailing newlines needs to be staged in two parts

VSCode Version: 1.37.1
OS Version: Linux x64 4.15.1-58-generic

Steps to Reproduce:

Remove trailing newlines from a file under version control.
Go to the Source Control view.
Try to stage the removal of these newlines: right-click on the right-hand side and select "stage selected changes"
Notice how there's still one removal that appears to have been left behind.
Repeat step 3
Now your removals have all been staged.

Expected behaviour: at step 3 the entire newline removal should be staged.
Demo video: https://youtu.be/KmlczMUMK9w

Does this issue occur when all extensions are disabled?: Yes

Is there anything I missed regarding this issue? Why is this still open? 😅

@utsavm9 Nope, I can still reproduce this under VS Code v1.39.1
If you haven't checked the video I linked, check it out, it demonstrates the issue better than words can.


Team select field of new snippet form

There are some issues with the team select field of the new snippet form:

Team field cannot be left blank
The list of teams to choose from does not seem up to date with the database. Some teams that do not exist in the database are showing up.
The list of teams are displayed as a list of team IDs instead of team names.

The second bullet point was actually an error in the database data. The application was accurately reflecting the database data.


BRAC dependencies versions seem to be incorrect.

I failed to run train_brac.py with the given requirements.txt. And I find the following dependencies versions work fine:
tensorflow==1.15.0
tensorflow-probability==0.8.0rc0
tf-agents==0.3.0

Previous tensorflow==1.14.0 will cause module 'tensorflow' has no attribute 'TypeSpec', and tensorflow-probability==0.7.0rc0 will cause TypeError: Tensor is unhashable if Tensor equality is enabled.

Thanks! This has been incorporated into a separate evaluations repository at: https://github.com/rail-berkeley/d4rl_evaluations


S2U-27 Handle deleted forums/topic and other fixes

When the automatically created faq forum or topic is deleted, the private message page was broken. Now a new forum or topic is created.
A success message is displayed, after the message is published to faq
The answer field was not displayed in the edit form, that's fixed as well

https://sakaiproject.atlassian.net/browse/S2U-27

Hi @PabloSanRoman, could you help by translating the following string please?
pvt_publish_to_faq_success=The message was successfully published to FAQ
Best regards,
Markus


[vg-dash] Fix source change from DASH to non-DASH

Fix issue #248 for the vg-dash plugin. It was not able to successfully handle switching of the media source from DASH to non-DASH. Seems to be a sequencing issue where the new src would be applied to the video element prior to detaching Dash.js. The Dash.js reset() would then wipe out the src. Now reapply it to the mediaElement after reset().
Also did some very minor clean up and commenting. The context variable did not need to be shared as it's used only to initialize the Dash.js MediaPlayer. It's the player that exposes the useful public API.

Tested and working.
Merged manually with PR #250 in branch RC-1.2.6 that is going to be published probably this weekend.


change Note for webspace

Hi
I  added a new note to prevent unintended deletion of certificates in App Service. Some people misunderstand that is is only used by an App Service and remove it when it is no longer needed in the specific App Service. This can cause service impact.
If you have a better message, please advise.
Thank you

@cephalin
Can you review the proposed changes? Note that the validation warnings will need to be resolved before merging.
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Hello @cephalin Sorry to bother you but could you check this request? Thank you

#sign-off


Reward ad invades iPhone X safe area

I cant find a way to stop the reward ad from invading the safe area in the iPhone X family. What is the way to fix this? I cannot close the ad since it sits behind the clock.

Hi @belisqui
I see there's an open issue addressing the case you described. https://github.com/FirebaseExtended/flutterfire/issues/3090
Please follow up on that issue, I'm closing the current one as a duplicate.
If you disagree, please write in the comments and I will reopen it.
Thank you


[naming-convention] Naming convention rule should allow more options

Currently, the only thing this rule allows is checking format which is a very good start!
I think it would be even better if we could allow other types of checks such as:

suffix e.g. Inputs must have Input suffix: CreateMessageInput
allows special characters. e.g Fragments must be Pascal case but can have special characters in between: CreateUser_User

One way I think we could do it is allowing an object instead of strings for the rule e.g.
"@graphql-eslint/naming-convention": [
          "error",
          {
            "InputObjectTypeDefinition": {
               "format": "PascalCase",
               "suffix": "Input"
            },
            "FragmentDefinition": {
               "format": "PascalCase",
               "allowSpecialCharacters": "_-"
          }
        ]

Alternatively, maybe we could allow passing custom regex?
If this makes sense, I can try creating a PR for it :)

Thank you @eddeee888!
For inputs name, you can use this rule: https://github.com/dotansimha/graphql-eslint/blob/master/docs/rules/input-name.md
Regarding the rest of the things you mentioned, I think we can add that to the rule itself as well, to allow more flexibility.
PRs are always welcome!

you can use this rule: https://github.com/dotansimha/graphql-eslint/blob/master/docs/rules/input-name.md

Hi @dotansimha, I tried using the input name rule but it currently has some tight restrictions ( maybe it needs its own issue ):

It's only being applied to mutations, but users may want to use it for queries as well
It's forcing the case of the input type e.g.

type Mutation {
  postMessage(input: PostMessageInput!): Message!
}

In this example, it fails because it wants the input type to be postMessageInput instead of PostMessageInput. However, it might conflict with the naming-convention rule if we set InputObjectTypeDefinition to PascalCase

Regarding the rest of the things you mentioned, I think we can add that to the rule itself to allow more flexibility.

By "add that to the rule itself", do you mean I should update this file?
Maybe an example of how the config would look if it's different from what I posted? :)

@dotansimha An early draft of the PR for this issue is done here: https://github.com/dotansimha/graphql-eslint/pull/201. Please let me know if it makes sense 🙏

Available in<EMAIL_ADDRESS>Thanks @eddeee888


[GSSOC 21'] Add Birthday Reminder project

I am Vedant Rahane, GSSOC'21 participant.
I would like to add this Javascript based project which contain people's data in array like name and birthday. It will show person if its birthdate matches current date and also automatically calculate age.
Something like this -

Please @urvashi-code1255 and @Vishal-raj-1 assign me this.

Hey @Vedant-Rahane are you still interested in this. I will assign it to you
Do let me know

@991rajat Please assign me this, I am working on it.


Add Number of Hours to the Certifications

Is your feature request related to a problem? Please describe.
Currently, the redesigned certifications do not include the approximate number of hours of coursework required to complete the certifications.
Describe the solution you'd like
Our goal is to add the text "representing 300 hours of coursework" to the text of the certifications.
Describe alternatives you've considered
The redesigned certifications did not include the approximate number of hours of coursework required. This modification was requested by members of the community.
Additional context
No response

See #51215


[BUG R3] Problem with C++ ABI version under Linux

$ ldd konstructs
./konstructs: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./konstructs)
./konstructs: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./konstructs)
/../

Ref #141

Do we need GCC 4.9 for any C++11 feature? I guess not considering that I'm successfully building it with 4.8.4 on my system. Suggested solution: build it with GCC 4.8.x.

This https://github.com/konstructs/build/commit/43107830990b5d84ec26f62c7fc9d790a095197e fixes the problem.

Verified, works!


Sometimes a reminder is sent twice.

The master app's reminder works fine, but the client app sends reminders twice.

Close the issue because the bug is not reproduced.


Basic answering seems to lead to a compromised state

I'm using the algorithm as a backend to an application with about 5-6000 items in it. I've noticed on any item if I answer an item with values 5, then 0, then 5, the data in the algorithm gets into a state where any answer of 5 on any item results in a null value from OFM.of which then results in different NaN or null values and eventually results in the dueDate being "Invalid Date." There is seemingly no way to recover from this state.
Here is a video of my app showing the problem. In the lower right is the item.data() of the item being answered. "Remember" translates to an answer of 5 and "I don't know" translates to an answer of 0.
https://youtu.be/OdpKgqCOEFM
Here is the results of SM.data(), JSON.stringify-ed so you can try for yourself:
On first initializing the app, which just involves instantiation SM and adding each item using addItem. The value of the item is just an ID, since I'm just using sm.js as a backend: https://gist.github.com/meelash/7d9ef5c9cd5cf3743abcbc00ffbe0622
After answering with "5" to any random item (this is sm.data() but I deleted the .q array to make it more manageable): https://gist.github.com/meelash/119cf9deb2b33743ff0bb4d8742af1e3
After answering with "0" to that same item. At this point sm.js is in an unrecoverable broken state: https://gist.github.com/meelash/78189f7a9e26f632a11eabb3040716b7
Which becomes apparent after answering with "5" to that item or any other item: https://gist.github.com/meelash/df09618cdfebfa7623e106532f049a5e
I can supply these as the raw output as well, that has the quotation marks escaped.
Any help or any clue in what could be going wrong or if I'm missing something in my usage would be highly appreciated.

Meelash, were you able to resolve this issue? I am also looking to implement this algorithm as a backend to an application and wondered if it was a worthwhile investment of time. I appreciate any insight.

Nah, I don't think I ever went forward with that project for other reasons. Can't really remember, to be honest.


Add N-dimensional binning function (for biases, non-stationarity quantification etc..)

Binning simultaneously in several (N) dimensions based on scipy
Scipy base function on which I rely: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binned_statistic_dd.html#scipy.stats.binned_statistic_dd
After some searching, the pure pandas solutions seemed a bit hard to extend in N-dimensions: https://stackoverflow.com/questions/60340107/pandas-dataframe-bin-on-multiple-columns-get-statistics-on-another-column
Suggestions of other implementations are welcome. Originally, my own functions were quite simply based on multiple for loops, so lots of room for improvement here  :exploding_head: (those can actually run quite fast, especially when using numba).
Base usage (see full example in test)
from xdem.spatial_tools import nmad
list_df_1d, list_df_2d, list_df_nd = xdem.spstats.nd_binning_scipy(dh=diff.data.flatten(),
list_var=[slp.flatten(),ref.data.flatten(),asp.flatten()],list_var_names=['slope','elevation','aspect'], statistics=['count',np.nanmedian,nmad])

Binning in several dimension simultaneously lowers the amount of samples that can be used for estimation, so it's also very valuable to have the statistics for each 1D and 2D combinations.
Here by default the binning values are subdivided in 10 bins between their min and max. So subdivided into 10 subsamples in 1D, 100 in 2D and 1000 in 3D.
list_df_1d contains all possible binnings in 1D, for example with slope:
list_df_1d[0]
Out[15]:
   count_slope  nanmedian_slope  nmad_slope  binmid_slope
0     487886.0        -0.092560    2.540733      1.784413
1     301319.0        -0.404083    2.913965      5.353238
2     265642.0         0.124084    3.007007      8.922064
3     206016.0         0.677917    3.451950     12.490889
4      46273.0         0.749176    4.222139     16.059715
5       3977.0         0.047241    5.870970     19.628540
6        695.0         0.736572    7.450644     23.197366
7        171.0        -0.417175   13.560306     26.766191
8         36.0         0.144989   14.016108     30.335017
9          5.0       -20.540710   16.012605     33.903843`

Same for list_df_2d for combinations of 2D binning.
list_df_2d[0]
Out[16]:
    count_slope-elevation  ...  binmid_elevation
0                227518.0  ...         58.760407
1                 76479.0  ...        160.176258
2                 65977.0  ...        261.592110
3                 38701.0  ...        363.007962
4                 27911.0  ...        464.423814
..                    ...  ...               ...
95                    3.0  ...        565.839666
96                    0.0  ...        667.255517
97                    1.0  ...        768.671369
98                    1.0  ...        870.087221
99                    0.0  ...        971.503073
[100 rows x 5 columns]

Limitations
1/ Currently, I output the results in several lists, each contain a pd.DataFrame for an easier manipulation. This is because binning variables can have different bin lengths, so the dimension cannot necessarily be concatenated into one dataframe.
An approach to circumvent this issue would be to have basic names for the statistics count, nmad, binmid and then add another column with a string containing the variable name var. Then they could all be concatenated in the same object, even the ones in multiple dimensions (now that I write it, I think that's highly preferable! it's an easy change :smile: )
2/ Right now only the middle value of the bin is returned. I could add 2 columns (bin_min, bin_max) to ensure we have this information as well?
3/ I'm not sure how well the scipy.binned_statistic_dd approach scales with millions of pixels... but I think it would be counterproductive to create our own binning functions that could become deprecated rapidly. Better to base ourselves on an existing pandas/scipy implementation! And I'm not sure pandas.cut is satisfactory for this kind of implementation right now (or maybe I missed something!)

This looks really cool!!! I didn't know that existed, and I see so many uses for it! I need some more time to understand this haha, but I'll just quickly chime in with varying row lengths as pandas multiindices:
>>> import pandas as pd
>>> import numpy as np
# Create three random rows of data
>>> bin1_data = np.random.randn(3 * 3).reshape(3, 3)
# Create six random rows of data
>>> bin2_data = np.random.randn(6 * 3).reshape(3, 3)
>>> bin2_data
array([[-0.99161969, -1.82319573, -1.05818692],
       [-0.76215282,  1.23210638, -0.13424905],
       [ 0.8560318 , -0.11520882, -0.85442712],
       [-1.4066068 , -0.34847478,  0.63734095],
       [-0.33961168,  1.28699075, -0.68437763],
       [-1.82674464, -0.1591328 , -0.60634219]])
>>> bins = [bin1_data, bin2_data]
# Concatenate the data on a multi-index level with the keys [0, 1, ...]
>>> bins_df = pd.concat([pd.DataFrame(data=bin_data, columns=["slope", "aspect", "dh"]) for bin_data in bins], keys=range(len(bins)))
>>> bins_df
        slope    aspect        dh
0 0  0.460147  1.358859  0.615630
  1 -0.762801  0.019033 -0.161678
  2 -0.314703  0.081407  0.280405
1 0 -0.991620 -1.823196 -1.058187
  1 -0.762153  1.232106 -0.134249
  2  0.856032 -0.115209 -0.854427
  3 -1.406607 -0.348475  0.637341
  4 -0.339612  1.286991 -0.684378
  5 -1.826745 -0.159133 -0.606342
# The bin-wise mean can easily be calculated using the `level` argument
>>>>>> bins_df["aspect"].mean(level=0)
0    0.486433
1    0.012181
Name: aspect, dtype: float64

Does that help your nr. 1?

Does that help your nr. 1?

I didn't know about this level argument! Thanks for the example.
I was thinking of doing something similar: instead of relying on the level, add an additional column with the var name to be able to sort/groupby quickly which binning we are interested in.
I'll implement this and show an example, you can tell me if it's clearer!

Update/fixes
(numbers correspond to the points listed above)
1/ Everything is concatenated into a single dataset: all 1D binnings with different variables (added name_var1, name_var2 column names for quick selection) which in turn correspond to bin_mid_var1, etc. Binning in all dimensions are also concatenated and a new column nd (avoiding ndim, that already exists as a pd.DataFrame attribute) reports the number of dimensions used to enable selection/grouping in the DataFrame.
2/ Lower and upper bin values are added to the user output.
3/ Scipy solution runs fast, so efficiency can probably be put aside for now (and added later as an issue if it arises).
Example
df = xdem.spstats.nd_binning_scipy(dh=diff.data.flatten(),list_var=
slp.flatten(),ref.data.flatten(),asp.flatten()],list_var_names=['slope','elevation','aspect'])

Looking at the 1D binning outputs:
df[df.nd==1][['count','nmad','bin_mid_var1','name_var1']]
Out[9]:
      count       nmad  bin_mid_var1  name_var1
0  487886.0   2.540733      1.784413      slope
1  301319.0   2.913965      5.353238      slope
2  265642.0   3.007007      8.922064      slope
3  206016.0   3.451950     12.490889      slope
4   46273.0   4.222139     16.059715      slope
5    3977.0   5.870970     19.628540      slope
6     695.0   7.450644     23.197366      slope
7     171.0  13.560306     26.766191      slope
8      36.0  14.016108     30.335017      slope
9       5.0  16.012605     33.903843      slope
0  243045.0   2.171478     58.760407  elevation
1  143183.0   2.164787    160.176258  elevation
2  184779.0   2.311427    261.592110  elevation
3  178005.0   3.127676    363.007962  elevation
4  160431.0   3.851149    464.423814  elevation
5  143249.0   3.953540    565.839666  elevation
6  120596.0   3.684873    667.255517  elevation
7   89779.0   3.557733    768.671369  elevation
8   40698.0   3.001306    870.087221  elevation
9    8255.0   2.926922    971.503073  elevation
0  152706.0   2.222526      0.314159     aspect
1  141249.0   2.410854      0.942476     aspect
2  159072.0   2.560050      1.570794     aspect
3  133223.0   2.862736      2.199111     aspect
4  116850.0   3.184911      2.827428     aspect
5   99464.0   3.669037      3.455746     aspect
6  112596.0   3.940283      4.084063     aspect
7  119228.0   3.481633      4.712381     aspect
8  129925.0   2.768360      5.340698     aspect
9  147707.0   2.595048      5.969015     aspect

The 2D outputs:
df[df.nd==2][['count','nmad','bin_mid_var1','name_var1','bin_mid_var2','name_var2']]
Out[10]:
       count       nmad  bin_mid_var1  name_var1  bin_mid_var2  name_var2
0   227518.0   2.119683      1.784413      slope     58.760407  elevation
1    76479.0   1.850999      1.784413      slope    160.176258  elevation
2    65977.0   1.886969      1.784413      slope    261.592110  elevation
3    38701.0   4.202140      1.784413      slope    363.007962  elevation
4    27911.0  10.681344      1.784413      slope    464.423814  elevation
..       ...        ...           ...        ...           ...        ...
95     515.0   3.263367    971.503073  elevation      3.455746     aspect
96     557.0   2.940225    971.503073  elevation      4.084063     aspect
97     875.0   2.771731    971.503073  elevation      4.712381     aspect
98    1130.0   2.053958    971.503073  elevation      5.340698     aspect
99     450.0   2.043642    971.503073  elevation      5.969015     aspect
[300 rows x 6 columns]

And in 3D:
df[df.nd==3][['count','bin_mid_var1','name_var1','bin_mid_var2','name_var2','bin_mid_var3','name_var3']]
Out[11]:
       count  bin_mid_var1 name_var1  ...  name_var2 bin_mid_var3  name_var3
0    28263.0      1.784413     slope  ...  elevation     0.314159     aspect
1    25710.0      1.784413     slope  ...  elevation     0.942476     aspect
2    28277.0      1.784413     slope  ...  elevation     1.570794     aspect
3    30895.0      1.784413     slope  ...  elevation     2.199111     aspect
4    24232.0      1.784413     slope  ...  elevation     2.827428     aspect
..       ...           ...       ...  ...        ...          ...        ...
995      0.0     33.903843     slope  ...  elevation     3.455746     aspect
996      0.0     33.903843     slope  ...  elevation     4.084063     aspect
997      0.0     33.903843     slope  ...  elevation     4.712381     aspect
998      0.0     33.903843     slope  ...  elevation     5.340698     aspect
999      0.0     33.903843     slope  ...  elevation     5.969015     aspect
[1000 rows x 7 columns]

Voilà !

This will be super useful for analyzing possible biases in the dDEMs and quantifying uncertainties, thanks!!
I made some comments that I think could help making the code simpler and more readable.
And the tests should be a bit more thorough than this! ;-)

I now had a thorough look and this looks super useful! Great job!!
I have a few comments, mostly not about your intended use, and I envision many to be able to use it for completely different purposes. Perhaps this could be made more generic to be a multi-purpose function (basically just rename the dh argument to something generic, modify the docstring a bit, and it's done!)?
Also, now that I've read the entire documentation and the tests, I more or less understand the functionality. I can unfortunately not say that I understand it completely, and I worry that this might be reflective of other users' experience as well. Could you please elaborate a bit on the docstrings, perhaps add a few minimal examples, and optimally also add documentation to readthedocs (this can of course be done in a later stage)?

Thanks a lot for the comments!! I was updating the function + parameters description with Amaury's comments when you reviewed, so hopefully it's already a lot better :)

@erikmannerfelt @adehecq I think this is ready to merge, so that we can build upon it :)


Standalone Certificates  (beta) issue

Hi,
I'm trying to use the Standalone certificates beta.
I have a set up with three containers.
My docker-compose
version: '3'

services:
  nginx-proxy:
    image: nginx
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    container_name: nginx-proxy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro

  nginx-gen:
    image: jwilder/docker-gen
    command: -notify-sighup nginx-proxy -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    container_name: nginx-gen
    restart: unless-stopped
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro

  nginx-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion:dev
    container_name: nginx-letsencrypt
    restart: unless-stopped
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./app/docker-gen.cfg:/app/letsencrypt_user_data:ro
    environment:
      NGINX_DOCKER_GEN_CONTAINER: "nginx-gen"
      NGINX_PROXY_CONTAINER: "nginx-proxy"

networks:
  default:
    external:
      name: mynetwork

Then my wordpress websites:
version: '3.1'

services:

  site:
    image: wordpress
    environment:
      - VIRTUAL_HOST=yourdomain.tld,www.yourdomain.tld,othersite.tld,www.othersite.tld
      - LETSENCRYPT_STANDALONE_CERTS=('web' 'othersite')
      - LETSENCRYPT_web_HOST=('yourdomain.tld' 'www.yourdomain.tld')
      - LETSENCRYPT_othersite_HOST=('othersite.tld' 'www.othersite.tld')

 networks:
  default:
    external:
      name: mynetwork

Content of the ./app/docker-gen.cfg file, i'm using the basic example provided
[[config]]
template = "/etc/nginx/nginx.conf.tmpl"
dest = "/etc/nginx/sites-available/default"
onlyexposed = true
notifycmd = "/etc/init.d/nginx reload"

[[config]]
template = "/etc/logrotate.conf.tmpl"
dest = "/etc/logrotate.d/docker"
watch = true

[[config]]
template = "/etc/docker-gen/templates/nginx.tmpl"
dest = "/etc/nginx/conf.d/default.conf"
watch = true
wait = "500ms:2s"

[config.NotifyContainers]
nginx = 1  # 1 is a signal number to be sent; here SIGHUP
e75a60548dc9 = 1  # a key can be either container name (nginx) or ID

The result is one SSL cert is generated for yourdomain.tld  with alternate name www.yourdomain.tld.
But no SSL cert for othersite.tld www.othersite.tld
I don't understand well the following part of the doc:

The user configuration file is a collection of bash variables and array, and follows the syntax of the /app/letsencrypt_service_data file that get created by docker-gen.

That's why i used the basic example conf from jswilder/docker-gen
Also this part

Picking up changes to letsencrypt_user_data
The container does not actively watch the /app/letsencrypt_user_data file for changes.
Changes will either be picked up every hour when the service loop execute again, or by using docker exec your-le-container-name-or-id /app/signal_le_service to manually trigger the service loop execution.

So i guess this is where the problem comes from. What is the "signal_le_service" in my case ?
Thank you !

You don't need to use standalone certificates at all in this case. Just follow basic usage and use the LETSENCRYPT_HOST environment variable on your wordpress container.
version: '3.1'

services:

  site:
    image: wordpress
    environment:
      - VIRTUAL_HOST=yourdomain.tld,www.yourdomain.tld,othersite.tld,www.othersite.tld
      - LETSENCRYPT_HOST=yourdomain.tld,www.yourdomain.tld,othersite.tld,www.othersite.tld

 networks:
  default:
    external:
      name: mynetwork

Standalone certificates are only meant to be used when you need to create and renew certificates that are not tied to a container environment variable and/or not used for proxying with nginx-proxy.
If you want to use standalone certificates, the variables go into the file that you mount as /app/letsencrypt_user_data inside the container.
Using your example, create a file with this content:
LETSENCRYPT_STANDALONE_CERTS=('web' 'othersite')
LETSENCRYPT_web_HOST=('yourdomain.tld' 'www.yourdomain.tld')
LETSENCRYPT_othersite_HOST=('othersite.tld' 'www.othersite.tld')

And mount it inside the LE container as /app/letsencrypt_user_data.
I think I kinda see where the confusion with the docker-gen.cfg file came from, I'll try to clarify the doc.
As for the part about picking up change, it means that if you change your /app/letsencrypt_user_data while the container is running, those change won't be picked up right away and you'll have to use a manual command or wait for the next execution of the cert creation / renewal loop (every hour). /app/signal_le_service is the actual name of the script that you have to use inside the container to trigger this loop.
Also please keep the discussion about this feature on #368

Closing due to inactivity.


Streamlit app for chatting with a KG

Start a chat with the user in curious mode with goal of getting to know them
Gather the data into a knowledge graph incrementally and use it to advance the conversation
During the process the graph should be visualised next to the chat in order for the user to be able to see what the AI is storing in the graph

https://docs.streamlit.io/library/api-reference/charts/st.graphviz_chart


Fix OpenAPIV3Schema Validation Issue

Temporarily corrects spec.validation.openAPIV3Schema issue, and it would be removed
after this issue was fixed https://github.com/oam-dev/kubevela/issues/284.

Hit issue https://github.com/oam-dev/kubevela/issues/301. Need more time to fix this issue first.


What is going on here? Doesn't look like this code does anything or is incomplete.

https://github.com/danpaquin/gdax-python/blob/62b7b808914f3573ca2ac10c0e59159e34e99d08/gdax/order_book.py#L188

Duplicate #191


Make it possible to register call for method with AnyObject? argument

Description
Fixes bug which made it impossible to register call with AnyObject? argument. We were simply missing an arg implementation for AnyObject?.
Checklist

[x] Documentation has been added or updated.
[x] All applicable classes have unit tests.
[x] This PR contains no commented out code.

LGTM


Autogenerated/neptop.vision teacher/00a53ce3 f21f 464c 93c7 6d1ed4d078ea

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

rename neptop to netop

Automatic Validation ended with:

Manifest: The manifest file path must match PackageIdentifier and PackageVersion properties from manifest. actual
'manifests\n\Neptop\VisionTeacher\<IP_ADDRESS>', expected
'manifests\n\Netop\VisionTeacher\<IP_ADDRESS>'

@wingetbot waivers Add Validation-Domain


Fixed automated clean up for appended doc

Issue #, if available:
Description of changes:

If there was an error in writeToDoc(), that file would not be cleaned up

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/hold
until release is done

/unhold


Consider searching with JS regexes in unicode mode

JS regexes now support a u flag which changes their semantics regarding unicode characters in some ways and enables some new features.
Examples:
/𝌆{2}/u.test('𝌆𝌆') => true
/𝌆{2}/.test('𝌆𝌆') => false

/\p{Sm}/u.test('+') => true
/\p{Sm}/.test('+') => false

Example in vscode:

Have 𝌆𝌆 in editor
Search 𝌆{2}
No match
Searching 𝌆𝌆 does match

Not sure how many users are affected by this but it's worth investigating.
Also, this support seems half-baked in Node 8 but works more in Node 10, so maybe we wait for an electron update.
More info: https://mathiasbynens.be/notes/es6-unicode-regex

@rebornix now that we are using Node 10, I suggest we do this for the editor. Any reason not to?

@roblourens I'm not aware of any reason why we don't want to do that. If I understand correctly, we only need to add u flag to the regex search, right?

Yes. I suggest we move it to August to give plenty of time. This goes with https://github.com/microsoft/vscode/issues/62416 too.


Add Horizontal and Vertical Rotation axes (HROT and VROT)

The names are probably up for discussion, but Tilt has these two axes HROT and VROT that we need to somehow support. See the animated images in its repo for clarification.

Because it's a rotation, I propose values to go from -180 to +180 for any rotational axes

Vertical Rotation
#Vertical Rotation, base on https://github.com/andyclymer/Tilt-Typeface
tag: "VROT"
display_name: "Vertical Rotation"
min_value: -180
default_value: 0.0
max_value: 180
precision: 0
description:
    " "

Horizontal Rotation
#Horizontal Rotation, base on https://github.com/andyclymer/Tilt-Typeface
tag: "HROT"
display_name: "Horizontal Rotation"
min_value: -180
default_value: 0.0
max_value: 180
precision: 0
description:
    " "

Hi @yanone, please check if the information above is ok for the axes and edit (e.g. adding the description) anything.
I don't remember right now which were the optional names we discussed at one point in the meeting, but I can remember we said this is not an actual rotation as it happens in a more 3D way. Perhaps it was ZRotation?

if precision: 0 then default_value: 0.0 should be default_value: 0 since precision 0 means no values after the decimal place; -1 means one digit after, etc.
Possibly these 2 should be Rotation, Horizontal with tag ROTH and Rotation, Vertical with tag ROTV so that they sort together in alphabetical sorts.
Also perhaps X and Y instead of Horizontal and Vertical.

if precision: 0 then default_value: 0.0 should be default_value: 0 since precision 0 means no values after the decimal place; -1 means one digit after, etc.

Right, I copied the list from another case and forgot to change it. Updated now.

Also perhaps X and Y instead of Horizontal and Vertical.

I don't know how descriptive or user-friendly would X and Y be. It could be one of the following:
Z Rotation Horizontal -> ZROTH` +  Z Rotation Vertical -> ZROTV

Z Rotation X -> ZROTX + Z Rotation Y -> ZROTY

Z as it's a rotation in that axis.
Common rotation

Tilt Rotation Horizontal

Tilt Rotation Vertical

This would mean Tilt rotates around the x and z axis.

Right, it would be on the x and z axes.

Horizontal and vertical, in comparison, sounds very straightforward to comprehend

Agree, that was my concern around user-friendly names.
Although I'm still unsure if by calling all of them Rotation, how easy would it be to differentiate the three axes' behavior. Revolve? Revolve Horizontal (REVH)

Revolution is defined as an object that revolves at a distance around another point or object, and it's not clear whether it also rotates. Rotation happens in place and without distance to the middle point. Revolution is misleading.

I was thinking on Revolve not revolution. Unless either my English falls short here or it is not a too common word in English.

Considering:

I don't know which approach is better. Horizontal and vertical, in comparison, sounds very straightforward to comprehend, but we should consider the third axis from the beginning. Things will rotate around the third axis and even if it's a font that has only this third (common) type of rotation, which could also simply be called Rotation.

Possibly these 2 should be Rotation, Horizontal with tag ROTH and Rotation, Vertical with tag ROTV so that they sort together in alphabetical sorts.

I'm updating the H-V proposal as follows, leaving the open space for z to be just called ROTA:
Rotation Vertical
#Vertical Rotation, based on https://github.com/andyclymer/Tilt-Typeface
tag: "ROTV"
display_name: "Rotation Vertical"
min_value: -180
default_value: 0
max_value: 180
precision: 0
description:
    "Letters rotate around the y axis"

Rotation Horizontal
#Horizontal Rotation, based on https://github.com/andyclymer/Tilt-Typeface
tag: "ROTH"
display_name: "Rotation Horizontal"
min_value: -180
default_value: 0
max_value: 180
precision: 0
description:
    "Letters rotate around the x axis"

Rotation
#Rotation
tag: "ROTA"
display_name: "Rotation"
min_value: -180
default_value: 0
max_value: 180
precision: 0
description:
    "Letters rotate around the z axis"

Possibly these 2 should be Rotation, Horizontal with tag ROTH and Rotation, Vertical with tag ROTV so that they sort together in alphabetical sorts.
Also perhaps X and Y instead of Horizontal and Vertical.

I spoke to Evan about this and he had a strong preference for X and Y over H and V, since we already have parametric axes with X and Y, and while these are not Font Bureau Parametric Axes, they are focused on isolated changes in X or in Y dimensions, so he prefers not to introduce a new second term for the same thing.
He also required XROT and YROT but the labels could sort the same, like "Rotate in X" and "Rotate in Y". (Vertical and Horizontal are also long and we have a preference for short labels)

I spoke to Evan about this and he had a strong preference for X and Y over H and V

Okay, thanks for the clarification, wasn't aware of this. In that case, it would be:
Y Rotation
#Rotation in Y, based on https://github.com/andyclymer/Tilt-Typeface
tag: "YROT"
display_name: "Rotation in Y"
min_value: -180
default_value: 0
max_value: 180
precision: 0
description:
    "Letters rotate around the Y axis"

X Horizontal
#Rotation in X, based on https://github.com/andyclymer/Tilt-Typeface
tag: "XROT"
display_name: "Rotation in X"
min_value: -180
default_value: 0
max_value: 180
precision: 0
description:
    "Letters rotate around the X axis"

Perfecto


lat lon validation feasible?

Hi all, great work on the models so far 🎉
I'm wondering if it would make sense to include validation for latitude & longitude for coordinates and bbox?
So to check if coordinate input is in the correct order (lon, lat as per geojson spec) for lat input >90 or <-90
Boundaries checks would be:
-180.0 <= lon <=180.0
-90.0 <=lat <= 90.0
Not sure how to do this.. Is it even possible to validate tuples that don't have a key?

The newest version of the geojson spec uses WGS84:

The coordinate reference system for all GeoJSON coordinates is a geographic coordinate reference system, using the World Geodetic System 1984 (WGS 84) [WGS84] datum, with longitude and latitude units of decimal degrees.

Older versions of the spec allowed other coordinate systems:

Note: the use of alternative coordinate reference systems was specified in [GJ2008], but it has been removed from this version of the specification because the use of different coordinate reference systems -- especially in the manner specified in [GJ2008] -- has proven to have interoperability issues.

But the spec notes that if interoperability is not an issue, than alternative coordinate systems can be used:

However, where all involved parties have a prior arrangement, alternative coordinate reference systems can be used without risk of data being misinterpreted.

My concern is that adding coordinate validation specific to a single coordinate system will be too restrictive, as the spec seems to indicate that it is possible to have a geojson object that is not WGS84.  In such a case we might raise validation errors on a "valid" object.  I'm interested in other people's opinions on how the models should be supporting specific coordinate systems if at all.

Hmm valid point, although i guess in most cases WGS84 will be used.
Maybe an option would be to validate WGS84 by default but make it possible to adjust it to other CRS.
Still not sure if it is even possible to implement the validation, as the Coordinates are not a BaseModel but a Tuple..
Anyway, for my use case i can still create Model inheriting from Polygon and do the validation there i guess

Anyway, for my use case i can still create Model inheriting from Polygon and do the validation there i guess

I think this is the best solution for now.

Still not sure if it is even possible to implement the validation, as the Coordinates are not a BaseModel but a Tuple..

A good approach is overriding the coordinates validator to also check each coordinate, for bbox you could do the same.  Pydantic also lets you define a custom root type which lets you validate each Coordinate:
from geojson_pydantic.geometries import Coordinate, Point as _Point
from pydantic import BaseModel, Field, root_validator

class WGS84Coordinate(BaseModel):
    __root__: Coordinate

    @root_validator(pre=True)
    def validate_coords(cls, values):
        if abs(values['__root__'][0]) > 180:
            raise ValueError("invalid longitude")
        if abs(values['__root__'][1]) > 90:
            raise ValueError("invalid latitude")
        return values

    def __iter__(self):
        return iter(self.__root__)

    def __getitem__(self, item):
        return self.__root__[item]

class Point(_Point):
    type: str = Field("Point", const=True)
    coordinates: WGS84Coordinate

pt = Point(coordinates=[-118,34])
assert pt.coordinates[0] == -118
assert pt.coordinates[1] == 34

# This will raise validation error (invalid longitude)
pt = Point(coordinates=[34,-118])

That's exactly what i need!
You make it look so easy. I was looking at the pydantic root type before, but was a bit deterred by the example as it looked rather complex.
Thank you for the structured example

Thanks @TheGreatRefrigerator @geospatial-jeff; I agree with leaving this out for now because other projections can technically be used. I think the example shown is a good way validate if needed

Hey thanks for this useful library! I have a question related with this kind of validation. Let's say I now want to have a FeatureCollection that validated each geometry according to your defined WGS84Coordinate. Do I need to define again each class ? Can't find a simple way to achieve it, while i thought that was the point of being a generic class.

@bensdm sadly it would be a bit verbose
from typing import List, Union
from pydantic import BaseModel, Field, root_validator

from geojson_pydantic import geometries, features

# Overide the Position Type (with a Pydantic Model)
class Position(BaseModel):

    __root__: geometries.Position

    @root_validator(pre=True)
    def validate_coords(cls, values):
        if abs(values['__root__'][0]) > 180:
            raise ValueError("invalid longitude")
        if abs(values['__root__'][1]) > 90:
            raise ValueError("invalid latitude")
        return values

    def __iter__(self):
        return iter(self.__root__)

    def __getitem__(self, item):
        return self.__root__[item]

# Create new Geometries Models
class Point(geometries.Point):
    """Point Model"""

    coordinates: Position

class MultiPoint(geometries.MultiPoint):
    """MultiPoint Model"""

    coordinates: List[Position]

class LineString(geometries.LineString):
    """LineString Model"""

    coordinates: List[Position] = Field(..., min_items=2)

class MultiLineString(geometries.MultiLineString):
    """MultiLineString Model"""

    coordinates: List[List[Position]]

class Polygon(geometries.Polygon):
    """Polygon Model"""

    coordinates: List[List[Position]]

class MultiPolygon(geometries.MultiPolygon):
    """MultiPolygon Model"""

    coordinates: List[List[List[Position]]]

# Geometry Type
Geometry = Union[
    Point,
    MultiPoint,
    LineString,
    MultiLineString,
    Polygon,
    MultiPolygon,
]

# Use Generics and set `features` to have geometries of type `Geometry` (with the constrained coordinates)
FeatureCollection = features.FeatureCollection[
    Geometry,
    features.Props,
]


Switch from Webhook ConfigMap to CRs

TL;DR;
Remove defining webhooks by custom ConfigMap and switch to CRs - Cluster(WebHook) and Cluster(WebHooksScenario).
Reasons
At the moment webhooks are applied in Rafter by custom ConfigMap or inline in (Cluster)Assets (this is not a problem). Problems with ConfigMap (and not only):

webhooks (for (Cluster)AssetGroups) are applied in global scope (in meaning: applied for all cluster and namespaces resources), and user cannot disable webhook for appropriate ClusterAssetGroup or AssetGroup.
poor configuration for scenario (in meaning: order in which Rafter processes them) - at the moment we have hardcoded this part: first is mutation, then validation, and at the end metadata (extractor).
we haven't Procedural webhook for custom action (not only for mutation, extractor or validation) - for examples: request to another service if asset will be md file. So from my perspective, user should have possibility to write custom hook.
we have hardcoded external ports through which Rafter communicate with services (and user cannot change it) - I would like to ask for correction because I did not find anything about it in the code, but I have heard it several times and I am not sure now whether it is true

New types
Rafter would have such webhooks:

Mutation webhook - modifies fetched assets before the Asset Controller uploads them into the bucket.
Extraction webhook - extract metadata from assets and inserts it under the status.assetRef.files.metadata field in the Asset/ClusterAsset CR.
Procedural webhook - perform custom actions like checking if content of file meets some criteria (like an old validation hook).

and CRs pointed to character of webhooks:

ClusterWebHook/WebHook CR - specific characteristic of webhook with fields:

spec.type - type of webhook (types are describe above): mutation | extraction | procedural.
spec.sourceTypes - array of types admitted to the webhook (based on type field of source in (Cluster)AssetGroup CR and in (Cluster)Asset - we must also fix it, because we have only type field on sources of AssetGroup CR). OPTIONAL field, because user can allows all types.
endpoint - endpoint to perform action. Example https://example.com/v1/convert.
spec.serviceRef - reference to service which exposes endpoint for mutation/extraction/other actions.
spec.serviceRef.name - name of service.
spec.serviceRef.namespace - namespace of service.
spec.serviceRef.endpoint - endpoint of service to perform action.
spec.parameters - additional parameters (in object) which are passed to endpoint. OPTIONAL field.
spec.filter - determines what files are to be sent from the asset to the webhook by regex. OPTIONAL field.

NOTE: One of spec.endpoint or spec.serviceRef must be specified. Otherwise an error will occur.

Examples:
apiVersion: rafter.kyma-project.io/v1beta1
kind: ClusterWebHook/WebHook
metadata:
  name: asyncapi-converter
  namespace: kyma-system # if kind is WebHook
spec:
  type: "mutation"
  sourceTypes:
    - asyncapi
  endpoint: https://example.com/v1/convert
  filter: "\\.yaml$"
  parameters:
    foo: bar

apiVersion: rafter.kyma-project.io/v1beta1
kind: ClusterWebHook/WebHook
metadata:
  name: asyncapi-converter
  namespace: kyma-system # if kind is WebHook
spec:
  type: "mutation"
  sourceTypes:
    - asyncapi
  serviceRef:
    name: rafter-asyncapi-service
    namespace: kyma-system
    endpoint: "/v1/convert"
  filter: "\\.yaml$"
  parameters:
    foo: bar

ClusterWebHooksScenario/WebHooksScenario CR - scenario of webhooks (in meaning: order in which Rafter processes them):

spec.scenario - list of webhooks pointed by name. Element of list must contains:

webhookRef - reference to ClusterWebHook/WebHook CR.
webhookRef.kind - ClusterWebHook or WebHook type.
webhookRef.name - name of webhook.
webhook - implementation of spec field of ClusterWebHook/WebHook.

Example:
apiVersion: rafter.kyma-project.io/v1beta1
kind: ClusterWebHooksScenario/WebHooksScenario
metadata:
  name: sample-webhook-scenario
  namespace: kyma-system # if kind is WebHooksScenario
spec:
  scenario:
  - webhookRef:
      kind: ClusterWebHook
      name: markdown-front-matter-extractor
  - webhookRef:
      kind: WebHook
      name: asyncapi-converter # WebHook in kyma-system namespace
  # we can also create anonymous WebHooks in scenario with this same fields like in `ClusterWebHook/WebHook`
  - webhook:
      type: "mutation"
      sourceTypes:
        - asyncapi
      serviceRef:
        name: rafter-asyncapi-service
        namespace: kyma-system
        endpoint: "/v1/convert"
      filter: "\\.yaml$"
      parameters:
        foo: bar
  - webhook:
      type: "mutation"
      sourceTypes:
        - asyncapi
      endpoint: https://example.com/v1/convert
      filter: "\\.yaml$"
      parameters:
        foo: bar

As we can see, we have a limitation for scenarios:

for WebHooksScenarios we can bind ClusterWebHooks and WebHooks (of course with this same namespace as WebHooksScenario).
for ClusterWebHooksScenarios we can bind only ClusterWebHooks.

Failure of one hook in the scenario interrupts further operations and sets resource status to Failed.
Procedural webhook
I introduce Procedural webhooks, because they allow custom actions independent of the webhook type and I think that separating the validation process into a separate one (webhook type) is not necessary, so validation hook will be implemented in a procedural hook from now.
Binding WebHooks in (Cluster)Assets and (Cluster)AssetGroups
As I mentioned in Reason section, webhooks defined in ConfigMap are applied in global scope (in meaning: applied for all cluster and namespaces Assets CR) and user cannot disable webhook for appropriate ClusterAssetGroup or AssetGroup.
So, my proposition is inject webhooks by ClusterWebHooksScenario/WebHooksScenario and/or single ClusterWebHook/WebHook:
For ClusterAsset/Asset
apiVersion: rafter.kyma-project.io/v1beta1
kind: Asset
metadata:
  name: sample-asset
  namespace: kyma-system
spec:
  ...
  webhooks:
    - scenarioRef:
        kind: WebHooksScenario
        name: sample-webhook-scenario
    - webhookRef:
        kind: ClusterWebHook
        name: markdown-front-matter-extractor
    - webhook:
        type: "mutation"
        endpoint: https://example.com/v1/convert
        filter: "\\.yaml$"
        parameters:
          foo: bar

For ClusterAssetGroup/AssetGroup
apiVersion: rafter.kyma-project.io/v1beta1
kind: AssetGroup
metadata:
  name: sample-assetgroup
  namespace: kyma-system
spec:
  ...
  webhooks:
  - scenarioRef:
      kind: WebHooksScenario
      name: sample-webhook-scenario
  sources:
  - ...
    webhooks:
      - webhookRef:
          kind: ClusterWebHook
          name: markdown-front-matter-extractor
      - webhook:
          type: "mutation"
          endpoint: https://example.com/v1/convert
          filter: "\\.yaml$"
          parameters:
            foo: bar

In case, when user defines webhooks for single assets, then webhooks injected in ClusterAssetGroup/AssetGroup will be completely overwritten for them (this same behavior like now).
Service specification requirements

service for Mutation webhook must expose endpoints that:

accept parameters and content properties, where parameters is additional parameters defined in ClusterWebHook/WebHook CR or inline in ClusterWebHooksScenario/WebHooksScenario CR, and content is a content of file.
return the 200 response with new file content.
return the 304 response informing that the file content was not modified.

service for Extraction webhook must expose endpoints that:

accept parameters and content properties, where parameters is additional parameters defined in ClusterWebHook/WebHook CR or inline in ClusterWebHooksScenario/WebHooksScenario CR, and content is a content of file.
return the 200 response confirming that validation succeeded.
return the 422 response informing why validation failed.

service for Procedural webhook must expose endpoints that:

accept parameters and content properties, where parameters is additional parameters defined in ClusterWebHook/WebHook CR or inline in ClusterWebHooksScenario/WebHooksScenario CR, and content is a content of file.
return the 2** response with custom message about successful operation.
return the 4** response with custom message about failed operation.

Comments and suggestions are welcome!
I am still thinking about the 4th type of webhook: StatusWebhook, which would perform custom action like Proceural, but based of status of (Cluster)Asset or (Cluster)Asset, but I know it can be done in a different way, unrelated to the Rafter himself, so for now I abandoned investment in this case.
In addition, we must define the option of defining default hooks per namespace or cluster (at the moment we have injecting them in all Cluster(AssetGroup) by ConfigMap). A labels probably will be the best for that case, but we can think about that together :)

We dont want to invest in rafter within Kyma organisation.
The rafter use case is no longer valid for kyma runtime


Upgrade to Realm Web JS 1.5.1

MDB Realm Web JS 1.5.1 now integrates the necessary fix so we don't need the worktop code injections.

Yes, it's online now, on the real DevHub, which is the most up-to-date version.


chore: anti-flakiness spring offensive

This has been on my mind for a long while: Run the tests in the merge queue multiple times to make detecting flakiness easier.
Currently there's some issue surfaced with #4250 , so temporarily disable random peer failures.

Might be worth surfacing: I'd anticipate this will add ~30 minutes in CI for merges

A quick scan of recent test steps (example) take ~8 minutes
Running 5 times in merge queue => 40 minutes, thus ~30 additional

I'd assume you're implicitly okay with that, just want to surface.

One thing I've been wondering about -- would there be any way to automatically record when a specific test fails and then passes when manually retried (without code changing at all)? Basically automate what we do manually in https://github.com/fedimint/fedimint/issues/2825.

One thing I've been wondering about -- would there be any way to automatically record when a specific test flakes?

The hope is that it won't be necessary because everything will keep failing all the time.

lets see if it passed the merge queue

is this "merge-base changed" bugged? I see no changes

This does seem quite buggy now. @dpc think it's worth rebasing so https://github.com/fedimint/fedimint/commit/25acaa101a744509a1660aa3893c51eec8ae2190 is no longer a part of this PR?

Rebased.
As for time it takes - easy to lower.

might be interesting to mark some tests as flaky and merge this PR, so we don't introduce any new flakes
https://nexte.st/book/retries.html

might be interesting to mark some tests as flaky and merge this PR, so we don't introduce any new flakes https://nexte.st/book/retries.html

Oh. Never used that. Yeah, we can do that. But in practice it will mean giving up on fixing the problem, as no one is paying attention to test outputs in the CI. Better than nothing though.

fedimint-workspace-lcov-ci> 2024-02-09T22:55:38.328326Z  WARN new:task{name="listen task"}: net::peer: Error while opening incoming connection mint=PeerId(3) err=Randomly failed

didn't we remove random failures

fedimint-test-all-ci> parallel: This should not happen. You have found a bug. Please follow
fedimint-test-all-ci> https://www.gnu.org/software/parallel/man.html#reporting-bugs
fedimint-test-all-ci> Include this in the report:
fedimint-test-all-ci> * The version number: 20230922
fedimint-test-all-ci> * The bugid: Less than 1 byte memory free
fedimint-test-all-ci> * The command line being run
fedimint-test-all-ci> * The files being read (put the files on a webserver if they are big)
fedimint-test-all-ci> If you get the error on smaller/fewer files, please include those instead.

I wanted bugs in Fedimint... not in GNU Parallel...

didn't we remove random failures

I think there might be two types of random failures and one is one tests, on the others.

Pushed a fix: we didn't run tests on macos, so we shouldn't run 5 tests either.

After this commit, should we undo running coverage tests 5 times? Seems like this should have it covered.

There might be some differences in the run time performance due to ccov overhead, so maybe if could expose some stuff that doesn't show up here, but sure, we can tweak all we want.

Aaaaaaand it flaked again :see_no_evil:

Aaaaaaand it flaked again 🙈

I think it was one of the fixes I already had but didn't push with it yet. Let's try again.


Document and improve summary data logging with tensorboard.

Method _summarize of NeuralInference logs to tensorboards SummaryWriter variables with names:

median_observation_distances
epochs_trained
best_validation_log_prob
validation_log_probs_across_rounds
train_log_probs_across_rounds
epoch_durations_sec_across_rounds

There meanings are not documented. Also, the usage of x_0 is deprecated and can be removed.

https://github.com/mackelab/sbi/issues/586#issuecomment-1020105585


conan -> cmake

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 91.14%. Comparing base (ccf4601) to head (d5a60df).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #234   +/-   ##
=======================================
  Coverage   91.14%   91.14%
=======================================
  Files          57       57
  Lines        8478     8478
=======================================
  Hits         7727     7727
  Misses        751      751

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


remove dependencies for ReactiveCollection

I just wanted to quickly integrate the ReactiveCollection in my app, so i thought that it would work well if it just took a ref() therefore, it doesnt need any other dependencies:
https://gist.github.com/tonypee/c2dcf22a1f3075e388fc0a7454a88ef6
Maybe this would be a good feature

scratch that, 1 dependancy  (firebase) is definitely best.
import firebase from 'firebase'

export class ReactiveCollection {

  _ref = null;
  _valueMap = new Map();
  items = [];

  constructor(path) {
    this._ref = firebase.database().ref(path)
    this._listenToQuery(this._ref);
  }


add new PLAY_FILENOTFOUND alert

Add new Alert to Time Series for forthcoming PR in feature-server
jslint run
tests run

published in version 0.2.12 @sammachin


Watermark filter doesn't work in V4

Hi,
Watermark filter doesn't work anymore in V4.
Is it normal ?
Thanks.

Hi @TuNi54 - This appears to be a duplicate of #131. Closing for consolidation. Please comment back on this thread if you're looking for something different than what's in that issue. Thanks!

We have updated our solution, and I believe your issue has been fixed. If you still see the issue with the latest version (v4.2), please feel free to reopen the issue.
For the way how you can create a watermark, you can refer to the implementation guide Appendix D: List of Supported Thumbor Filters.
You can also refer to the recent changes here.


Clean ambigs.h and replace octal characters by UTF-8 string in universalambigs

The LoadUniversal method is always called for each language (plus typically for osd) and requires significant resources (time and memory) although the unichar_ambigs are often unused.
So there remains potential for optimizations.

Is unichar_ambigs used only by legacy engine/models?

thanks!

VS now says
C:/projects/tesseract/src/ccutil/universalambigs.cpp(7321): fatal error C1091: compiler limit: string exceeds 65535 bytes in length

What it version of VS? I just try clang 9 with VS compatibility and build is without problem.

This is from appveyor (VS2017).
Any VS has such string limit. Other compilers obviously don't.
And clang usually do not repeat bad parts of VS in compat mode.

OK. I see....  On SO there is suggestion to use array instead of long string .

That VS compilers are always good for a surprise. They accept long character arrays if those arrays are initialized using integers (like in the old code), but not if they are initialized by a string (like in the new code), although that is the more natural form.
I already considered to move the string into an external config file. That would reduce the size of the tesseract binary, but cost a little extra time for the file handling. I think that might be acceptable if it is only done when it is really used – I still have to find out that.

VS standard is to use resource file for such purposes. Similar technique is used by Qt library (on all supported platforms). But there is nothing like that in pure C or C++ that would be portable...
Unfortunately on your idea to move it to external file is in conflict with my idea ;-) to have just library where is everything needed excluding language data. So packagers do not need to distribute config files and care about their location.

I do similar embedding of needed files.
Cppan/Sw unpacks them when running.

The 'temporary' hack done in b8079d8ce18996a should be fixed somehow.

The langdata repo also contains unicharambigs files:
https://github.com/tesseract-ocr/langdata/blob/master/eng/eng.unicharambigs

The content of universalambigs.cpp looks strange to me.


Feature Request: defaultToViewer field option

I think it would be valuable to specify that a field on an ent should default to the viewer.
For example, imaging a task app where a task has the following fields:
    StringType({ name: "title" }),
    StringType({ name: "body" }),
    BooleanType({ name: "closed", nullable: false, defaultValueOnCreate: () => false }),
    UUIDType({
      name: "authorID",
      fieldEdge: { schema: "User", inverseEdge: "authoredTasks" },
      storageKey: "user_id",
    }),

or similar.
We would want to set the actions like this:
actions: Action[] = [
    {
      operation: ActionOperation.Create,
      fields: ["title", "body", "authorID"],
    },
    {
      operation: ActionOperation.Edit,
    },
    {
      operation: ActionOperation.Delete,
    },
    // Set closed / open
    {
      operation: ActionOperation.Edit,
      actionName: "EditTaskClosedAction",
      graphQLName: "taskClosedEdit",
      inputName: "EditTaskClosedInput",
      fields: [requiredField("closed")],
    },
  ];

such that the create action doesn't have to send a value for closed - tasks are created opened by default.
This will create a gql create mutation with the following input:
input TaskCreateInput {
  title: String!
  body: String!
  authorID: ID!
}

However, in the vast majority of cases we likely want the authorID to be set to that of the viewer. We can enforce that with privacy rules (I think, haven't tried?), but that still leaves the API with a unnecessary field for the common case.
I'd rather default to having the authorID missing from the TaskCreateInput entirely (but I can see why that would probably require a second mutation to exist that allows you to set the authorID, perhaps for admin interface etc.
So perhaps a good compromise is to make the authorID optional in the input, and when missing default to the ID of the viewer. And add a field option defaultToViewer, which by default sets the field to the UUID of the viewer if it's missing?
i.e. the schema would change to:
    StringType({ name: "title" }),
    StringType({ name: "body" }),
    BooleanType({ name: "closed", nullable: false, defaultValueOnCreate: () => false }),
    UUIDType({
      name: "authorID",
      fieldEdge: { schema: "User", inverseEdge: "authoredTasks" },
      storageKey: "user_id",
      defaultToViewer: true,
    }),

and the input would change to:
input TaskCreateInput {
  title: String!
  body: String!
  authorID: ID
}

And clients, by default, would ignore the authorID field entirely.

oh, and your actions will change to:
actions: Action[] = [
    {
      operation: ActionOperation.Create,
      fields: ["title", "body"],
    },
    {
      operation: ActionOperation.Edit,
    },
    {
      operation: ActionOperation.Delete,
    },
    // Set closed / open
    {
      operation: ActionOperation.Edit,
      actionName: "EditTaskClosedAction",
      graphQLName: "taskClosedEdit",
      inputName: "EditTaskClosedInput",
      fields: [requiredField("closed")],
    },
  ];

so you'll still have the authorID missing from the generated input

ok, i've implemented the defaultValueOnCreate method.
Not trivial to implement defaultToViewer which basically does what you want.
few questions:

my guess is  defaultToViewer should only apply during creation and not editing? If so, should be renamed to something that makes that clear.
my instinct is to throw if both defaultToViewer(OnCreate) and defaultValueOnCreate exist since they'd be doing the same thing. does that align with what you'd expect?

I think generalising defaultValueOnCreate makes loads of sense!
Do I think defaultToViewer is valuable still - probably, but only if the API isn't overly complicated because of it. I guess maybe implement and I'll play with it if it's trivial?

my guess is defaultToViewer should only apply during creation and not while editing?

Yes I think so too. If a task was created by Alice, and later edited by Bob (who's an admin) then the omission of an authorID field in the edit payload shouldn't overwrite the task to be authored by Bob. I can't think of any case where I'd expect the author to be updated in that case.

If so, should be renamed to something that makes that clear.

defaultToViewerOnCreate?

my instinct is to throw if both defaultToViewer(OnCreate) and defaultValueOnCreate exist since they could be doing conflicting things. does that align with what you'd expect?

Yes. Although this is where I wonder if your more general approach is enough and we should just can defaultToViewer - it's adding extra weight to the API that could be solved easily enough in documentation. But it is also cleaner and is likely to be a common use case. So I'm conflicted.
But coming down on implementing as it should be nice and clean for the common use case.

in newest version

Amazing. I'll upgrade and check it out.

Works a treat, love it 👍


Meteor (Desktop) intermittently slow DDP catch up

We are using meteor desktop in a production application, but when the application experiences network issues (package loss over wifi) and a document is added to a local collection the document is visible at first (mininongo, probably), disappears after half a minute (when it fails to sync?) and then appears again after 15 minutes.
Could this be related to the way electron stores the mini mongo data?

We don't think this particular issue is Electron related anymore.
More likely to be a network issue.


Add community rules

Not sure where to put it but these rules should echo the rules in the community Discord.

The bottom of "About" might make sense. Alternatively it could be on the "Welcome" page, between "Welcome" and "Join Us" to make it more discoverable


On weekend's afternoons reasons for weekends don't display, only reason for afternoon

Maybe you should check if is weekend before to check if is afternoon.

Closed with #195


Go control plane generation

Title: Go control plane generation missing v2 API
Description:

I am trying to generate go control plane using tools/api/generate_go_protobuf.py when done  it is missing v2 API.

What I noticed is that script copies protobufs for each bazel query kind '("go_proto_library", "@envoy_api//...")'  which for some reason excludes targets under @envoy_api//envoy/api/v2/...
I posted in slack channel no one has responded so I am creating this issue.
Repro steps:

From inside envoy folder run ./tools/api/generate_go_protobuf.py

@kprakasam v2 is now deprecated and will be removed at EOQ. Is there a reason to support this until then?

@kprakasam v2 is now deprecated and will be removed at EOQ. Is there a reason to support this until then?

V2 Api continue to be generated by the CI pipeline, we build envoy with our filters with our own build scripts, I am just wondering if we are missing anything out that cause this failure.

V2 Api continue to be generated by the CI pipeline, we build envoy with our filters with our own build scripts, I am just wondering if we are missing anything out that cause this failure.

@kyessenov any idea?

@kyessenov any idea?

No idea. The script nukes envoy/ before copying https://github.com/envoyproxy/envoy/blob/master/tools/api/generate_go_protobuf.py#L103, and it hasn't been deleted on go-control-plane, so it must be working. Maybe it's some magic with generated_api_shadow?

No idea. The script nukes envoy/ before copying https://github.com/envoyproxy/envoy/blob/master/tools/api/generate_go_protobuf.py#L103, and it hasn't been deleted on go-control-plane, so it must be working. Maybe it's some magic with generated_api_shadow?

All *.pb.go are copied from bazel-bin/... using targets listed by bazel query kind '("go_proto_library"<EMAIL_ADDRESS>however this query doesn't return any of the targets under @envoy_api//envoy/api/v2/..., is there any specific bazel setting cause this?

All *.pb.go are copied from bazel-bin/... using targets listed by bazel query kind '("go_proto_library"<EMAIL_ADDRESS>however this query doesn't return any of the targets under @envoy_api//envoy/api/v2/..., is there any specific bazel setting cause this?

I just ran the query in my tree and I see:
...
@envoy_api//envoy/api/v2:pkg_go_proto
@envoy_api//envoy/config/listener/v2:pkg_go_proto
@envoy_api//envoy/config/filter/accesslog/v2:pkg_go_proto
@envoy_api//envoy/api/v2/route:pkg_go_proto
@envoy_api//envoy/type/tracing/v2:pkg_go_proto
@envoy_api//envoy/type/metadata/v2:pkg_go_proto
@envoy_api//envoy/api/v2/listener:pkg_go_proto
@envoy_api//envoy/api/v2/endpoint:pkg_go_proto
@envoy_api//envoy/api/v2/cluster:pkg_go_proto
@envoy_api//envoy/api/v2/auth:pkg_go_proto
@envoy_api//envoy/api/v2/core:pkg_go_proto
@envoy_api//envoy/type/matcher:pkg_go_proto
...

@kprakasam maybe this is something in your tree?

I just ran the query in my tree and I see:
...
@envoy_api//envoy/api/v2:pkg_go_proto
@envoy_api//envoy/config/listener/v2:pkg_go_proto
@envoy_api//envoy/config/filter/accesslog/v2:pkg_go_proto
@envoy_api//envoy/api/v2/route:pkg_go_proto
@envoy_api//envoy/type/tracing/v2:pkg_go_proto
@envoy_api//envoy/type/metadata/v2:pkg_go_proto
@envoy_api//envoy/api/v2/listener:pkg_go_proto
@envoy_api//envoy/api/v2/endpoint:pkg_go_proto
@envoy_api//envoy/api/v2/cluster:pkg_go_proto
@envoy_api//envoy/api/v2/auth:pkg_go_proto
@envoy_api//envoy/api/v2/core:pkg_go_proto
@envoy_api//envoy/type/matcher:pkg_go_proto
...

@kprakasam maybe this is something in your tree?

We use Envoy  as submodule to the filters we have, when the query is run from top level folder instead of submodule envoy folder theses targets are missing.
Anyway we need to modify generate_go_protobufs.py to add our own targets, when I add @envoy_api//envoy/api/v2/... to the list it's working.
I'll leave it up to guys to treat this as a bug or not.
TARGETS =<EMAIL_ADDRESS>V2_TARGETS =<EMAIL_ADDRESS>.
.
.
def generateProtobufs(output, generate_ebay_protos=False):
  bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip()
  bazel_bin = '/private/var/tmp/_bazel_pkannan/c99961cf5f04eb2f0509306e269148cf/execroot/ebay_envoy/bazel-out/darwin-fastbuild/bin'
  go_protos = check_output([
      'bazel',
      'query',
      'kind("go_proto_library", %s)' % TARGETS,
  ]).split()

  go_protos = go_protos + check_output([
      'bazel',
      'query',
      'kind("go_proto_library", %s)' % V2_TARGETS,
  ]).split()
.
.
.

We use Envoy  as submodule to the filters we have, when the query is run from top level folder instead of submodule envoy folder theses targets are missing.
Anyway we need to modify generate_go_protobufs.py to add our own targets, when I add @envoy_api//envoy/api/v2/... to the list it's working.
I'll leave it up to guys to treat this as a bug or not.
TARGETS =<EMAIL_ADDRESS>V2_TARGETS =<EMAIL_ADDRESS>.
.
.
def generateProtobufs(output, generate_ebay_protos=False):
  bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip()
  bazel_bin = '/private/var/tmp/_bazel_pkannan/c99961cf5f04eb2f0509306e269148cf/execroot/ebay_envoy/bazel-out/darwin-fastbuild/bin'
  go_protos = check_output([
      'bazel',
      'query',
      'kind("go_proto_library", %s)' % TARGETS,
  ]).split()

  go_protos = go_protos + check_output([
      'bazel',
      'query',
      'kind("go_proto_library", %s)' % V2_TARGETS,
  ]).split()
.
.
.

Feel free to contribute a patch here. I don't see this as being a bug given that this is a helper script for projects like go-control-plane, but has no tests and isn't used as part of the Envoy build itself.

Feel free to contribute a patch here. I don't see this as being a bug given that this is a helper script for projects like go-control-plane, but has no tests and isn't used as part of the Envoy build itself.

@htuch

@htuch


use legacy and refactorized symfony2 validator

with this pull request it is possible to use the legacy validator and the RecursiveValidator.
// use legacy validator
$app->register(new ValidatorServiceProvider());
$validator = $app['validator']; // instance of Symfony\Component\Validator\Validator

// use RecursiveValidator
$app->register(new ValidatorServiceProvider(), array('use_refactorized_validator' => true));
$validator = $app['validator']; // instance of Symfony\Component\Validator\Validator\RecursiveValidator

1.2 is a maintenance mode, so that cannot be accepted there. It should be on 1.3 where we already worked on supporting the newest versions of Symfony.

The use_refactorized_validator option is a bad idea anyway IMO. Silex should follow the same way than Symfony here: use the new implementation with BC layer (which should be the case automatically in 1.3 btw, as it uses the Symfony builder to configure the validator)


Google Colab issue with PyTorch 1.10

The recent PyTorch update on Google Colab is causing issue with torchaudio.
If you encounter this issue please report https://github.com/googlecolab/colabtools/issues/2417
It seems that !pip3 install torchaudio==0.10.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html would work

Same error.
I will share latest default Google Colab environment.
Model: 		 Tesla P100-PCIE-16GB
Python 3.7.12
Version: 1.10.0+cu111
Cuda compilation tools, release 11.1, V11.1.105

Generated by
!head -n 1 /proc/driver/nvidia/gpus/**/information
!python --version
!pip show torch | sed '2!d'
!/usr/local/cuda/bin/nvcc --version | sed '4!d'

It is apparently CUDA version issue.

The recent PyTorch update on Google Colab is causing issue with torchaudio.
If you encounter this issue please report googlecolab/colabtools#2417
It seems that !pip3 install torchaudio==0.10.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html would work

This worked for me after uninstalling torchaudio with !pip uninstall -y torchaudio

Now the issue is resolved and torchaudio is pre-installed on Google Colab.


Test output order

Hi,
In your code, under the function test_model, you've noted: "# TODO: Change this to real image name so we know".
I want to test some files named 0.png, 1.png, 2.png, etc. However they are loaded into test_model in the order [0, 1, 10, 11, 12 ... 19, 2, 20, 21... ]. In what way can the generated test mask be named the same as the input file?
Thank you
Edit: Was able to resolve the issue. Thank you

We just sloved this problem, hope can help you.
In dataset.py/class SEMDataTest(Dataset):
    img_list = os.listdir(image_path)
    img_list.sort(key=lambda x: int(x[:-4]))
    for i in range(len(img_list)):
        img_list[i] = image_path + img_list[i]
    #print(img_list)
    #self.image_arr = glob.glob(str(image_path) + str("/*"))
    self.image_arr = img_list
    self.in_size = in_size
    self.out_size = out_size
    self.data_len = len(self.image_arr)


Web Form for logged-in users to report problematic packages

With the introduction of Observations, create a web form that allows logged-in users to submit an observation.
It should be aware of the project (from the page its on), prompt the user to choose malware, spam, dependency confusion.
Require some summary details
Require an inspector link to the project's source issue (inject into summary)
When valid, use record_observation() to persist to the database.
Collect all inputs as the payload (alternately, allow {} to denote it explicitly was not submitted via API?)
See Admin UI implementation with no form validation as an example.

only note: since payload has some free-form we could add a "source": "form" key somewhere?


Cave dweller, Geckolib unable to find animation

I had a problem while playing with my friends, every time the cave dweller spawned, we crashed and got a Geckolib error.
crash-2024-08-22_20.26.40-client.txt

Report it to the cave dweller mod


fix(logs): jellyfin auth error now has the severity warn consistent with local login

Description
This makes the jellyfin auth log severity consistent with the local login.
To-Dos

[x] Successful build yarn build
[ ] Translation keys yarn i18n:extract
[ ] Database migration (if required)

Issues Fixed or Closed

Fixes #224

:tada: This PR is included in version 1.6.0 :tada:
The release is available on:

v1.6.0
GitHub release

Your semantic-release bot :package::rocket:


Issue #13 is back after 0.12.0 upgrade

issue 13 is back after I upgraded "vite-plugin-md": "0.12.0" or "vite-plugin-md": "0.12.1"
The workaround of the original issue makes it work as it did before: in vite.config
    Markdown({
    ...
   exposeFrontmatter: false,
})

@Codermar should be fixed in v0.11.0

Thank you! It's all good both with workaround and now with new release v0.11.0
Originally posted by @Codermar in https://github.com/antfu/vite-plugin-md/issues/13#issuecomment-899932940

@Codermar I'm going to create a unit test to try and ensure that the functionality you're looking for is captured as a test and therefore not regressed going forward. I can dig through this history but if you had time for a quick bullet pointed description that might help.

I have run tests on Vue2 and Vue3 and with exposeFrontmatter set to true and false and the behavior that v0.12.x is providing seems to be consistent and correct unless there is an undocumented feature hiding out somewhere.

You can see these tests in PR #60


Add installation notes to 230306 GDK.

Add installation notes to 230306 GDK.
Microsoft Reviewers: Open in CodeFlow

@microsoft/xbox-developer-experience-toolbox and @aaron-stebner for review.

LGTM


Fail all activations when it fails to pull a blackbox image.

Description
Currently, if the system fails to pull a black-box image, it keeps waiting for the runtime pod to be running.
$ kubectl get pods
...
wsk-blue-test-invoker-38-47-style95-dockeraction     0/1     ImagePullBackOff   0          41h
wsk-blue-test-invoker-38-48-style95-dockeraction     0/1     ImagePullBackOff   0          41h
...

If the pod creation is failed due to image pulling, we can complete activations with an error.
Another case is a black-box pod is failed to run because a command is not found.
In such cases, the system can let users know about the issues in their images.
Related issue and scope

[ ] I opened an issue to propose and discuss this change (#????)

My changes affect the following components

[ ] API
[ ] Controller
[ ] Message Bus (e.g., Kafka)
[ ] Loadbalancer
[ ] Scheduler
[x] Invoker
[ ] Intrinsic actions (e.g., sequences, conductors)
[ ] Data stores (e.g., CouchDB)
[ ] Tests
[ ] Deployment
[ ] CLI
[ ] General tooling
[ ] Documentation

Types of changes

[ ] Bug fix (generally a non-breaking change which closes an issue).
[x] Enhancement or new feature (adds new functionality).
[ ] Breaking change (a bug fix or enhancement which changes existing behavior).

Checklist:

[x] I signed an Apache CLA.
[x] I reviewed the style guides and followed the recommendations (Travis CI will check :).
[ ] I added tests to cover my changes.
[ ] My changes require further changes to the documentation.
[ ] I updated the documentation where necessary.

Codecov Report

Merging #5270 (17c89c4) into master (639c4a9) will decrease coverage by 65.77%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master   #5270       +/-   ##
==========================================
- Coverage   70.36%   4.59%   -65.78%
==========================================
  Files         238     238
  Lines       14084   14092        +8
  Branches      588     595        +7
==========================================
- Hits         9910     647     -9263
- Misses       4174   13445     +9271

Impacted Files
Coverage Δ

...in/scala/org/apache/openwhisk/common/Logging.scala
41.66% <0.00%> (-36.31%)
:arrow_down:

...cala/org/apache/openwhisk/http/ErrorResponse.scala
44.55% <0.00%> (-45.45%)
:arrow_down:

...re/containerpool/kubernetes/KubernetesClient.scala
0.00% <0.00%> (-37.44%)
:arrow_down:

...containerpool/kubernetes/KubernetesContainer.scala
0.00% <ø> (-88.00%)
:arrow_down:

...ain/scala/org/apache/openwhisk/spi/SpiLoader.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...n/scala/org/apache/openwhisk/utils/JsHelpers.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...scala/org/apache/openwhisk/common/Prometheus.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...scala/org/apache/openwhisk/core/FeatureFlags.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...ala/org/apache/openwhisk/common/ConfigMXBean.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...la/org/apache/openwhisk/http/BasicRasService.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 195 more

Continue to review full report at Codecov.

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

LGTM


I have a question about build

Hi friend, I build spleeb keyboard that you designed these days. I have a few questions. I'm a beginner. :(
Image for Q1, Q2 https://postimg.cc/DWTQpYrH
Q1 (Green Color). What is this? Should I solder here any components???
Q2 (Red Color) . Is the diode direction of the part I marked in red the right direction?

Image for Q3 https://postimg.cc/bsBdv63M
Q3. Should I build in the order of the pictures? Is this right? layer 0 (MX switch) layer 1 (spleeb plate) layer 2 (spleeb pcb, with soldered diode, rotary encoder) layer 3 (PJ-320A 3.5 mm jack, MCU)
I drew with my hands because I am not good at English. I hope you can understand.
Your keyboard is so cool. I'll make sure to build it and send you a picture
Thank you.

Q1 (Green Color). What is this? Should I solder here any components???

Thank you for pointing this out! I had accidentally kept this out of the BOM
I have updated it here https://github.com/chrishoage/spleeb/commit/5231b6fe8878e6d334b1f7b3b07c349e56742b73

Q2 (Red Color) . Is the diode direction of the part I marked in red the right direction?

Yes the diode direction correct. The silkscreen makes it hard to tell, but another way is to use the square pad as an indicator. The square pad is the direction of the cathode part of the diode.

Q3. Should I build in the order of the pictures? Is this right? layer 0 (MX switch) layer 1 (spleeb plate) layer 2 (spleeb pcb, with soldered diode, rotary encoder) layer 3 (PJ-320A 3.5 mm jack, MCU)

Yes that is all correct. The "side" you solder the diodes to don't matter. I soldered my diodes underneath the PCB but it was just personal preference.
The most important part is the MCU orientation which it seems you got correct from your drawing.
You would solder the pads on the opposite side of the MCU


OrganizationsListOptions and UserListOptions shouldn't have ListOptions field.

While reviewing #899, I spotted what I believe to be an issue with the OrganizationsService.ListAll method. It takes an opt *OrganizationsListOptions parameter, which is:
https://github.com/google/go-github/blob/69ab5d997213689855e5db797eb5016ad0cc957a/github/orgs.go#L74-L81
According to the GitHub API docs for that endpoint, available at https://developer.github.com/v3/orgs/#list-all-organizations:

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of organizations.

As a result, I believe it's incorrect for OrganizationsListOptions to embed the ListOptions struct, which contains the normal pagination parameters page/per_page.
If this analysis is confirmed to be correct, then ListOptions should be removed from OrganizationsListOptions, since it doesn't belong there.

The same issue affects UserListOptions struct:
https://github.com/google/go-github/blob/69ab5d997213689855e5db797eb5016ad0cc957a/github/users.go#L137-L144
Its documentation (https://developer.github.com/v3/users/#get-all-users) also says:

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of users.

But RepositoryListAllOptions does not have this issue:
https://github.com/google/go-github/blob/master/github/repos.go#L231-L236

@shurcooL Can you please send me an invite? I would like to work on this.

I don't have permissions to send out invites, but maybe @willnorris or @gmlewis can.
In the meantime, feel free to start working on this. It should be clear to readers of this issue.
Please note, the first step of making progress here should be to confirm the issue is valid. It's currently labeled as NeedsInvestigation. Once we've confirmed the original analysis is correct, we can move this to NeedsFix state and that's when a PR implementing the fix can be sent. Thanks!

Thanks @willnorris for the invite!
Looking at the docs it does look like an issue to me.
I tried hitting both /users and /organizations API directly, without using go client, 'page' param does not seem to have any impact but 'per_page' param does.
https://api.github.com/users?since=135&per_page=1
https://api.github.com/organizations?since=135&per_page=1
Should I wait till any of the mentors confirm this issue or should I start working on this right away?
Also, do we want to support this undocumented 'per_page' optional param?

Thanks a lot for investigating this @sandlis!
Actually, your findings confirm to me that this issue isn't as black and white as I originally thought (where my suspected fix was to remove ListOptions from OrganizationsListOptions).
I think I misinterpreted the GitHub documentation. When it said:

Note: Pagination is powered exclusively by the since parameter. Use the Link header to get the URL for the next page of organizations.

I took that to mean "since" is the only parameter supported, "page" and "per_page" are not.
However, I suspect what it really means is that "since" is supported in place of "page". But "per_page" still works as usual.
If that's the intended API behavior, then to resolve this issue, we should either document the current embedded ListOptions struct saying that only its PerPage field is supported (non-breaking API change), or remove it and add PerPage directly in its place.
However, there is a bit of a strange inconsistency with the list-all-public-repositories endpoint. It behaves differently, notably, in that it does not respect the per_page parameter:
https://api.github.com/repositories?since=135&per_page=1
So RepositoryListAllOptions is correct (it does not have ListOptions embedded).
I think the best thing to do next would be to contact GitHub support and ask them if the per_page parameter is indeed officially supported (but missing from docs by accident) for listing users and orgs, and if it's indeed unsupported for listing public repos (and is correctly omitted from docs there).

@shurcooL I sent them a request from support page to check it.
Will update here when I get any response from them.

Thanks for contacting them, this is very helpful.
go-github already supports a small number of undocumented (but often used and seemingly endorsed by GitHub) API endpoints; specifically, for fetching user/org/repo by ID. You can find them by searching for "undocumented" at https://godoc.org/github.com/google/go-github/github.
If we didn't already have those ListOptions embedded, then I agree, adding them would not make much sense.
However, given they were already in the code all this time, I don't think we should suddenly remove them. It's still possible GitHub will decide to document and officially support them. So instead, I think it's better for us to simply document them as being undocumented/unsupported parts of the GitHub API at this time. That way, people who continue to still rely on them can better understand the risk of doing so (as GitHub could change behavior suddenly). But we avoid creating unnecessary churn.
So I think the best resolution to this issue is a non-breaking API documentation change, something like:
 // OrganizationsListOptions specifies the optional parameters to the
 // OrganizationsService.ListAll method.
 type OrganizationsListOptions struct {
 	// Since filters Organizations by ID.
 	Since int `url:"since,omitempty"`

+	// Note: Pagination is powered exclusively by the since parameter.
+	// ListOptions.PerPage controls an undocumented GitHub API parameter.
 	ListOptions
 }

And a similar change for UserListOptions.

That sounds good.
What about ListOptions.Page? Do we want to do anything about it?

@shurcooL
https://github.com/google/go-github/pull/903
Please review this pull request for mentioned documentation updates.


Has problems converting disks > 8Gb (From raw to HDF 8 bit)

Has problems converting disks > 8Gb (From raw to HDF 8 bit)

This is a deeper problem with the program using sectors as INTS rather than LONGS for logical sector IDs. Some significant refactoring required.

Disks are now accessed as LONGS.


Sale airport is broken

Fixed https://github.com/egenerat/flight-manager/commit/b62e4feb24ad4db00be56258d4503d07ebf9c88a

Closed as duplicate: https://github.com/egenerat/flight-manager/issues/21


Add Herefordshire as a search county in Gazetteer when WLS is selected

The Wales coordinator (Chris M) has asked whether Herefordshire can be included in the WLS Gazetteer search as well as the ENG one please.
This is because Herefordshire is a border county and there is often confusion as to whether places are in England or Wales.
If HEF can be included in both can you add it to the WLS search please?
Geoff

Anne
Looks good
geoff

Done; closing

@Vino-S to check if deployed and if not, will deploy

Done; closing