Removed reset_validation() method from run() method

Reference #1121

This pull request cannot be automatically merged.

what's the problem phil?

The problem is exactly what I said: "This pull request cannot be automatically merged."
That was for JonoB, butt out :p

Re-doing now....few mins

Replaced by https://github.com/EllisLab/CodeIgniter/pull/1127


Task/g50 account properties

Added 3 transaction types.

AccountPropertyAddressTransaction
AccountPropertyMosaicTransaction
AccountPropertyEntityTypeTransaction.

Also added getAccountProperties in AccountHttp.
Issue: #50

all sorted

Pull Request Test Coverage Report for Build 194

91 of 107 (85.05%)  changed or added relevant lines in 15 files are covered.
15 unchanged lines in 3 files lost coverage.
Overall coverage increased (+1.0%) to 71.394%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/model/transaction/AccountPropertyTransaction.ts
13
14
92.86%

src/infrastructure/AccountHttp.ts
1
7
14.29%

src/infrastructure/transaction/CreateTransactionFromDTO.ts
1
10
10.0%

Files with Coverage Reduction
New Missed Lines
%

src/model/namespace/NamespaceId.ts
2
66.67%

src/infrastructure/AccountHttp.ts
5
28.0%

src/service/NamespaceService.ts
8
21.43%

Totals

Change from base Build 190:
1.0%

Covered Lines:
1004

Relevant Lines:
1292

💛  - Coveralls


Added lock screen support

This PR adds support for lock screen client programs :tada:
Lock screen programs, and their respective keybinding to bind them, are specified in the Lua configuration file, under programs:
lock_screen = "/path/to/lock-screen-program"

-- lock screen
key({ mod, "Shift" }, "l", "lock_screen")

When the lock screen is active, all other commands and inputs are disabled. You cannot switch workspaces, spawn other programs, or otherwise do anything else.
D-Bus commands are NOT checked by this, as right now this is not a problem. This may change in the future, and appropriate errors will be returned (e.g "Way Cooler is locked"). Since the API for the D-Bus layout commands have not stabilized yet, this feature has not yet been implemented until they are done.
Currently, there are no lock screens implemented, but the only requirement to make one is:

A program that spawns a GUI of some kind
Can be killed by the user without the use of a Way Cooler keybinding (otherwise it can't be unlocked).

Note that since all window creation is disabled, the lock screen cannot make a subsurface. This means e.g right click menus would not be possible yet in the lock screen. This may change in the future, but only if it imposes a significant burden for lock screen programs.

I'm going to go ahead and block this PR until

#287 is finished
A lock screen program is made so that this feature is actually helpful AND to ensure that it is complete.

Updated to use the new modes setting, just need to wait on this Rust PR to merge and be pushed to a stable release before I can be sure that the lockscreen can't lock the user out of Way Cooler inadvertently.

Though I have problems with the current client implementation, I'm going to merge this into master since the Way Cooler side of things works well enough.
There will be a patch later that fixes the previously mentioned nightly guarded try_wait method on std::process::Child.
Problems with the client, just so readers don't have to go looking for it:

The most secure part of the application (interfacing with PAM) is written in C, because there is no good enough Rust library that suits this purpose.
The graphical display is not very helpful to the user.


RelatedObjectDoesNotExist exception on row_result.object_repr attribute initialization

Extending the example from #439, I have the following 3 models:
class Candidate(models.Model):
    first_name = models.CharField("First name", max_length=255)

class Test(models.Model):
    name = models.CharField("Test name", max_length=255)

    def __str__(self):
        return self.name

class CandidateTest(models.Model):
    candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE)
    test = models.ForeignKey(Test, on_delete=models.CASCADE)

    def __str__(self):
        return '{} taking {}'.format(self.candidate.first_name, self.test.name)

and the following import resource class:
class CandidateTestResource(ModelResource):
    candidate = fields.Field(attribute='candidate', column_name='candidate', widget=CharWidget())
    test = fields.Field(attribute='test', column_name='test', widget=CharWidget())

    class Meta:
        model = CandidateTest

    def import_field(self, field, instance, row, is_m2m=False, **kwargs):
        field_name = self.get_field_name(field)
        method = getattr(self, 'clean_%s' % field_name, None)
        if method is not None:
            instance = method(field, instance, row, **kwargs)
        else:
            super().import_field(field, instance, row, is_m2m, **kwargs)

    def clean_candidate(self, field, instance, row, **kwargs):
        if row['candidate']:
            try:
                candidate, _ = Candidate.objects.get_or_create(
                    first_name=row['candidate']
                )
                instance.candidate = candidate
            except:
                pass

        return instance

    def clean_test(self, field, instance, row, **kwargs):
        if row['test']:
            try:
                test, _ = Test.objects.get_or_create(
                    name=row['test']
                )
                instance.test = test
            except:
                pass

        return instance

    def skip_row(self, instance, original, row, import_validation_errors=None):
        if not (row['candidate'] and row['test']):
            return True

        return super().skip_row(instance, original, row, import_validation_errors=import_validation_errors)

The following csv is used to import:
id,candidate,test
1,Candidate 1,Test A
2,Candidate 2,
3,,Test B

The above code works as expected for Django Import Export 3.0.1:

but throws the following error from version 3.0.2 onwards:
Line number: 2 - CandidateTest has no test.
2, Candidate 2,
Traceback (most recent call last):
File "../import_export/resources.py", line 750, in import_row
row_result.add_instance_info(instance)
File "../import_export/results.py", line 43, in add_instance_info
self.object_repr = force_str(instance)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/utils/encoding.py", line 64, in force_str
s = str(s)
File "/home/ubuntu/django-import-export/tests/core/models.py", line 197, in __str__
return '{} taking {}'.format(self.candidate.first_name, self.test.name)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 198, in __get__
"%s has no %s." % (self.field.model.__name__, self.field.name)
core.models.CandidateTest.test.RelatedObjectDoesNotExist: CandidateTest has no test.

Line number: 3 - CandidateTest has no candidate.
3, , Test B
Traceback (most recent call last):
File "../import_export/resources.py", line 750, in import_row
row_result.add_instance_info(instance)
File "../import_export/results.py", line 43, in add_instance_info
self.object_repr = force_str(instance)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/utils/encoding.py", line 64, in force_str
s = str(s)
File "/home/ubuntu/django-import-export/tests/core/models.py", line 197, in __str__
return '{} taking {}'.format(self.candidate.first_name, self.test.name)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 198, in __get__
"%s has no %s." % (self.field.model.__name__, self.field.name)
core.models.CandidateTest.candidate.RelatedObjectDoesNotExist: CandidateTest has no candidate.

The suggested modification from https://github.com/django-import-export/django-import-export/issues/439#issuecomment-215691637 is required again to resolve the error in 3.0.2 onwards:
class CandidateTest(models.Model):
    candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE)
    test = models.ForeignKey(Test, on_delete=models.CASCADE)

    def __str__(self):
        try:
            return '{} taking {}'.format(self.candidate.first_name, self.test.name)
        except ObjectDoesNotExist as err:
            return '[Invalid instance - %s]' % err

For reference, this new behaviour was introduced in #1526 (where an instance is added to a Result), which then has a call to str(instance).

If it is possible that CandidateTest.test can be null, surely this should be handled in the __str__() method (as per this comment), and also in your implementation of __str__().
Surely this is best practice and not a bug in import-export.  Am I missing something?

If it is possible that CandidateTest.test can be null,

Technically CandidateTest.test cannot be null as null=True is not set:
test = models.ForeignKey(Test, on_delete=models.CASCADE)

Am I missing something?

CandidateTest is a junction table for many to many relationship between Candidate and Test.
It is actually an attempt to consolidate 3 different import steps into one i.e.:

Import Candidate
Import Test
Import CandidateTest

Thus, the use case for this import is to:

Create (if not exists) Candidate who has not registered for any Test, if only candidate column has value
Create (if not exists) Test that was newly introduced, if only test column has value
Create (if not exists) Candidate, Test then relate the Candidate taking the Test in CandidateTest, if both columns have values

For reference, this new behaviour was introduced in #1526 (where an instance is added to a Result)

I am trying to figure out #1526:

The RowResults in the case of skipped rows during import do not include the skipped instance's information.
There are several use-cases when the primary keys of the imported rows are needed.

I assume skipped rows will not be imported thus will not have primary keys and not logged: :
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/admin.py#L207-L215
So this test makes little sense:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/tests/core/tests/test_resources.py#L1144-L1146

surely this should be handled in the __str__() method (as per this comment)

https://github.com/django-import-export/django-import-export/issues/459#issuecomment-219687467:

As it seems, the models str or unicode method is used as an attribute of the row_result object, but I think this only internal and never presented to the user, so maybe a pull request would be good idea. Instead of using try ... except in the models method, it could be used directly in the script to use a placeholder if row_result.object_repr = force_text(instance) throws an error. But maybe row_result.object_repr has another important function that I'm missing here.

https://github.com/django-import-export/django-import-export/issues/493#issuecomment-234025420

You can except the error in your model's  __unicode__ method as in #439. However it's probably better to only except the specific error instead of using the broad except with
from django.core.exceptions import DoesNotExist

Yet I think this is an issue with django-import-export and should be fixed at some point.

I think it was deemed an issue that required a fixed in #505:

I only write the properties when the row has been fully materialized, so the FKs are already there after saving.
Also, if we skip we don't write the LogEntry, so no need to write the properties.
Closes https://github.com/django-import-export/django-import-export/issues/493, https://github.com/django-import-export/django-import-export/issues/439, https://github.com/django-import-export/django-import-export/issues/459

The instance in:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L750
originates from either: (1) an already existing instance:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L375
or (2) a newly initialized but empty instance:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L378
For (2), the empty instance will be populated with data from row:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L737
then validated and saved:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L747-L749
However, if the row is skipped:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L744
there is a possibility the instance is not (or partially) populated and still invalid.
Since instance is still invalid, calling
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/resources.py#L750
will raise the reported RelatedObjectDoesNotExist.
I think that exception should be caught:
https://github.com/django-import-export/django-import-export/blob/4ac05ae6028555f1674df32415b3d4e2afbf8720/import_export/results.py#L39-L43

Thanks for raising this and for doing the additional research into the problem.  I agree that the change in #1526 could cause regression issues for implementations where str() is overridden to and references can be null.  However I do think this is a client issue rather than a library issue.
I don't think it's good practice to catch and ignore these exceptions as in #1559.  I can't get past the idea that the exception is coming from external user-defined code which we have no control over.  I think for client defined __str__() methods it would be best practice to handle any potential null references.
If any exceptions are raised from add_instance_info() then these are already caught and handled.
My preference is to make no additional changes to the library, and therefore close the issue and PR.  However, this issue will serve as a reference should anyone have similar issues in future.
Thanks again for your contribution and for looking into this.

I truly appreciate your acknowledgement and responsiveness, also not forgetting your effort in maintaining this helpful library.
I intuitively assumed the library will just ignore a row because I wanted to skip it but find it confusing to suddenly get a "RelatedObjectDoesNotExist" exception. Having gone through issues and PR raised previously (#439, #459, #505, #508), I think they had used similar assumption and were similarly confounded.
Originally add_instance_info is called under 2 conditions:

row is imported
row is deleted

Under both conditions, instance is a model object already stored in the database. Thus, calling add_instance_info makes sense as it conforms to the context stated in Django's documentation:

display an object in the Django admin site and as the value inserted into a template when it displays an object.

However, #1526 calls add_instance_info even when instance is not a model object stored in the database. I think this is the wrong context to call str, thus a library issue. Even add_instance_info has to handle cases when instance is not a model object stored in the database:
https://github.com/django-import-export/django-import-export/blob/54bc71662050a2a57da8fd6e31c8afd87f4dd48f/import_export/results.py#L42
Initially, I wanted to change add_instance_info to:
        if instance is not None and instance.pk is not None:
            # Add object info to RowResult (e.g. for LogEntry)
            self.object_id = instance.pk
            self.object_repr = force_str(instance)

but since you mentioned EAFP as best practice I submitted #1559 instead.
As a recent user of the Django framework, I think the reason Django and many of its related libraries live up to "the web framework for perfectionists with deadlines" tagline is because most of the implementation details are shielded from the developer. I feel that it involves more configuration rather than coding.
Getting a "RelatedObjectDoesNotExist" exception and having to go back to my models __str__ code to handle it (which I think may be numerous for some) may be exposing too much library implementation details.

OK - thanks for the comments - I take your points.
To summarise the issue:

If you have overridden __str__() to reference a persisted instance then this can cause a crash when add_instance_info() is called.  This is because force_str() is called on the instance.  It happens because the reference may not exist at the time of import, either in the case of 'new' instances, or FK relations which don't exist yet.

The original code did not store call force_str() for skipped rows (505) but this was changed in #1526.  It is the case that skip_row() can be overridden and can therefore operate on both existing or new instances.

We have had similar issues raised before and fixes have been supplied (as referenced earlier in thread).  It's likely that this will be raised as an issue again.

I'm still of the opinion that __str__() implementations should be handling null references, but I guess there are cases where this cannot easily be done (maybe legacy code in a Django app).  Users might not be happy with having to change existing code to get it to work with this library.
Also, I don't think that catching and ignoring exceptions is a good idea.  If we did this, then we would likely get complaints from people who spend hours debugging only to find that we are swallowing exceptions.  An exception in __str__() could be raised for any reason which is completely outside of our control.
I suggest the following as a workaround.  The library supports writing a custom RowResult which would handle this issue.  For example:
class MyRowResult(RowResult):
    def add_instance_info(self, instance):
        try:
            super().add_instance_info(instance)
        except:
            pass

Then reference this in your Resource:
class BookResource(ModelResource):

    class Meta:
        model = Book

    @classmethod
    def get_row_result_class(self):
        return MyRowResult

I think this is a pragmatic solution for what is mostly an edge case.  I will note this in the FAQ with a link to this thread.  If we get other cases of this occurring then perhaps we can consider a change to the library to accommodate.

Closing because workaround available.


[Suggestion] change jetpack size will affect jetpack performance, to make shrunken player easy control the jetpack

same as topic

Good suggestion! I will check later how hard that would be to adjust

well too many tiny flying man crash when landing, so for now, best not using jetpack if too tiny

Moved to Content-ideas wiki page.


small cleanup in a few places

Please see individual commits. Removes unused code, comments, variables, etc.
Let's wait 'til 12.3 is released before any merge, but I've been itching to get this PR created for a while, so gonna go ahead and do that now.

Looks good 👍
I'd say it's safe to merge in 12.3 if you drop d7f876e for now.

Per our discussion on another recent PR, we'd like to off on any more non-bug-fixes going in to 12.3, but did you have any specific concerns with commit d7f876e86336170f2d6d3f20b6af26bcd0dc2b18? Or is it just the potential for a bug b/c it's a little more complex?

off on any more non-bug-fixes

It's more like no-new-features-or-potential-changes-in-behaviour mode :)
d7f876e looks fine but has a potential to change the behaviour because it touches some actual code unlike others here.

Yep, makes sense. Might as well get the others in, will revert d7f876e86.


Waiter API - Split the bill by item

Done when multiple bills exist in the correct amounts for different items that were ordered

splitBillByItemTest: 23min

15min- updating tests

20 min - updated tests and implementation


Use Trilinos Tpetra backend

I started working on something. Can you take a look @draenog?

Branch is chris/trilinos

Branch is chris/trilinos

TO DO:

[ ] Add Trilinos (minimal required) to docker container
[ ] Detect Trilinos properly with CMake (removing my hard-wired directories)
[ ] Use Tpetra/Muelu for the elastic problem too (dealing correctly with block size)
[ ] Try to figure out how to use local indices for assembly (should be faster)

TO DO:

[ ] Add Trilinos (minimal required) to docker container
[ ] Detect Trilinos properly with CMake (removing my hard-wired directories)
[ ] Use Tpetra/Muelu for the elastic problem too (dealing correctly with block size)
[ ] Try to figure out how to use local indices for assembly (should be faster)


Canonical Url uses http://domain.com instead of https://domain.com

Hi,
I have the problem provided in the title.
If I test locally it uses https://localhost/ but with my live url it uses http.
https://danobe.dev is my website.
Is there any workaround or am I the only one with this problem?
Google Search Console made realise this error.
Kind regards,
Daniel Oberlechner

Hi @DanielOberlechner
That is indeed strange. I assume that you are using %CurrentUrl% for this? The underlying code for that just calls the .Url() function of Umbraco. Do you perhaps have your application url set to http? https://docs.umbraco.com/umbraco-cms/extending/health-check/guides/fixedapplicationurl

I'm using the provided input from the picture. I use in HTML the  helper.
In the appsettings I don't have a URL provided. I've changed that and deployed one but it seems it doesn't bring the wanted change.
Any more ideas how to fix this issue?
Kind regards,
Daniel

Still not quite sure how this is going wrong then... I also see the same issue with your og:image being returned with http instead of https.
I still suspect it is Umbraco related instead of SeoToolkit related, but not quite sure what causes it. Could you also try setting the UmbracoApplicationUrl? https://docs.umbraco.com/umbraco-cms/reference/configuration/webroutingsettings. I actually meant to send that one instead of the earlier link.

I use as setup Cassandra in connection with Caddy web server, which provides https certificate for my website.
My Umbraco settings are quite all on default, which specific setting do I have to change to let the website know that I operate on https? Caddy is a reverse proxy which handles traffic in https.
I've configured appsettings as the following:
      "WebRouting": {
        "UrlProviderMode": "Auto",
        "UmbracoApplicationUrl": "https://danobe.dev"
      },

is there anything more I can try?
Daniel

Then I am not sure, sorry... I assume it has to do with the reverse proxy, but I don't have experience with them. You should be able to reproduce it outside of SeoToolkit if you do an .Url(mode: UrlMode.Absolute) on a page or media item. Might be best to ask someone in the Umbraco Discord group if they can help with the setup

Thank you for your answer I'll ask in the Umbraco Discord if somebody can help me out with this specific issue!


Move COMBINE 2021 to past events / Announce HARMONY 2022

https://combine-org.github.io/events/ still points to COMBINE 2021. We should

move it to events/COMBINE2021
and either
put a general page at /events or
put a "save the date" for HARMONY 2022 there.

Done it seems.


Support change between multiple instances of this app

Hey!
I use 2 separate mac for work, constantly changing between them. Both have this cool controller app installed.
My issue is that the table is not able to disconnect from one and connect to the other mac. Even if I quit from this app and turn off the bluetooth on the connected mac, the other mac with the other instance of this app is not able to find and connect to the table.

@mrakko I have done this dance before with 2 computers each running an instance of the app.  Both were on macOS Monterey.
In my experience, I always have to press and hold the button under the front center of the physical stand/sit toggle to make it open to switch bluetooth pairing to the active computer, then relaunch the desk controller app on the computer I want to take over.
That friction is not ideal, I agree, but it in absence of a better solution, it seemed to work for me.


Enforce code style?

As I have been making contributions, I try to match the surrounding code style, but sometimes add semicolons, or get the single-quote/double-quote different.
Prettier would make it easy to enforce a single code style for everyone.
There are currently 423 single-quotes and 870 double-quotes in the source files.
Likewise, there are 428 semicolons, but mostly in multi-statement lines like these:
closeOk.setUint8(j, 1); j += 1 // type: method
closeOk.setUint16(j, channelId); j += 2 // channel
closeOk.setUint32(j, 4); j += 4 // frameSize

The biggest change is that Prettier will force the statements above onto separate lines.
Considering the above, these are the options that could be used:
{
  "semi": false,
  "singleQuote": false // default is `false`
}

With "semi": false, that runs into a potential linting issue because Prettier is trying to prevent a potential ASI failure with changes like this:
case "S":
  ;[v, len] = this.getLongString(i, littleEndian)
  i += len
  break

ESLint will complain about unnecessary semicolons (but can be disabled with eslint-config-prettier)... Maybe semicolons are fine after all?
Alternatively ESLint could be used to enforce a coding style, starting with the semi and quotes rules. The full list of rules that would need to be configured is extensive.
Using linters for formatting is not really recommended, including by ESLint.

This is what these two options could look like:

Prettier: https://github.com/cloudamqp/amqp-client.js/compare/main...ngbrown-forks:amqp-client.js:feature/prettier
eslint: https://github.com/cloudamqp/amqp-client.js/compare/main...ngbrown-forks:amqp-client.js:feature/eslint-format-rules

I separated the eslint branch commits by fixing each rule in turn, but it would be smashed into a single commit for a pull request.
Dealing with manually ensuring the format is correct is way more annoying than just letting prettier do it automatically on every editor save. I included prettier editor configurations for both VS Code and WebStorm.

I'm in favour of this 👍 I would go with Prettier, as it to me doesn't make sense to go against the recommendations from TypeScript.
@carlhoerberg do you have any opinions on this?

Breaking up closeOk.setUint32(j, 4); j += 4 // frameSize to three lines does not look good.

Not really excited about 1300 more lines in the code base.. but on my phone and cant make a just assessment yet.

There's a couple options I can think of,
Get the comment back onto the function call:
closeOk.setUint32(j, 4) // frameSize
j += 4

Use a postfix increment function and object and get it all back on one line:
let j = new Position(0) // position in outgoing frame
// and
closeOk.setUint32(j.poInc(4), 4) // frameSize

elsewhere:
export class Position {
  public position: number
  constructor(initialPosition = 0) {
    this.position = initialPosition
  }
  /** Post increment by offset, returning position before incrementing. */
  poInc(offset = 1) {
    const p = this.position
    this.position += offset
    return p
  }
}

Ignore sections of code
// prettier-ignore can be used to ignore blocks of code, so for the three files with this pattern, ignore each function. But this will lose the benefits of Prettier in those entire functions.


Use Cloud Build for continuous integration

Fixes #26.

@QuantamHD @mithro Status update: I think by now the build actually works, but I have problems with timeouts. The build times out and fails after a bit over 40 minutes despite my attempts of updating the Cloud Build timeout to a larger value. I tried using the Buildbuddy.io Bazel cache but this also has problems, it times out and fails the build as it tries to upload some very large build artifacts.

@QuantamHD @mithro Status update: I think by now the build actually works, but I have problems with timeouts. The build times out and fails after a bit over 40 minutes despite my attempts of updating the Cloud Build timeout to a larger value. I tried using the Buildbuddy.io Bazel cache but this also has problems, it times out and fails the build as it tries to upload some very large build artifacts.

@QuantamHD This seems to finally work now! PTAL.
Things that I want to do in follow-up PRs: Build caching, building with GCC.

@QuantamHD This seems to finally work now! PTAL.
Things that I want to do in follow-up PRs: Build caching, building with GCC.

This is awesome Per!!! Thanks for working on this it looks great.

This is awesome Per!!! Thanks for working on this it looks great.


discontinuousness of indent guide lines

https://github.com/OmniSharp/omnisharp-vscode/issues/3204

Duplicate of #9604


Databrew: Add datasets support

Adds dataset(s) support for databrew
This includes these additional methods:
update_dataset()
list_datasets()
describe_dataset()
delete_dataset()
create_dataset()

Hi @SteveChurch, thanks for the PR! The coverage.xml file should not be part of the commit, and it looks like the linter is failing as well.

Thanks, I will get this resolved now. 👍🏻 - Am I safe to update the PR directly on this repo or should make changes against our Fork?
@bblommers

@bblommers I will do a rebase after #5094 has been merged.

Codecov Report

Merging #5095 (044bcd0) into master (d122543) will increase coverage by 0.03%.
The diff coverage is 91.81%.

@@            Coverage Diff             @@
##           master    #5095      +/-   ##
==========================================
+ Coverage   95.80%   95.84%   +0.03%
==========================================
  Files         667      670       +3
  Lines       66513    66835     +322
==========================================
+ Hits        63724    64055     +331
+ Misses       2789     2780       -9

Flag
Coverage Δ

servertests
36.65% <21.81%> (+0.07%)
:arrow_up:

unittests
95.78% <91.81%> (+0.03%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

moto/backend_index.py
100.00% <ø> (ø)

moto/databrew/urls.py
100.00% <ø> (ø)

moto/databrew/exceptions.py
91.89% <81.25%> (-8.11%)
:arrow_down:

moto/databrew/models.py
92.64% <91.48%> (-0.69%)
:arrow_down:

moto/databrew/responses.py
98.44% <95.74%> (-1.56%)
:arrow_down:

moto/transcribe/models.py
96.68% <0.00%> (-0.62%)
:arrow_down:

moto/resourcegroupstaggingapi/models.py
83.18% <0.00%> (-0.59%)
:arrow_down:

moto/route53/responses.py
96.69% <0.00%> (-0.42%)
:arrow_down:

moto/sns/models.py
96.83% <0.00%> (-0.40%)
:arrow_down:

moto/ses/models.py
96.64% <0.00%> (-0.21%)
:arrow_down:

... and 102 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 d122543...044bcd0. Read the comment docs.

@SteveChurch Could you also add a test to verify what happens when updating an unknown dataset? That error scenario has not been covered yet. Other than that, it all looks good to me.

@SteveChurch Could you also add a test to verify what happens when updating an unknown dataset? That error scenario has not been covered yet. Other than that, it all looks good to me.

Rebase done and new test added as requested.

The coverage.xml is back @SteveChurch - looks like the linter is failing as well

:face-palm: - Fixing now. Sorry.

@bblommers the linter fails in your jobs, but it doesn't make any changes when I run make lint or make format

@bblommers the linter fails in your jobs, but it doesn't make any changes when I run make lint or make format

Which version of flake8 are you on? We've upgraded fairly recently to 4.0.1, so that may explain the difference.
Looks like there is only one flake8 issue though, so you can resolve it without running make lint locally if necessary:
https://github.com/spulec/moto/runs/6366879467?check_suite_focus=true

@bblommers the linter fails in your jobs, but it doesn't make any changes when I run make lint or make format

Which version of flake8 are you on? We've upgraded fairly recently to 4.0.1, so that may explain the difference.
Looks like there is only one flake8 issue though, so you can resolve it without running make lint locally if necessary: https://github.com/spulec/moto/runs/6366879467?check_suite_focus=true

Right you are @bblommers ! I was on 3.7. Done and raring to go :D


Install-VMInsights.ps1 linked to in page is using AzureRM and not Az

Documentation states that Install-VMInsights.ps1 needs the Az module, though the script linked to in PS gallery is using the AzureRM module.
Examples from the script:
Get-AzureRmVM
Remove-AzureRmVMExtension

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

ID: d385c06a-f7e4-8875-835e-8983b2fd5f9c
Version Independent ID: 89f1c9ce-4f52-0a10-b464-e544a859b25d
Content: Enable Azure Monitor for VMs (preview) using Azure PowerShell or Resource Manager templates
Content Source: articles/azure-monitor/insights/vminsights-enable-at-scale-powershell.md
Service: azure-monitor
GitHub Login: @MGoedtel
Microsoft Alias: magoedte

@mortenlerudjordet Thanks for the comment. We are actively investigating on the issue and will get back to you shortly with an update.

@mortenlerudjordet Hyperlink provided for the script Install-VMInsights.ps1 currently routes to source of the script i.e., to this PowerShell Gallery page. We may click on 'Contact Owners' hyperlink in this PowerShell Gallery page which takes us to a form to submit with feedback / suggestions / questions, etc. related to this particular PowerShell Gallery page. I have submitted a form to update the Install-VMInsights.ps1 script with Az PowerShell cmdlets. If interested, you may also submit a form. The script owner would update the script soon based on the priority.
Assigning @MGoedtel for visibility and document enhancement considerations with these additional details.

I would guess it takes more time to update the script than add a note in the documentation that it is using AzureRM and not as i currently states:
"This script requires Azure PowerShell module Az version 1.0.0 or later."

While the script is using the old AzureRM module cmdlets, our guidance is to encourage customers to upgrade from that module to the new Az module and enable compatibility mode for these circumstances while leveraging the improvements of the new module with your custom scripts or scripts that the different product groups have updated using cmdlets from the new module.  The note clearly states this at the beginning of the article, but I'll reword the paragraph you called out.
#in-progress

I've modified the statement and the change should be reflected later this morning.  #please-close.


Bugfix for RRule{after, before} edge cases

Pull request is identical to original branch at: https://git.netizen.se/rust_rrule/commit/?h=fix/correct_rrule_inclusive_criterias, but now submitted for merge using the Microsoft GitHub process as requested.

This is a very good PR. Thank you very much for the effort.
I will publish a new version with this fix later today.


OpenXLSX fails to read file which can be opened in Excel and other libraries

This may be similar to #10 as I also get a Target does not exist! exception in OpenDocument. I have attached a minimal example file which may help reproduce the issue.
read-tdne.xlsx

The file is protected

@CEXT-Dan I believe you may be mistaken. The file uploaded is not protected.
Files that come from web browsers on windows are typically saved with an NTFS alternate data stream Zone.Identifier value that excel uses to trigger opening the file in read only mode for safety.  Is that what you are talking about?
If you could elaborate that would be helpful.

Hello,
Sorry, you are correct. However I tested with the file you uploaded and found an exception.
I posted a partial patch in https://github.com/troldal/OpenXLSX/issues/51
Sorry about that


Issue when starting automatic1111

Traceback (most recent call last):
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py", line 28, in
from modules import extra_networks, ui_extra_networks_checkpoints
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/modules/ui_extra_networks_checkpoints.py", line 5, in
from modules import shared, ui_extra_networks, sd_models
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/modules/sd_models.py", line 17, in
from modules import paths, shared, modelloader, devices, script_callbacks, sd_vae, sd_disable_initialization, errors, hashes, sd_models_config, sd_unet, sd_models_xl, cache, extra_networks, processing, lowvram, sd_hijack
ImportError: cannot import name 'sd_unet' from 'modules' (unknown location)

rename the folder sd to sd_old in your gdrive

thx


Missing toc-title attribute in org.asciidoctor.Attributes

There is no toc-title attribute in org.asciidoctor.Attributes. How should I set this attribute? Other methods using map configuration are already deprecated.

You can use attribute from the builder
https://github.com/asciidoctor/asciidoctorj/blob/c5aa7f2b8c5a3999f2d12604dddb189f2fbf273c/asciidoctorj-api/src/main/java/org/asciidoctor/AttributesBuilder.java#L432
or https://github.com/asciidoctor/asciidoctorj/blob/c5aa7f2b8c5a3999f2d12604dddb189f2fbf273c/asciidoctorj-api/src/main/java/org/asciidoctor/Attributes.java#L592 from Attribute, but beware of the empty value for attributes like this one. That's why I'd recommend the Builder.

Thank you so much for your help!


Adding Kristin School to the list of New Zealand schools

Request to add http://kristin.school.nz/ to the list of schools.

@ararat Pull request merged. Thank you!


pull request for e2e test at 12/10/2016 16:26:03

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Responsive images loaded via Markdown behave differently than Twig

When loading an image into my page via Markdown:
![Tromsdalstinden valley, Tromsø](tromsdalstinden-valley.jpg?sizes=65vw "Skiing up Tromsdalstinden valley in Tromsø") {.colwrap--100}
results in the correct behavior. A @2x image is loaded for retina screens where as the @1x (Grav generated) image is loaded on standard screens.
Why is it then when I load the exact same image via twig:
{{ page.media['tromsdalstinden-valley.jpg'].sizes('65vw').html('Skiing up Tromsdalstinden valley in Tromsø','Tromsdalstinden valley, Tromsø','colwrap--100') }}
with the exact same parameters do I NOT get the @2x image loaded for retina screens? The result is @1x image across all screens.
This is further exploration from my previous bug filing here: https://github.com/getgrav/grav/issues/704
Why do I want to load the images via Twig instead of Markdown? It's mainly the pesky <p> tag that wraps around the images. But I find this very strange behavior considering the methods described above are doing the same thing just via different means.
Image attached for further testing:

I did find a bug in Retina images that was not clearing the alternatives properly. This might be related:
https://github.com/getgrav/grav/commit/91222cb32b276b06442656607c0c57ed6a9684f1
Might be worth trying?

Gave it a whirl @rhukster but no dice, still the same behavior as before.

Bah!  This fixes the twig loading of retina images issue. When can one expect this fix to go into release (though I'm using locally :+1: )

:+1:  will be in the next release, as already in the develop branch.


Go: fix broken ensure the imports are used when importing multiple packages

@oleh-ozimok longing for this to get merged

resolves #585


Improve compatibility for Keycloak with DX around deployment automation

Fixed issues #7 and #2
Added documentation for DX OIDC config automation
Added doc for OIDC troubleshoot
Corrected value for provider identifier
@caiaga Please review and merge

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Vinayak Patil seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Input: Change the default deadzone value for new actions from 0.5 to 0.2

This changes the default deadzone value for new actions from 0.5 to 0.2 as discussed in https://github.com/godotengine/godot-proposals/issues/7069.

I have failed to rebase my previous year old PR, (#80299) so I pressed the "Sync" button in the Github's UI, not knowing it what it would do 😊👍
Turns out it erases all your changes with no warning and without any way to undo what you have done.
Please check the changes I've recreated and sorry for the mess.

I thought this could be left as it is, but I guess I could change that to the new default value (0.2) for the consistency's sake? I am not sure what to do with it.

Thanks!

Thanks! And congrats for your first merged Godot contribution :tada:


[Feature][Deploy]Modify the k8s MySQL version to 5.7

What is the purpose of the change
Modify the k8s MySQL version to 5.7
Related issues/PRs
Related issues: #115
Related pr:#136
Brief change log
Modify the k8s MySQL version to 5.7
Checklist

[x] I have read the Contributing Guidelines on pull requests.
[ ] I have explained the need for this PR and the problem it solves
[ ] I have explained the changes or the new features added to this PR
[ ] I have added tests corresponding to this change
[ ] I have updated the documentation to reflect this change
[ ] I have verified that this change is backward compatible
[ ] If this is a code change: I have written unit tests to fully verify the new behavior.

LGTM


What do you want to learn about?

I've been asked to present a tutorial to TAC-HEP and WATCHEP trainees, but I'd like to get a sense of your level and topics of interest, first. Let me know in this issue thread what you want to learn about and how much you know already.
To get a sense of what my tutorials are usually like, see my previous ones.
The date is still to be determined, the duration is anywhere between 2 and 6 hours, and it is likely to be over Zoom (if not somehow connected with CoDaS-HEP, but we're all already busy then).

Python? What level?
Array/columnar techniques? Again, what level?
Making Python fast?
Numba? (Related to the above.)
HEP-oriented project?
Python/C interfaces?
Dask? (see also)
Scikit-HEP?
Language development? (Probably not!)
Others?

If you want to try something outside my normal set of topics, I'm definitely open to it, but we'll iterate here, in this issue thread, to converge on something realistic.

Hi, Jim,
I just finished touching base with all of the WATCHEP trainees to get a list of possible topics. I'll dump them here and let everyone comment, upvote, etc.

Everyone has at least a basic Python level. Advanced Python or your loopy tutorial would probably be useful.
Python configuration: virtual environments
Most people have ntuples, so the efficient columnar ntuple tutorial would be helpful.
Working with different file formats: ROOT, HDF5, FITS. (could be related to awkward). Not everyone is in collider physics.

Other topics that may or may not be in your wheelhouse:

containerization
writing unit tests
Git CI/CD

Hi Jim,
I'm a grad student in cosmology in the TAC-HEP program. I'd be interested in accelerating Python through any of the methods above, as well as array-oriented programming.
If this is in your area, I'd also be interested in learning about Git more thoroughly.

Hi Jim,
I'm a grad student in ATLAS (in WATCHEP) and I think the main thing I'd be interested in is some more advanced ways to speed up python (Dask and Numba tutorials sound great to me). I've worked with awkward before but I would also support doing some more things related to array programming. Ideally I'd want to take away some things to speed up my data processing pipelines.

Hi Jim!
I am a graduate student working on CMS. I have an analysis I am working on, and I work on the Elastic Analysis Facility (EAF) at Fermilab. I have moderate python experience, I usually just look stuff up whenever I need it. I have experience with C++, Coffea, git, and ROOT (although it's quite rusty). I have a little experience with docker, helm, and kubernetes (very little).
I am interested in learning more about the following:

How Dask works and how it can be used
More about array/columnar techniques
Any advanced python

I'd also be interested in learning about ADLs or machine learning. I have also taken a software course that went over object oriented python, CI/CD, and tests but I wouldn't mind going over some CI/CD or tests topics again.

Okay, another +1 for Dask; I should definitely involve Dask and dask-awkward in a presentation of columnar analysis.
I felt confident to talk about machine learning in 2015, but much less so today.
The trouble with a topic like "advanced Python" is that I don't know how to tie it together into a coherent story. Henry does a good job of it with Level Up Your Python, which I highly recommend. I'll keep thinking about it, though.
Thanks for the suggestions!

Hi Jim,
I am a CMS graduate student in the TAC-HEP program. I have a fairly reasonable amount of experience with C++ and python. Of the topics you listed I would be most interested in learning about array/columnar techniques, dask and numba.

Howdy Jim!  I'm one of the Matts participating in WATCHEP, but not in collider physics!  I'm working on some of the software infrastructure and analysis pipelines within LSST DESC.
Out of the topics listed above, discussion of how to include specifically GPU parallelization into our development would be helpful.  Maybe best practices or design patterns within python which best allow for GPU parallelized code (if any exist!).
I think this would go into the category of interfacing python with C++ (i.e. have my python call some lower level GPU code to perform some numerically intense integrations).  Or maybe this falls into the dask category discussed above?
Thanks and looking forward to the school!

Thanks!
I now know that this traineeship summer school will be July 24‒28. I'll be teaching on July 24 (Monday) and will be helping out with a coding jam that extends over the whole week. (I'll have limited availability after Monday, since I'll be convening another workshop at the same time.)
From the above, a central theme on columnar analysis, vertical scale-out with Numba and horizontal scale-out with Dask kept coming up, so I'll focus on that. I'll be presenting material on columnar analysis in general at CoDaS-HEP, which many of you will be at, so I can use the two 1.5 hour blocks I'll have on July 24 for vertical and horizontal scale-out.
Second to the above, unit tests/CI and git practices also came up fairly often. I think we should integrate those into the coding jam and I'll be talking with the main developer of those exercises tomorrow.
@mattkwiecien, GPU parallelization would be an interesting topic, but it would involve more set-up (getting shared resources with GPUs on the day of the training—which is not insurmountable) and hasn't been a central theme of the requests. Maybe I can do some of the Numba examples with CUDA (Numba has a CUDA backend), but the main thing I should point you toward is CuPy, if you haven't already heard of it, and its ability to JIT-compile kernels in particular. That gives you a nice Python-C++ interface that's directly focused on GPUs.


Handle StaleObjectException raised from waiting for specific object a…

…ppear/disappear
When waiting for specific object appear or disappear, it is expected that UI will be changed. Thus, add a retry here when StaleObjectException is raised.

This change is

Reviewed 2 of 2 files at r1, all commit messages.
Reviewable status: all files reviewed, 2 unresolved discussions (waiting on @ko1in1u)

snippet_uiautomator/android/app/src/main/java/com/google/android/mobly/snippet/uiautomator/Utils.java line 28 at r1 (raw file):

  private static final long DEFAULT_CPU_SLEEP_MS = 100L;

  public static boolean waitUntilTrue(Supplier<Boolean> supplier, long timeoutInMillis) {

Nice to have @NonNull annotation here:
import androidx.annotation.NonNull;

public static boolean waitUntilTrue(@NonNull Supplier<Boolean> supplier, long timeoutInMillis) {

Code quote:
Supplier<Boolean> supplier

snippet_uiautomator/android/app/src/main/java/com/google/android/mobly/snippet/uiautomator/Utils.java line 29 at r1 (raw file):

  public static boolean waitUntilTrue(Supplier<Boolean> supplier, long timeoutInMillis) {
    long endTime = SystemClock.uptimeMillis() + timeoutInMillis;

Nice to have final here:
final long endTime = SystemClock.uptimeMillis() + timeoutInMillis;

Code quote:
long endTime = SystemClock.uptimeMillis() + timeoutInMillis;

Done, thanks for suggestions.


nixos/initrd-ssh: switch from Dropbear to OpenSSH

Motivation for this change
Dropbear lags behind OpenSSH significantly in both support for modern
key formats like ssh-ed25519, let alone the recently-introduced
U2F/FIDO2-based<EMAIL_ADDRESS>(as I found when I switched
my authorizedKeys over to it and promptly locked myself out of my
server's initrd SSH, breaking reboots), as well as security features
like multiprocess isolation. Using the same SSH daemon for stage-1 and
the main system ensures key formats will always remain compatible, as
well as more conveniently allowing the sharing of configuration and
host keys.
The main reason to use Dropbear over OpenSSH would be initrd space
concerns, but NixOS initrds are already large (17 MiB currently on my
server), and the size difference between the two isn't huge (the test's
initrd goes from 9.7 MiB to 12 MiB with this change). If the size is
still a problem, then it would be easy to shrink sshd down to a few
hundred kilobytes by using an initrd-specific build that uses musl and
disables things like Kerberos support.
This passes the test and works on my server, but more rigorous testing
and review from people who use initrd SSH would be appreciated!
@GrahamcOfBorg test initrd-network-ssh
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg test initrd-network-ssh

I think it's a good idea to not have two SSH servers to maintain.

Test failed.-

OpenSSH takes some time to start up, as a result test non-deterministically fails. This fixes the issue:
diff --git a/nixos/tests/initrd-network-ssh/default.nix b/nixos/tests/initrd-network-ssh/default.nix
index cc193c6cb6e..7e0930617f6 100644
--- a/nixos/tests/initrd-network-ssh/default.nix
+++ b/nixos/tests/initrd-network-ssh/default.nix
@@ -56,7 +56,17 @@ import ../make-test-python.nix ({ lib, ... }:
   testScript = ''
     start_all()
     client.wait_for_unit("network.target")
-    client.wait_until_succeeds("ping -c 1 server")
+
+
+    def ssh_is_up(_) -> bool:
+        status, _ = client.execute("nc -z server 22")
+        return status == 0
+
+
+    with client.nested("waiting for SSH server to come up"):
+        retry(ssh_is_up)
+
+
     client.succeed(
         "ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'touch /fnord'"
     )

@GrahamcOfBorg test initrd-network-ssh

Applied @yegortimoshenko's patch, thanks!
@GrahamcOfBorg test initrd-network-ssh

@GrahamcOfBorg test initrd-network-ssh

Rebased to fix conflict in the release notes.
@GrahamcOfBorg test initrd-network-ssh
cc @volth @Mic92 for having touched this module (relatively) recently

Updated to remove the key generation functionality (and thus remove ssh-keygen from initrds).
@GrahamcOfBorg test initrd-network-ssh

@GrahamcOfBorg test initrd-network-ssh

Rebased again.
@GrahamcOfBorg test initrd-network-ssh

LGTM. I'd like to merge this on Mar 27 unless anyone objects. cc @Mic92 @adisbladis @cole-h @andrew-d @misuzu

This PR broke the build of my system, which was to be expected. I just found the PR after I updated the channel on a system that use initrd ssh.
And I read the manual for the new setting and followed the setup of creating keys and configured as described in the example of the manual.
Then it didn't work. And it died on my with the following error (I promise, the file exists):
cp: cannot stat '/persistent/etc/initrd-ssh/ssh_host_ed_25519_key': No such file or directory

So I read the test that was mentioned above after finding this issue through searching the first error message (regarding the old setting being removed) and doing a git blame and looking a bit in the log. And I've read the test to see that the test specify boot.initrd.network.ssh.hostKeys as a list of paths and not as list of strings (as it's described in the manual for boot.initrd.network.ssh.hostKeys).
Broken:
{
  boot.initrd.network.ssh.hostKeys = [
    "/persistent/etc/initrd-ssh/ssh_host_rsa_key"
    "/persistent/etc/initrd-ssh/ssh_host_ed_25519_key"
  ];
}

Works:
{
  boot.initrd.network.ssh.hostKeys = [
    /persistent/etc/initrd-ssh/ssh_host_rsa_key
    /persistent/etc/initrd-ssh/ssh_host_ed_25519_key
  ];
}

I feel that this should be mentioned in the documentation somehow. In text or through an updated example.
Also, big thanks to @emilazy for doing this work, it has always been a bit meh for me that we've had dropbear since it doesn't support all types of keys that are common today. :)

Yep, see #84976, #85004; sorry you ran into this before the latter was merged.

Cool! Thanks :)

This change has created many problems for me, especially when combined with nixops deployments; it smacks of fixing something that wasn't broken:

I've no secure way or desire to push state (private host keys) to remote machines
Old system profiles that are broken by a bad path persist in breaking the rebuilds until they are removed by --delete-generations
I haven't even tried to boot these initrds yet, but it sounds like others are having problem with the openssh process starting up reliably.

At least one of these should be possible, going forward:

Select between using Dropbear or OpenSSH in initrd
Auto-generate keys in OpenSSH
Wait for proper secret storage in the nix store to be finished (I'm unclear on the status of this)
Find a way to deterministically generate the host key at run-time from the hardware

I'm willing to accept the security risks of using Dropbear and auto-generated keys. As far as I understand, any key embedded in the initrd is prone to being compromised anyway, and only through using some HW-crypto TPM scheme with secure boot could it be significantly mitigated. Keeping unprivileged users away from the host key but not root is a distinction without a difference, for my purposes.
I may be missing something simple regarding nixops/nixstore and secrets, but my initial impression of these changes is that they add configuration and runtime complexity for no real benefit. Forcing users to add more lines to their configs to do the same thing as before is regressive, and should be avoided at all costs.

This PR scratched at least one concrete itch for me (ed25519 key support), but I'm sorry that it's causing you problems.
I understand your objections primarily relate to the initrd secrets mechanism, which was already optionally used by the previous implementation. My original PR supported generating host keys at boot, like the previous implementation. I removed it at the request of the reviewer @Mic92 (https://github.com/NixOS/nixpkgs/pull/82603#discussion_r395337704, https://github.com/NixOS/nixpkgs/pull/82603#discussion_r395489116) as it makes very little sense to generate SSH host keys on every boot, and the migration overhead is one ssh-keygen(1) and a single line of NixOS configuration. The functionality could easily be restored, though, and has nothing to do with Dropbear vs. OpenSSH.

I haven't even tried to boot these initrds yet, but it sounds like others are having problem with the openssh process starting up reliably.

I haven't heard any reports of this; @etu's comment was a system build-time issue related to the implementation of initrd secrets that would have happened with the same configuration before this PR, and has been fixed in master. If you know of anyone having issues, please point me to them so I can help fix it.

(As far as fixing things that weren't broken goes, I think "using Ed25519 SSH public keys in your NixOS configuration will silently brick your initrd without warning" is definitely something broken, and had to be addressed one way or another; I implemented this PR after having to manually rescue my server boot after migrating off legacy RSA keys.)

NixOS breaking because it no longer has an RSA hostkey to use in initrd is a problem orthogonal to these changes; checks and warnings can always be improved. Rather than continuing to try to explain why the changes bother me, let me propose a solution:
TPM is the superior option for securing the initrd environment. I'm not too familiar with it myself, but I think it should be possible to store the private part of the host key in there, so not even root can ever see it. I don't understand TPM's design well enough to entrust it with my disk keys, but for a host key it should be more than enough. Whether OpenSSH or the initrd environment can be made to use the TPM for its encryption is a matter I would need to research.
Any precautions taken in storing keys outside of TPM are half-measures. Read permissions to /boot/**/*initrd (the default, btw) give an attacker all the material he needs to spoof your host and capture its disk keys from you.
I think configuration.nix should offer admins at minimum 2 options:

I don't care about security or I trust my network; generate a host key every boot
Store the host key material in TPM where nobody can read it, not even root.
(optional, actual) Store a fixed key somewhere on the host's FS

The second option is the best and should be encouraged, but not everyone has a TPM device available. Appropriate warnings should be shown based on whichever is chosen, but forcing admins to manage extra state by default is bad practice, so the first option should be the not-so-silent default.

I'm referring to the user authorizedKeys that are used to log in to the initrd sshd, not host keys. No amount of build-time checks can get around the fact that my YubiKey only has 4 OpenPGP key slots and all of them are Ed25519; there is literally no way for me to use my hardware security token to log in to my server without ssh-ed25519 key support (or<EMAIL_ADDRESS>since FIDO supports an arbitrary number of derived key pairs on the device, but again this is OpenSSH only). (As far as read permissions go, I have options = [ "umask=077 " ] set on /boot; arguably this should be default when using initrd secrets but it'd be fiddly to achieve, as /boot is often FAT32 which has no permission support, hence the requirement to use a mount option.)
Deriving a private key from a TPM would potentially be possible for those platforms that support it, but it would be a lot of engineering work (likely requiring extensive patches to the SSH daemon, as TPMs generally do not disclose a private key blob to you but act as an HSM), and we'd still need a basic mechanism to copy things to the initrd for the simple case.  Currently NixOS has no real strong verified boot chain or TPM support, so I don't think that pervasively using the TPM really makes sense, but it would definitely be an interesting project to implement.
The following patch should enable generating keys at boot again:
diff --git a/nixos/modules/system/boot/initrd-ssh.nix b/nixos/modules/system/boot/initrd-ssh.nix
index 5a334e69056..30da7b533a6 100644
--- a/nixos/modules/system/boot/initrd-ssh.nix
+++ b/nixos/modules/system/boot/initrd-ssh.nix
@@ -133,19 +133,13 @@ in
         assertion = cfg.authorizedKeys != [];
         message = "You should specify at least one authorized key for initrd SSH";
       }
-
-      {
-        assertion = cfg.hostKeys != [];
-        message = ''
-          You must now pre-generate the host keys for initrd SSH.
-          See the boot.initrd.network.ssh.hostKeys documentation
-          for instructions.
-        '';
-      }
     ];

     boot.initrd.extraUtilsCommands = ''
       copy_bin_and_libs ${pkgs.openssh}/bin/sshd
+      ${optionalString (cfg.hostKeys == []) ''
+        copy_bin_and_libs ${pkgs.openssh}/bin/ssh-keygen
+      ''}
       cp -pv ${pkgs.glibc.out}/lib/libnss_files.so.* $out/lib
     '';

@@ -181,6 +175,11 @@ in
         chmod 0600 "${initrdKeyPath path}"
       '')}

+      ${optionalString (cfg.hostKeys == []) ''
+        ssh-keygen -q -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
+        ssh-keygen -q -t ed25519 -N "" -f /etc/ssh/ssh_host_ed25519_key
+      ''}
+
       /bin/sshd -e
     '';

If this works for you, I can open a new PR and see what people think about restoring this functionality upstream. I think that recommending people set static host keys is still the most reasonable default, though; ssh(1) really doesn't like host keys changing on every connect and it's both simple to get up to be relatively secure (only root or your hosting provider can see the keys), and is never more insecure than generating keys on boot even when the bootloader doesn't support initrd secrets natively.

While I'm excited to see this PR (since I would rather be rid of Dropbear either way), it seems worth noting that the concrete itch (Ed25519 support) is covered by Dropbear now: https://github.com/mkj/dropbear/pull/91

While I'm excited to see this PR (since I would rather be rid of Dropbear either way), it seems worth noting that the concrete itch mentioned (Ed25519 support) got covered by Dropbear prior to this getting merged: https://github.com/mkj/dropbear/pull/91

For something as mission-critical and prone to breakage as the initrd environment, I find it imprudent to make such a substantial change and not leave behind an option to keep the old behavior, at least until the next major release, warning users until then. Being forced to face the potential of bricking your remote host with an update to initrd you have no use for is not a pleasant experience.
I also don't understand the disdain for Dropbear; it does the job of creating a secure channel over which to receive the unlock key. I'm confident many users like myself can trust their networks, and don't have to worry about MITM attacks for stealing keys that could probably be more practically stolen by reading kernel memory on the booted host. It should probably always be an option, if only to keep the initrd closure size down by a few MB.

@edef1c
It's good to hear that Dropbear supports Ed25519 keys now, since it's widely deployed in a lot of embedded environments and Ed25519 keys are getting very common. Still, there's a lot of functionality with no support in Dropbear; other than U2F/FIDO keys, to my knowledge Dropbear doesn't support SSH CAs at all, so even if it had equally good privilege separation there are a lot of configurations that would require OpenSSH.
The supported set of ciphers is also not ideal by modern cryptography standards, with no support for AES-GCM or ChaCha20-Poly1305, our top-preference OpenSSH ciphers (though this too seems like it's being addressed, it's several years after OpenSSH, libssh, tinyssh, ...).
@elitak
Unless you have any concrete problems with this PR that you didn't mention in previous comments, I'm afraid I don't have much more to say than my existing replies. The functionality is tested, this change has been in unstable for a month and a half now, and nobody has had any issues to my knowledge that weren't a result of initrd secrets misconfiguration/infelicities (which are tracked in other issues (#85000, #85563) and orthogonal to the choice of SSH implementation), so while I appreciate that changes to initrd should be made carefully, I don't think your stated reasons for conservatism override the benefits of using OpenSSH (better compatibility, better security architecture, the maintenance and support benefits of only having one SSH implementation used in NixOS).
I believe that maintaining parallel support for Dropbear would be a significant maintenance and testing burden and lead to a lot of additional code complexity for no concrete benefit. If initrd closure size is an issue, then there are several potential avenues to reducing the OpenSSH closure size mentioned in the original commit message that could be explored; I'd be happy to review a PR adding such an option if you'd like to write one. If you're having specific problems with initrd SSH after this change, I'd be happy to help debug them. Otherwise, I understand that you don't personally agree with this change, but I hope you can also understand that I think the benefits outweigh the costs of switching implementation.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/full-encrypted-nixos-system-on-legacy-boot-with-secrets-and-remote-unlock-for-unstable-20-03/8279/1


Does HipsDirectionLockAmount curve always evaluate to 0?

I can find HipsDirectionLockCurve and other curves defined in SKEL_Als, but all these curves evaluate to 0.
I am relatively new to Unreal, am I missing something?
Thanks!

Find out that HipsDirectionLockCurve is defined in several clips. I guess I didn't look closely though.


Example incomplete - No ItemSource setup code

Please how do I setup the Item Source?
Is it a normal list (e.g. an array of strings) or is it a more complex data source. I tried the earlier using the example on the readme page but it throws an error (System.InvalidCastException) when I run it.
Basically what is missing from the example is the Code behind file for the xaml that was shown.
I know this sounds basic and silly, but could any one help?
Thanks

@daniel-luberda has stated before this is just an extension of list view so I am assuming just like list view any collection implementing IEnumerable should work just fine.
I've made a quick sample app as well on my other account you can check it out here https://github.com/thetombomb91/FlowListViewSampleApp maybe it will help you with understanding. I'm just using ObservableCollection as my item source.

Thanks @tdesmond-hunterindustries
@AlmondMedia A common mistake is to use ViewCell, not a View (FlowListView doesn't support ViewCells

The newest nuget throws a more informative exception when eg ViewCell template is provided. Please reopen if you still have any problems.


[FEATURE REQ]Support pause and resume while query entities

Library or service name.
What library or service is this request related to? [e.g. Azure.Storage.Blobs]
Azure.Data.Tables
Is your feature request related to a problem? Please describe.
What feature would you like to get added? What problem is it solving?
while query entities using QueryEntityAsync, the ContinuationToken is not exposed and cannot be passed in. So there is no way to pause/resume the query. For example, If we have a webpage, which by default shows the first 1000 records(by calling QueryEntityAsync the first time). And when and only when user clicks a Next Page button, we call QueryEntityAsync again and return only the next 1000 records from table storage. But for now, the QueryEntityAsync doesn't support it.  It always iterate all records.
Please correct me if I'm wrong.

This blocks us from migrating Windows.Azure.Storage library to Azure.Data.Tables since no good way to simulate public virtual Task<TableQuerySegment<TElement>> ExecuteQuerySegmentedAsync<TElement>(TableQuery<TElement> query, TableContinuationToken token) where TElement : ITableEntity, new();

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Hi @juniwang Iterating through paged results is definitely possible with the current client. The following sample shows how:
https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/tables/Azure.Data.Tables/samples/Sample4QueryEntities.md#query-entities-with-maxperpage

Hi @christothes thanks. The sample shows how to get the first page. Is there any example to get the next page?

Figured it out, thanks. The ContinuationToken is a property of Pageable<TableEntity>

You shouldn't need to deal with the continuation token at all.
Each iteration through the result of AsPages is automatically fetching the next page of results for you using the continuation token behind the scenes. It does not fetch a page until the enumeration is iterated over. The page size is controlled by the maxItemsPerPage parameter sent to the Query method.
So, if you only wanted to fetch the first 10 items of a query that would return 1000's of items, you could specify a maxItemsPerPage value of 10 and exit the foreach loop after just one iteration.
Note that no matter what value is used for maxItemsPerPage, if you iterate through the loop until completion, you'll get the full result set, no matter how many there are.

No the automatic fetching next page is not expected.  In our case the next call could happen in different context even in different process/VM. We need to serialize and pass the continuationToken from one worker to another.


Support time-based triggers for process managers

To allow long running process managers to handle timeouts.
A process manager may request to be notified after a given period or at an exact date and time.
When the time arrives the process manager is notified and it may dispatch commands in response.
Requires consideration of how to persist these time-based triggers to survive application restarts and process crashes.

It feels weird to have commands that are dispatched later.
It seems better to have some kind of timed process (which should be a PM probably, and we already talked about PMs and timers) which just sends the command later. Just a ExpireOrder command that changes the state of the Order, no? Besides, a PM can control the expiring process if the command is dropped for any reason, something you can't do if you just send a delayed command once.

It's possible to implement time-based triggers using an external job scheduler and by raising events to set the callback time period (date time, recurring interval) and command to dispatch.
An standard event hander would then configure the job scheduler at the requested period to dispatch the command. This requires no changes to Commanded itself. It could be implemented as a standalone library.

Why? Is there anyone who needs this?
I agree with @Papipo that it should be done in PM. This seems to me like a business concern, and so it should not be done in a framework. Unless you need timers for things like periodic snapshotting etc. But that is not what you're talking about here, I think.

Closing, could be implemented as an external library.


Module test

Closes https://github.com/donejs/generator-donejs/issues/127.

Coverage increased (+0.01%) to 97.72% when pulling 82c59a94cfe6f718b459a0d89486e874ee8e4c50 on module-test into 1aa5d4cce79197602b05566d2804524d5c268197 on major.


Enables to override page cache adapters

Currently, page cache adapters will be loaded from concrete directory only. This change enables to add another adapters for developers.
Here is an example to use APC cache adapter.
application/config/concrete.php
<?php
return array(
    'cache' => array(
        'page' => array(
            'adapter' => 'apc',
            'ttl' => 3600,
            'namespace' => 'concrete5fullpagecache'
        )
    )
);

application/src/Cache/Page/ApcPageCache.php
<?php
namespace Application\Src\Cache\Page;

use Concrete\Core\Cache\Page\PageCache;
use Concrete\Core\Cache\Page\PageCacheRecord;
use Stash\Driver\Apc;
use Stash\Pool;
use Page as ConcretePage;
use Config;

class ApcPageCache extends PageCache
{
    static $pool;

    public function __construct()
    {
        $driver = new Apc();
        $options = array(
            'ttl'       => Config::get('concrete.cache.page.ttl'),
            'namespace' => Config::get('concrete.cache.page.namespace')
        );
        $driver->setOptions($options);

        self::$pool = new Pool($driver);
    }

    public function getRecord($mixed)
    {
        $key = $this->getCacheKey($mixed);
        if ($key) {
            $item = self::$pool->getItem($key);
            return $item->get();
        }
    }

    public function set(ConcretePage $c, $content)
    {
        $key = $this->getCacheKey($c);
        if ($key && $content) {
            $item = self::$pool->getItem($key);

            // Let other processes know that this one is rebuilding the data.
            $item->lock();

            $lifetime = $c->getCollectionFullPageCachingLifetimeValue();
            $response = new PageCacheRecord($c, $content, $lifetime);
            $item->set($response);
        }
    }

    public function purgeByRecord(\Concrete\Core\Cache\Page\PageCacheRecord $rec)
    {
        $key = $this->getCacheKey($rec);
        if ($key) {
            $item = self::$pool->getItem($key);
            $item->clear();
        }
    }

    public function purge(ConcretePage $c)
    {
        $key = $this->getCacheKey($c);
        if ($key) {
            $item = self::$pool->getItem($key);
            $item->clear();
        }
    }

    public function flush()
    {
        self::$pool->flush();
    }
}

The PR seems like a very reasonable thing to want to do, but I can't help but feel like we shouldn't be moving this stuff towards stash rather than adding more ways to implement caching drivers.
Honestly I think that pages would be a great fit for the "expensive" cache level (possibly with the option to change the cache "level" for pages to whatever was configured, and then if someone wanted to have it leverage something such as APC it would be as simple as adding it into the config drivers array ahead of the file system. Then we'd also get the benefit of having the hierarchical caching, which provides a huge benefit for people who might be running super large websites that don't completely fit into apc cache, but could be loaded from disk as needed rather than having to regenerate the page every time it falls out of memory cache.

I guess what I'm getting at, is is there any real reason to have it such that the PageCache doesn't simply point to a pool (aka level) which could be something that's configurable? Then we could likely do away with creating a new class for each different kind of driver adapter we end up using and probably even make things more configurable from the dashboard in time if we wanted to rather than it becoming largely a programming chore.

@MeyerJL historically page cache adapters have been drastically different than the standard cache. For example, in 5.6 the only non-file-based page cache adapter that we have currently is Varnish – which I don't think really fits in the Stash model.

@aembler can you elaborate on the varnish not fitting into stash's model thing? Looking at the stash documentation it doesn't seem like the driver interface is much different than our current cache type interface.

I guess I'm not really sure how it would work in the Stash model because these things aren't really going into Stash like any other objects. For example, when you purge a page from the full page cache and you're using the Varnish backend, it actually communicates out to perhaps a completely separate server and runs a request against the Varnish API. I think that's why we have the custom adapters.
Not to say that the original purpose of this issue isn't valid, because I'm sure it is – we haven't ported the Varnish cache to 5.7 yet so we haven't really come into contact with additional drivers yet.
I just see them as two fundamentally different things – that's not to say that in certain cases you might not  leverage Stash to do the storing of these page objects (as in the APC example above, or in other cases where you're using some kind of system for which Stash already has a driver.)

@aembler I'll try and work up a vagrant driver to work with the page cache pr I put up. Conceptually I have some ideas about how this would work (probably very similar to how the stash memcached driver works with some tweaks on checking the cached classes). I think a good proof a concept would go a long way towards building some confidence in this model.


Razzle + RNW + Loadable + Redux not preserve redux state from server

Hi thank you for great tools such as razzle that make easy all things.
I'm sorry but I'm new in SSR, i tried to combine RNW + Loadable + Redux.
Everything is going fine until it does not keep redux state from server.
I have already tried load store from window.__PRELOADED_STATE__ but it seems that client re-renders it again.

here's my github repo for the project : https://github.com/rayandrews/razzle-rnw-redux-loadable
Is there something that I'm missing?
Thank you for great tools!

I got an solution, silly me, just put window.PRELOADED_STATE before bundle.js.
It works!


Add: activate pipeline runs fetchRevisions-hook

It makes sense for the activate pipeline command to run the
fetchRevisions-hook because activation will depend on the
available revisions in most cases.

Generally makes sense but I'm curious what the actual use case is here, since you need to provide a revision key to the activate pipeline anyway.

Most plugins that implement the activate hook would check if the revision you want to activate is already uploaded. You can get these revisions by running the fetchRevisions-hook or by running this functionality inside the activate-hooks.
I think in most scenarios it makes more sense to build on the already implemented fetchRevisions-hook of the plugin because that will merge the revision data into the deployment context and it's easy to check the deployment context in following hooks.
fetchRevisions would then also need to run on the deploy command because you'd need the revisions data in the check that happens in activate when passing --activate=true to the pipeline. I will update this PR accordingly

Hmm, I would think the activate hook would optimistically assume it had
access to a valid revision and handle the error if that turns out to not be
the case.
On Sunday, August 30, 2015, Michael Klein<EMAIL_ADDRESS>wrote:

Most plugins that implement the activate hook would check if the revision
you want to activate is already uploaded. You can get these revisions by
running the fetchRevisions-hook or by running this functionality inside
the activate-hooks.
I think in most scenarios it makes more sense to build on the already
implemented fetchRevisions-hook of the plugin because that will merge the
revision data into the deployment context and it's easy to check the
deployment context in following hooks.
fetchRevisions would then also need to run on the deploy command because
you'd need the revisions data in the check that happens in activate when
passing --activate=true to the pipeline. I will update this PR accordingly
—
Reply to this email directly or view it on GitHub
https://github.com/ember-cli/ember-cli-deploy/pull/209#issuecomment-136155695
.

Not sure how the pipeline should then know of the error or how to handle it.
In the redis case 'current' would simply point to an invalid value and in the S3 case you'd try to copy the content of a non existent file to index.html in the index bucket.
The only way you'd know that the passed revision to activate was invalid is to get a list of valid revisions and compare that to the passed revision. that's what the fetchRevisions-hook is passing into the deployment context (existing revisons).
You need a list of valid revisions in the activate hook. When the user passes an invalid revision you need to stop the pipeline and error out. If we run the fetchRevisions hook we will have the available revisions available via the deployment context. If not we would need to implement a method that lists the revisions internally and use that. This is most likely what fetchRevisions uses internally and its much easier and more dry to use the deployment contest written by fetchRevisions instead of calling the internal method in the activate hook imo.

Does this mean that in order for the activate hook to work, the user needs to have installed a plugin that implements the fetchRevisions hook?
Which means that the plugin developer needs to have understood this conversation we are having right here?
Is that going to pose a bit of a disconnect?

No. Activate will just run the fetchRevisions hook so that an index plugin that needs a list of revisions when running activate can get that revision via the deployment context.
If a plugin developer decided to use a private method to get a list of available revisions or does not care about valid revisions the developer can just ignore the fetchRevisions hook and not implement it.

@LevelbossMike I had been thinking that in the redis case, the redis plugin can validate the specified revisionKey by attempting to read from the key and making sure there is something there. In the s3-index case, if the call to copyObject fails due to the source file not existing, then the revision key is not valid.
I feel comfortable with either approach. I don't think including the fetchRevisions hook is strictly necessary, and think it's strange to depend on it in the ember deploy [target] --activate case. So I think it's unnecessary, but not incorrect.

mmh. makes sense. I'll change the s3-index implementation accordingly.


[ERROR]: Remove IVF_HNSW section since it is no longer supported

Is there an existing issue for this?

[X] I have searched the existing issues.

Issue
In this page:
https://milvus.io/docs/v2.0.x/index.md
The IVF_HNSW is no longer supported, we should remove the IVF_HNSW section from this page.
Suggestion
No response
Anything else?
No response

Closed with PR #1617


Add support for alternate streams

Resolved / Related Issues
Items resolved / related issues by this PR.

Closes #177

Details of Changes
Add details of changes here.

Add basic support for alternate streams
Alternate data streams appear as semitransparent files under the main file
Eg: main file: "file_name" -> ADS: "file_name:ads_name")
Copy/move/delete/rename operations work
Opening ADS will copy it to temporary folder first (otherwise it can't be opened by external programs)
Preview pane works

All done in UWP, yay 😄
Notes

Files operations on ADS won't be picked up without manual refresh. Unfortunately ReadDirectoryChangesW does not give proper change notifications for ADS. This will have to wait till we fix refresh on MTP.
ADS on folders won't be sorted near their folder unless "sort folders alongside files" option is enabled

Validation
How did you test these changes?

[x] Built and ran the app

Screenshots (optional)
Add screenshots here.

I think we should provide an option to hide files-specified ADS which is used for color tag.

Not sure if it'd be worth it to have that setting as alternate data streams is already a very niche functionality for power users. I'd trust them to not delete ADS unless they know what they're doing. + @yaichenbaum for opinions.

I'm not very familiar with this topic so I don't have an opinion but we can make changes as necessary down the line.

@hez2010 are you familiar enough with ADS to review this PR?

are you familiar enough with ADS to review this PR?

I have some experience with ADS though might not that sufficient, but feel free to assign me for CR :)

are you familiar enough with ADS to review this PR?

I have some experience with ADS though might not that sufficient, but feel free to assign me for CR :)

It doesn't look like can assign you since you're not in the org but you can still add a review (I can add you if you're intrested in joining).

I can add you if you're intrested in joining

Yes, definitely interested in!


Added support for multiple namespaces

You can set multiple test filters at the same time by setting them as a string (run='Namespace1,Namespace2') or as a list (run=['Namespace1', 'Namespace2'])
You can set the property "parallel_forks" to true or false to control the parallel execution of the filters
if the filters are run in parallel you can specify the output files by using the template <<TEST_RESULT>>
(ex: run=['Namespace1', 'Namespace2'] reportFileName = MyReport_<<TEST_RESULT>>.xml) will output two files: MyReport_Namespace1.xml and MyReport_Namespace2.xml

Any way to avoid the test result trouble by merging them ? (so that both parallel and non-parallel modes have the same behavior)

Merging the results is not very easy if we want to do it right. We could use something like 15below/NUnitMerger to merge the files, or we could translate the code to groovy and embed it, but it involves some work

I'll try and take a look on the merging

Cool, you can find the XML schema and samples here: http://nunit.org/files/
Also for a first start, a simple concat (merging root node) of the files will probably be enough for the xunit jenkins reporter use (I believe this XSL is used: https://github.com/jenkinsci/xunit-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/xunit/types/nunit-1.0-to-junit-2.xsl)

Already merged in #18


Refactor: use OakIcon for subject and resource icons [LESQ-970]

Description
Music year: {owa_music_year}
Refactor all instances of subject and resource icons in OWA to use the OakIcon from oak-components, this will enable designers to update the icons in cloudinary and have them consistent across the site.
Some of the old pixel sizes in use are not supported in the new components so there are some slight visual changes, lesson overview header is the biggest change.
A few curriculum squad components were updated where they were using SubjectIcon.
How to test
https://deploy-preview-2863--oak-web-application.netlify.thenational.academy/
You should be able to see icons now coming from cloudinary in the network tab.
There should be no functionality changes, only small visual changes on the following pages:

Teachers homepage tab: resource icons on the image
All subject listing pages (specialist included): subject icons
Unit listing pages: subject icon in header
Lesson listing pages: subject icon in header and resource icons on lesson cards
Lesson overview pages: subject icon in header
Download and share pages: resource icons
Curriculum header: subject icon
Curriculum overview tab: subject icon
Curriculum download: subject icon (seems to be maths for all subjects)

@HelenHarlow If you have time, can you take a look at the curriculum pages and make sure there are no ill effects in the curriculum journey?

@rightsaidjames I can fix that here, should the resource icons also have empty alt text?

@njblore Yup, these resource icons also have redundant alt text because the images appear next to the name of the resource :) Thanks!

@rightsaidjames good spot! that component was already doing its own icon validation without a fallback, so I've moved that (and search filters) to include the new method with the fallback

Success!

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


keyerror: 'distance' when running sample script on Daily

I had been running a script using meteostat fine, but it looks like perhaps something has broken in the code?  I debugged by trying to run this sample script from the documentation.
`# Import Meteostat library and dependencies
from datetime import datetime
import matplotlib.pyplot as plt
from meteostat import Point, Daily
Set time period
start = datetime(2018, 1, 1)
end = datetime(2018, 12, 31)
Create Point for Vancouver, BC
vancouver = Point(49.2497, -123.1193, 70)
Get daily data for 2018
data = Daily(vancouver, start, end)
data = data.fetch()
Plot line chart including average, minimum and maximum temperature
data.plot(y=['tavg', 'tmin', 'tmax'])
plt.show()`
I'm running this in a JupterLab Notebook.  This is the error it gives me:
`---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2897             try:
-> 2898                 return self._engine.get_loc(casted_key)
2899             except KeyError as err:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'distance'
The above exception was the direct cause of the following exception:
KeyError                                  Traceback (most recent call last)
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/generic.py in _set_item(self, key, value)
3575         try:
-> 3576             loc = self._info_axis.get_loc(key)
3577         except KeyError:
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2899             except KeyError as err:
-> 2900                 raise KeyError(key) from err
2901
KeyError: 'distance'
During handling of the above exception, another exception occurred:
ValueError                                Traceback (most recent call last)
 in
12
13 # Get daily data for 2018
---> 14 data = Daily(vancouver, start, end)
15 data = data.fetch()
16
/usr/local/anaconda/lib/python3.6/site-packages/meteostat/daily.py in init(self, loc, start, end, model)
238             self.stations = loc.index
239         elif isinstance(loc, Point):
--> 240             stations = loc.get_stations('hourly', start, end)
241             self.stations = stations.index
242         else:
/usr/local/anaconda/lib/python3.6/site-packages/meteostat/point.py in get_stations(self, granularity, start, end)
70         # Get nearby weather stations
71         stations = Stations()
---> 72         stations = stations.nearby(self.lat, self.lon, self.radius)
73
74         # Guess altitude if not set
/usr/local/anaconda/lib/python3.6/site-packages/meteostat/stations.py in nearby(self, lat, lon, radius)
161         # Get distance for each stationsd
162         temp.stations['distance'] = temp.stations.apply(
--> 163             lambda station: distance(station, [lat, lon]), axis=1)
164
165         # Filter by radius
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/frame.py in setitem(self, key, value)
3042         else:
3043             # set column
-> 3044             self._set_item(key, value)
3045
3046     def _setitem_slice(self, key: slice, value):
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/frame.py in _set_item(self, key, value)
3119         self._ensure_valid_index(value)
3120         value = self._sanitize_column(key, value)
-> 3121         NDFrame._set_item(self, key, value)
3122
3123         # check if we are modifying a copy
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/generic.py in _set_item(self, key, value)
3577         except KeyError:
3578             # This item wasn't present, just insert at end
-> 3579             self._mgr.insert(len(self._info_axis), key, value)
3580             return
3581
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/internals/managers.py in insert(self, loc, item, value, allow_duplicates)
1196             value = _safe_reshape(value, (1,) + value.shape)
1197
-> 1198         block = make_block(values=value, ndim=self.ndim, placement=slice(loc, loc + 1))
1199
1200         for blkno, count in _fast_count_smallints(self.blknos[loc:]):
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/internals/blocks.py in make_block(values, placement, klass, ndim, dtype)
2742         values = DatetimeArray._simple_new(values, dtype=dtype)
2743
-> 2744     return klass(values, ndim=ndim, placement=placement)
2745
2746
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/internals/blocks.py in init(self, values, placement, ndim)
2398             values = np.array(values, dtype=object)
2399
-> 2400         super().init(values, ndim=ndim, placement=placement)
2401
2402     @property
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/internals/blocks.py in init(self, values, placement, ndim)
129         if self._validate_ndim and self.ndim and len(self.mgr_locs) != len(self.values):
130             raise ValueError(
--> 131                 f"Wrong number of items passed {len(self.values)}, "
132                 f"placement implies {len(self.mgr_locs)}"
133             )
ValueError: Wrong number of items passed 9, placement implies 1`

Update on this:
I found the closed issue with something similar.  I tried the solutions there by running these commands:
!pip install meteostat==1.2.2
!pip install meteostat -U
!rm -rf ~/.meteostat
I am still running the sample code.  I am getting a different error now:

ImportError                               Traceback (most recent call last)
 in
5 # Get a weather station
6 stations = Stations()
----> 7 stations = stations.nearby(50, 8)
8 station = stations.fetch(1)
9
/usr/local/anaconda/lib/python3.6/site-packages/meteostat/stations.py in nearby(self, lat, lon, radius)
161         # Get distance for each stationsd
162         temp.stations['distance'] = temp.stations.apply(
--> 163             lambda station: distance(station, [lat, lon]), axis=1)
164
165         # Filter by radius
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/frame.py in apply(self, func, axis, broadcast, raw, reduce, result_type, args, **kwds)
5992         keep_shape: bool = False,
5993         keep_equal: bool = False,
-> 5994     ) -> "DataFrame":
5995         return super().compare(
5996             other=other,
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/apply.py in
18 from pandas.core.dtypes.generic import ABCSeries
19
---> 20 from pandas.core.construction import create_series_with_explicit_dtype
21
22 if TYPE_CHECKING:
/usr/local/anaconda/lib/python3.6/site-packages/pandas/core/construction.py in
13
14 from pandas._libs import lib
---> 15 from pandas._libs.tslibs import IncompatibleFrequency, OutOfBoundsDatetime
16 from pandas._typing import AnyArrayLike, ArrayLike, Dtype, DtypeObj
17
ImportError: cannot import name 'IncompatibleFrequency'

Hm, no idea what this error means. Can you try to upgrade to latest Pandas version?

I had the same problem, I only had to run :
rm -rf ~/.meteostat
I'm using a text editor, python 3.7.6, meteostat 1.2.2, pandas 1.2.4


Fix template name handling

We used to be able to specify cra-template or cra-template@next as a template name, which is important when testing alpha releases, but that broke at some point. This fixes that bug and adds tests for the template name matching.

Thanks for solving this @iansu, we can talk about it later today - and see what we can do about tests.


SessionWindows support

Hello,
I noticed, there is no support for SessionWindow. I looked at the source code and it seems that at least some preparation has been done (such as ISessionStore<K,AGG>). Is there any chance this would be implemented in a foreseeable future?
I might try by myself but I wonder if there is any special reason behind this... are there any dangerous traps that can catch me?
Thanks a lot and have a nice day,
Michael

Hi @michaeljurek-ext95167,
True, I began some background code for session store feature. But it's not complete at all.
Session store is a windowing store with different behavior.
You can have a look at Kafka streams in JAVA if you want and trying to implement this feature if you want.
If you have any questions feel free to reach out to me.
Kr

Thanks for your answer. So if I understand you correctly, SessionWindow just did not make it high enough on priority list and there is no technical reason for not implementing it so far.
Thanks and have a nice day,
Michael

Hi @michaeljurek-ext95167,
No technical reason for not implementing. Just need more free time 😅.
++

Was this closed because it as Completed, or closed because it will not be done?

Closed because for now it was not planned on the roadmap.


tests: resolve testing integration

adjust package name to canonical github format
require opt-in to integration test and disable fmt check (that's supposed to be covered now by golangci-lint tooling, as it can be a blocked package. for now just disabled).
@andrii-zakurenyi fix for viper config solving unit tests.
add github link workflows. (will fail right now due to touching files with gofumpt). Later workflows will only run against changed content.

@andrii-zakurenyi if you get a chance and the test is failing still, mind confirming if I'm missing something in setting up the environment for the unit test? TestHandlePolicyDeleteCmd failing the check, for example. I'll catch up tomorrow. Cheers

@andrii-zakurenyi if you get a chance and the test is failing still, mind confirming if I'm missing something in setting up the environment for the unit test? TestHandlePolicyDeleteCmd failing the check, for example. I'll catch up tomorrow. Cheers

aha, Viper Global Configuration again :)
https://github.com/DelineaXPM/dsv-cli/pull/15

@andrii-zakurenyi merging to main. I'd like you to see if you get the same viper issue after that and push another fix if you can. I'm overriding for now. I did pull in your change but still showing a failure.


3923- url creation with optional port flag

What type of PR is this?
/kind bug
/area devfile
/area url
What does does this PR do / why we need it:
The --port flag should be an optional flag if there is only one port exposed in devfile.
This PR fixes the regression.
Also created an integration test for the specific case
Which issue(s) this PR fixes:
Fixes #3923
PR acceptance criteria:

[ ] Unit test

[x] Integration test

[ ] Documentation

[ ] I have read the test guidelines

How to test changes / Special notes to the reviewer:
make test-cmd-devfile-url
Manual Test:
odo url create should successfully create an endpoint in devfile

/retest

error: some steps failed:
  * could not run steps: execution cancelled
time="2020-09-16T17:52:27Z" level=info msg="Reporting job state 'failed' with reason 'executing_graph:interrupted'"
{"component":"entrypoint","file":"prow/entrypoint/run.go:247","func":"k8s.io/test-infra/prow/entrypoint.gracefullyTerminate","level":"error","msg":"Process gracefully exited before 30m0s grace period","severity":"error","time":"2020-09-16T17:52:27Z"}

/retest

/approve