Change empty PM view text when user does not have permissions to send…

Fixes: #21889

Screenshots and screen captures:
Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

@alya please help me with this error as I am not able to resolve that

@supriya-045 in the Github Actions tab, you can see that the error is caused by test failed: /__w/zulip/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html i.e. you need to update frontend_tests/node_tests/narrow.js and re-run the unit tests, which you can do like this:
(zulip-py3-venv) vagrant@b16f7516d0eb:/srv/zulip$ ./tools/test-js-with-node frontend_tests/node_tests/narrow.js
Starting node tests...
running test narrow
        test: empty_narrow_html
--------------------------------------------------
test failed: /srv/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html

AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected

  '
\n' +
    '
 This is a title
\n' +
+   '
\n' +
+   '
 This is the html
\n' +
+   '
\n' +
-   '
 This is the html
\n' +
    '
\n'
    at /srv/zulip/frontend_tests/node_tests/narrow.js:83:12
    at /srv/zulip/frontend_tests/zjsunit/test.js:35:13
    at Object.exports.with_overrides (/srv/zulip/frontend_tests/zjsunit/namespace.js:489:9)
    at exports.run_test (/srv/zulip/frontend_tests/zjsunit/test.js:34:19)
    at Object.<anonymous> (/srv/zulip/frontend_tests/node_tests/narrow.js:79:1)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Module._compile (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:136:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Object.newLoader [as .js] (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:141:7)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.load [as _load] (/srv/zulip/frontend_tests/zjsunit/namespace.js:92:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at run_one_module (/srv/zulip/frontend_tests/zjsunit/index.js:95:5)
(...)

** Tests failed, PLEASE FIX! **

i.e. to run just this test on your machine, run ./tools/test-js-with-node frontend_tests/node_tests/narrow.js

@supriya-045 in the Github Actions tab, you can see that the error is caused by test failed: /__w/zulip/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html i.e. you need to update frontend_tests/node_tests/narrow.js and re-run the unit tests, which you can do like this:
(zulip-py3-venv) vagrant@b16f7516d0eb:/srv/zulip$ ./tools/test-js-with-node frontend_tests/node_tests/narrow.js
Starting node tests...
running test narrow
        test: empty_narrow_html
--------------------------------------------------
test failed: /srv/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html

AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected

  '
\n' +
    '
 This is a title
\n' +
+   '
\n' +
+   '
 This is the html
\n' +
+   '
\n' +
-   '
 This is the html
\n' +
    '
\n'
    at /srv/zulip/frontend_tests/node_tests/narrow.js:83:12
    at /srv/zulip/frontend_tests/zjsunit/test.js:35:13
    at Object.exports.with_overrides (/srv/zulip/frontend_tests/zjsunit/namespace.js:489:9)
    at exports.run_test (/srv/zulip/frontend_tests/zjsunit/test.js:34:19)
    at Object.<anonymous> (/srv/zulip/frontend_tests/node_tests/narrow.js:79:1)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Module._compile (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:136:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Object.newLoader [as .js] (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:141:7)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.load [as _load] (/srv/zulip/frontend_tests/zjsunit/namespace.js:92:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at run_one_module (/srv/zulip/frontend_tests/zjsunit/index.js:95:5)
(...)

** Tests failed, PLEASE FIX! **

i.e. to run just this test on your machine, run ./tools/test-js-with-node frontend_tests/node_tests/narrow.js

Do i need to modify test files to remove this error ?

yes - frontend_tests/node_tests/narrow.js in particular
On Sat, Apr 23, 2022 at 5:12 PM Supriya Patidar @.***>
wrote:

@supriya-045 https://github.com/supriya-045 in the Github Actions tab
https://github.com/zulip/zulip/pull/21892/checks, you can see that the
error is caused by test failed:
/__w/zulip/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html
i.e. you need to update frontend_tests/node_tests/narrow.js and re-run
the unit tests, which you can do like this:
(zulip-py3-venv) @.***:/srv/zulip$ ./tools/test-js-with-node frontend_tests/node_tests/narrow.js
Starting node tests...
running test narrow
test: empty_narrow_html
test failed: /srv/zulip/frontend_tests/node_tests/narrow.js > empty_narrow_html
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:

actual - expected
'\n' +
'     This is a title \n' +

'    \n' +

'         This is the html \n' +

'    \n' +

'     This is the html \n' +
'\n'
at /srv/zulip/frontend_tests/node_tests/narrow.js:83:12
at /srv/zulip/frontend_tests/zjsunit/test.js:35:13
at Object.exports.with_overrides (/srv/zulip/frontend_tests/zjsunit/namespace.js:489:9)
at exports.run_test (/srv/zulip/frontend_tests/zjsunit/test.js:34:19)
at Object. (/srv/zulip/frontend_tests/node_tests/narrow.js:79:1)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Module._compile (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:136:24)
at Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
at Object.newLoader [as .js] (/srv/zulip-npm-cache/18b43a2b2537b651d00677b0f92d76223b4cfd3a/node_modules/pirates/lib/index.js:141:7)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Module._load (node:internal/modules/cjs/loader:822:12)
at Function.load [as _load] (/srv/zulip/frontend_tests/zjsunit/namespace.js:92:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at run_one_module (/srv/zulip/frontend_tests/zjsunit/index.js:95:5)
(...)

** Tests failed, PLEASE FIX! **
i.e. to run just this test on your machine, run ./tools/test-js-with-node
frontend_tests/node_tests/narrow.js
Do i need to modify test files to remove this error ?
—
Reply to this email directly, view it on GitHub
https://github.com/zulip/zulip/pull/21892#issuecomment-1107650202, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AABCFYWEX7QYRC4UGQOIQZ3VGRRSTANCNFSM5UCWQCNA
.
You are receiving this because you commented.Message ID:
@.***>

@alya  Please review this PR.Thanks!

@asah since you looked at this earlier, would you be up for doing a full code review pass to see what the next steps are?

Thanks for tackling this @supriya-045! Unfortunately, it doesn't look like this PR goes in the right direction. I expect that the right direction will be to expose the "who can use private messages" option to the JS code, and then switch the UI entirely to block use of PMs.

Closing in favor of https://github.com/zulip/zulip/pull/23400 for this issue. Thanks @supriya-045 for working on this!


Is it possible to partially mock lambda expressions?

I found a situation where I need to check expectations on a mocked lambda expression returned by another mock object.
The code is more or less like that:
handler = flexmock(lambda: None)

# other mock returns handler
handler\
    .should_receive('__call__')\
    .with_args(DataReceivedEvent)\
    .once()

# exercise code under test

Flexmock complains saying: <function TestDispatchers.test_dispatch_an_event.<locals>.<lambda> at 0x7f8962b03b70> does not have attribute __call__. AFAIK lambda expressions do have an attribute __call__ and so are callable.
I'm using Python 3.4.3 and flexmock 0.9.7.

With this code flexmock stops complaining:
class EventHandlerForTests:
    def __call__(self, *args, **kwargs):
        pass

handler = flexmock(EventHandlerForTests)
handler\
    .should_receive('__call__')\
    .with_args(DataReceivedEvent)\
    .once()

But however, if I mock an instance of the class EventHandlerForTests, it fails again.

So the natural question here would be why in the world would you be trying to mock a lambda? It's an anonymous function, if you can create it to pass to flexmock() you can already make it do whatever you want. If you want a mock object returned then you should just create that directly. Mocking call on an object instance sounds like it should be possible in theory, so that may be a legitimate bug if it only works at the class level.

My apologies if I'm asking something absurd :innocent: . I'm testing a piece of code that it's supposed to dinamically call a function (e.g. give_me_the_fn()(arg1, arg2)). After reading this comment I thought it would be better to mock another object rather than the FlexMock class itself and I believed a lambda expression was a convenient option.
Maybe it doesn't matter too much in my case because the underlying __call__ is never invoked, but what if the expectation was should_call? Just wondering...
Regarding the differences between mocking __call__ at class or instance levels I could open a new issue if you wish and close this one if you think it doesn't make sense.

I've arranged some tests in a gist for the sake of clarity.

I copied this issue to the new official repo: https://github.com/bkabrda/flexmock/issues/9 closing this one


Implement cookie domain

Add options to CookieTokenSource to set cookie domain.

publicDomainFn set domain for non-httponly cookies
privateDomainFn set domain for httponly cookies

👍


Fix userInfo check in ldap plugin

fixes https://github.com/travisghansen/external-auth-server/issues/48

I've audited that and this looks good and appears to be the only place where it's a potential issue currently. Thanks for your contribution!

Can you submit the MR to my repo? or I will fix it up myself.

done: https://github.com/travisghansen/external-auth-server/pull/53 this MR was intended that way but I choose wrong target repo.


merging in modified 375gnu to fix issue 125

This fixes issue 125.

if user data bag object has UID specified as a string, will convert to appropriate integer.
If UID == USERNAME, this will already fail for user creation object.
if user data bag object has no uid specified will attempt to set the owner to the username.
On Mac OS X this will break. So Mac OS X users must specify a UID in the data bag objects.

For future me: https://github.com/bbatsov/rubocop/issues/2608


Notification position

Hi,
there's a way to change notification position?
In my application, I have a button in the bottom-right corner, and every time a notification is show, it overlap the button.
I would like to move notification from bottom-right corner to top-right.

I'm also curious about this - does it fit within Google Materials design specification?

Well, I don't know exactly what material design spec says about notification. But I'm pretty sure that normally they say that the main action button should be near the bottom-right corner, I suppose to be more accesible using mobile device with one hand...

The button must be at the right bottom only on mobile display, and at the right "top" (at the jonction between the header and the background) for a desktop display.
I can't open the whiteframes from the spec, but if yo

We did not manage the notification position for now, sorry. And I can't give you a CSS workaround as it's managed mainly by javascript. I'll try to make this tonight if I have the time since it should take me only a few minutes. The Notification service would have a setPosition with four values ('top-left', 'top-right', 'bottom-left', 'bottom-right'). I'll let you know once it will be available.

And sorry for the misclick on the close isssue button. My touchpad does not always listen to me.

Ha ha malexandre

Hmm, I can't think of a way to manage the piling with this. But we'll think on that. Not right now though.

No worries malexandre

position: fixed;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);


[CST-7754] [CST-7756] renamed migration scripts to follow sequence

References
Add references/links to any related issues or PRs. These may include:

Fixes #issue-number (if this fixes an issue ticket)
Related to DSpace/RestContract#pr-number  (if a corresponding REST Contract PR exists)

Description
After merge, scripts created to update and migrate database for what concerns supervision order and subscription tables were not executed because out of order.
Instructions for Reviewers
List of changes in this PR:

updated script names for creation of supervision order table and update of subscription table in order to follow the correct sequence.

Checklist

[x] My PR is small in size (e.g. less than 1,000 lines of code, not including comments & integration tests). Exceptions may be made if previously agreed upon.
[x] My PR passes Checkstyle validation based on the Code Style Guide.
[ ] My PR includes Javadoc for all new (or modified) public methods and classes. It also includes Javadoc for large or complex private methods.
[ ] My PR passes all tests and includes new/updated Unit or Integration Tests based on the Code Testing Guide.
[ ] If my PR includes new libraries/dependencies (in any pom.xml), I've made sure their licenses align with the DSpace BSD License based on the Licensing of Contributions documentation.
[ ] If my PR modifies REST API endpoints, I've opened a separate REST Contract PR related to this change.
[ ] If my PR includes new configurations, I've provided basic technical documentation in the PR itself.
[ ] If my PR fixes an issue ticket, I've linked them together.

Not needed


Add example to readme demonstrating host-manager usage with dynamic IPs

Adds an example to the readme which demonstrates how a dynamic IP can be used on a vagrant box, and the IP can be retrieved and assigned to a domain using host-manager.
Not 100% on the verbiage or example code, but I think the idea is solid and should be in the readme, in some form.

+1 this works for me, although it might be better integrated into the plugin, rather than having to add it to your Vagrantfile for each project.
I don't want to start specifying ip addresses for my VMs because we have many projects on the go, people work on more than one project, and might have more than one VM running, and I don't want IPs to clash. This lets me not worry about that.

This is not best practice.


Make Solidity contracts upgradeable using UUPS proxies

I know that @bghughes had started working on adding hardhat #9, so please focus on changes made to the smart contracts only for now, and eventually we should merge with @bghughes's hardhat deployment/test implementations.

Thank you for these comments, @BrassLion. I will reflect your suggestions and edits in the next commit.
As for testing, brownie just doesn't work on my device, despite hours of effort troubleshooting it (my python envs and paths are pretty messed up). I was wondering if I could build a hardhat-based test suite for the next commit under the same PR? I think it's still within the scope since testing is a necessary part of the process.

I think the nodejs CI/CD flow has been properly configured and was able to run all tests. @BrassLion Take a look at the new test suite -- it's basically a rewrite of those brownie tests, and I added a module to test upgradeable contracts.

I know that @bghughes had started working on adding hardhat #9, so please focus on changes made to the smart contracts only for now, and eventually we should merge with @bghughes's hardhat deployment/test implementations.

Sounds great - btw, I agree on the move to UUPS proxies in practice though they are less tested at market

Thanks for taking a look at migrating the test code over to Hardhat.
We should really be making PRs as focused as possible, in order to make reviewing changes easy.
This PR should focus on the minimum code changes required to make the token contract upgradable, with associated tests. Any other code should be moved to a new PR so those changes can be added incrementally.
I'd suggest watching #9 closely, and maybe building on top of that branch so you can avoid any conflicts with it, since it will need to be merged first.

@BrassLion Thank you for the feedback. I have resolved your comments and this PR should be good to go.
We should really discuss and decide on what to do next because #9 is developing scripts based on un-upgradable contracts. If we want to keep each PR to its scope, then I cannot really change #9's contracts to upgradeable and thereby build on top of that branch. Let me know what you think is the best course of action to take from here.


python37Packages.cypari2: 1.3.1 -> 2.0.1

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/python3.7-cypari2/versions.
meta.description for python37Packages.cypari2 is: '"Cython bindings for PARI"'.

Checks done (click to expand)

built on NixOS

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 2.0.1 with grep in /nix/store/hmx980i5xs9483ikkm43c4kayzzjcllh-python3.7-cypari2-2.0.1

directory tree listing: https://gist.github.com/413be3f735f5a349d37b592b524b202c

du listing: https://gist.github.com/3efde341fd85b7f85f1b2c669d284b68

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

10 total rebuild path(s)
4 package rebuild(s)
4 x86_64-linux rebuild(s)
2 i686-linux rebuild(s)
2 x86_64-darwin rebuild(s)
2 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
python27Packages.cypari2
python37Packages.cypari2
sage
sageWithDoc

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/hmx980i5xs9483ikkm43c4kayzzjcllh-python3.7-cypari2-2.0.1 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A python37Packages.cypari2 https://github.com/r-ryantm/nixpkgs/archive/d7b6654972b4caaf22d0e674f9443f87762065cb.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/hmx980i5xs9483ikkm43c4kayzzjcllh-python3.7-cypari2-2.0.1
ls -la /nix/store/hmx980i5xs9483ikkm43c4kayzzjcllh-python3.7-cypari2-2.0.1/bin

cc @timokau for testing.

https://github.com/NixOS/nixpkgs/pull/51414 still applies, waiting for upstream sage support (which is the sole user of cypari).

I think the bot will create a new PR if there is no PR open, but I may be wrong. cc @ryantm

@fridh that's correct


Explain schema in beginner/interface.ipynb

Hi there,

Schema

This leads us to schema.  Schema is explicit in Fugue for a couple of reasons. First, is to allow quick validation if the computation job contains all the necessary columns.

Beyond this, explicit schema is very important in a distributed setting. The DataFrame can be split across multiple machines, and each machine only sees the data it holds. A strong schema guarantees that operations are performed as expected across all machines. A lot of heavy pandas users are not used to explicit schema but it becomes more important in a distributed setting. Inferring schema is an expensive operation. There are 3 basic ways to define schema with Fugue. Note that we are specifying the output schema of the extension.

This might be made a little clearer, but I'm not quite sure how:

[x] What is schema?
[x] How does it guarantee operations perform as expected?

This is a good suggestion. I just think strong schema should be explicit schema in number 2.
You are exactly right with number 1, Fugue can error out quickly because of the DAG it creates if there is a schema mismatch.
This also has some information about number 3 that you can incorporate.
It is also important to note that schema is a requirement for using Spark and Dask in general and using user-defined functions. Fugue as an abstraction layer on provides a simpler interface to work with these.

Thanks Kevin, how about:

Inferring schema is an expensive and error-prone operation.  To infer the schema, distributed computing frameworks have to go through at least one partition of data to figure out the possible schema.  If the inferred schema is inconsistent across partitions, the result will be wrong.

Yeah that sounds right!

Great, thanks Kevin, I'll add the above into the beginner/ docs once #79 has either merged or closed!


Kodi is not working anymore for jio and hotstar

Kodi is not working anymore for jio and hotstar
Kodi : 19.4
Repo: 2.0
Addon : Jio and Hotstar
Device: Firestick
Please suggest further to resolve this problem.
Thanks in advance.

Any update further

It seems this repo is no longer maintained.

Yes first Hotstar not working now jio tv also not working #108

JioTV is working for me, but sometimes in busy hours, like around 9pm, some channels (especially SONY channels) start to buffer.

Hotstar is not working at all, shows api error when playing something, and when signing in, the login window appears for a few seconds.

Hotstar dosen't work
Star and Zee channels also dosen't work at all.

@iMro0t Any further updates?

@iMro0t Hotstar shows "Subscription Error" and Jio just keep buffering. It both were working perfectly fine few months ago but it has stopped working now. I am in Kodi 19.3 and using BotAllen 2.0.0 repository.


Propose access request with LDN

Status: draft intended for feedback.
This PR follows up on https://github.com/solid/app-authorization-panel/issues/27 by providing a generic mechanism that allows agents to request permissions to resources. It supports:

one or multiple agents
groups
for all apps or for specific apps
different modes (Read / Append / Write / Control)
for one or multiple resources
multiple permissions blocks for different agents
any future extensions to WebACL documents

As currently drafted, it also supports:

requesting append operations to any RDF document

for evaluation, it would be useful to have more detail in this proposal, including operational details (such as how an approval process could work between steps 3 and 4).
also it would be useful and instructive to see a complete practical example similar to the one in my proposal that illustrates how the parties (that is: requester, resource server, approver) fit together, and how they transition between their different states.

how an approval process could work between steps 3 and 4

That's is an internal matter though; it's not visible in the communication, which is what this process governs. There are many different ways for such an internal process to work (and the proposal purposely does not constrain them). One of them is an app that handles requests matching the suggested shape, and presents them to a user in natural language.
Any other specific details that you would be needed?

also it would be useful and instructive to see a complete practical example similar to the one in my proposal

The draft is basically only such an example at the moment. Will add some more description.

Any other specific details that would be needed?

lots more details would be needed to evaluate the proposal. however, a good start would be the two previously requested.
if how an approval process could work (including how an app might help the user participate in the process) is out of scope, then some indication of how a workable user experience for approval might fit in with the flow you imagine would be useful. for example, do you imagine the user having an approval app sitting in a window off to the side, listening for incoming permission requests? do you imagine some parallel means by which an app might be alerted to direct the user to an approval app or page or ...?
by "complete practical example similar to the one in my proposal", i meant annotated HTTP exchange(s) that show exactly what you mean (even if some things like exact data formats and link relation names are preliminary).
some other details that would be useful to know, for a start:

do you need authorization credentials to post to the permission request inbox?
do you imagine the permission request inbox will always have the same URI?
what if the server determines it's not appropriate to allow this client to make a permission request?
to what inbox would the resource server send an accept/denied notification? are credentials needed to post to that?
how does the app get permission to read the notification inbox in the first place?
do you imagine that permission requests would be explicitly for the exact permission to the exact resource(s) required, or do you imagine that the common case would be that the server would interpret the request as a representative example of the kind of access required, and let/help the approver generalize the request to what's actually needed?

there will be more questions as details are filled in.

Thanks for following up.

lots more details would be needed to evaluate the proposal.

Note that at this moment, I'm mainly looking for an evaluation of the idea, that idea being "let's solve it with LDN". If that general direction is confirmed to be promising, a more formal description would be proposed.

however, a good start would be the two previously requested.

how an approval process could work between steps 3 and 4

Has been explained as out of scope in https://github.com/solid/app-authorization-panel/pull/28#issuecomment-526930347

how the parties (that is: requester, resource server, approver) fit together

Has been clarified in cad39014139a25a16dc22c1c4b183b3cd10e5d9a

annotated HTTP exchange(s) that show exactly what you mean (even if some things like exact data formats and link relation names are preliminary).

This proposal does not define a new protocol of API over HTTP; it reuses the LDN protocol. The only things this proposal does is constrain LDN messages. Therefore, I would not include detailed HTTP requests in the proposal, not even in the formalized version, since they would be (selectively and thus inadequately) repeating the LDN spec and its underlying LDP spec. I imagine that we would have several proposals for Solid that are merely constraints over LDN, so repeating LDN in every proposal would not be meaningful.
The list of required interactions is of course relevant, but that is already in the proposal.
To answer your question and to facilitate discussion, I will copy requests from https://www.w3.org/TR/ldn/#protocol below and instantiate them with the examples of the document.
Request from requesting agent to resource server
POST /inbox/ HTTP/1.1
Host: resources
Content-Type: text/turtle

@prefix acl: <http://www.w3.org/ns/auth/acl#>.
@prefix as: <https://www.w3.org/ns/activitystreams#>.
@prefix tbd: <http://example.org/to-be-determined#>.
[
  a tbd:AppendRequest;
    as:actor <https://user/#me>;
    as:target <https://resources/documents/x.acl>;
    as:object [
      a acl:Authorization;
      acl:agent <https://user/#me>;
      acl:accessTo <https://resources/documents/x>;
      acl:mode acl:Read, acl:Write;
    ];
].

Response from resource server
HTTP/1.1 201 Created
Location: https://resources/inbox/1234.ttl

Request from Processing agent to inbox of requesting agent
POST /inbox/ HTTP/1.1
Host: requesting-agent
Content-Type: text/turtle

@prefix as: <https://www.w3.org/ns/activitystreams#>.
[
  a as:Accept; # or as:Reject
    as:object <https://resources/inbox/1234.ttl>;
    as:target  <https://resources/documents/x.acl>; # or just /x
].

Response from inbox of requesting agent
HTTP/1.1 201 Created
Location: https://requesting-agent/inbox/5678.ttl

do you need authorization credentials to post to the permission request inbox?

The proposal does not constrain this. Whichever party is managing the inbox can choose so freely, and will use the existing mechanisms from the Solid specification to indicate this.

do you imagine the permission request inbox will always have the same URI?

The proposal does not constrain this. It might or might not.

what if the server determines it's not appropriate to allow this client to make a permission request?

This is handled by the LDN specification, which states at https://www.w3.org/TR/ldn/#constraints:

Senders should comply with constraint specifications or the receiver may reject their notification and return an appropriate 4xx error code.

how does the app get permission to read the notification inbox in the first place?

The app does not necessarily need that permission. Notifications of acceptance or rejection can be read by different apps; and their reception by the requesting app is optional.

do you imagine that permission requests would be explicitly for the exact permission to the exact resource(s) required, or do you imagine that the common case would be that the server would interpret the request as a representative example of the kind of access required, and let/help the approver generalize the request to what's actually needed?

The proposal does not constrain this; both are possible. However, I do not expect it to be the common case. Requesters should ask for the permissions they want.
One possible configuration could be to have an agent automatically reject certain requests. For instance, requests for multiple documents, requests by people that are not in my address book, etc. But none of these belong in the proposal, which only governs the communication, not the internal processes.

Note that at this moment, I'm mainly looking for an evaluation of the idea, that idea being "let's solve it with LDN".

i think it's obvious that such an idea could be made to work, and in fact multiple non-me people expressed a preference for this approach in #27.  therefore, more detail (particularly in the context of the use cases this panel is considering) would be helpful.
regarding "annotated HTTP exchange(s) that show exactly what you mean", i meant starting from the original request that gets denied, perhaps illustrating a likely common use case, through "then the app can try again". such an operational example would be crucial in the proposal, along with explorations of different possible (non-limiting) alternatives at different decision points. this will aid understanding of how this approach can address different use cases, be realized in implementation, and what the user experience might be like.

more detail (particularly in the context of the use cases this panel is considering) would be helpful.

Are there any from the list https://github.com/solid/app-authorization-panel/blob/master/UseCases.md in particular which you want me to step through?
It seems that most can be extrapolated from the example I've provided, but happy to help where that is not the case.

starting from the original request that gets denied

Note that this is just one of many entry points into the scenario. I will document one possible approach to that specific entry point here.
Request from requesting agent to resource server
GET /documents/x HTTP/1.1
Host: resources
Authorization: Bearer secret

Response from resource server
HTTP/1.1 403 Forbidden
Link: </inbox/>; rel="http://www.w3.org/ns/ldp#inbox"
…

perhaps illustrating a likely common use case

The above requests could be followed by the requests detailed in https://github.com/solid/app-authorization-panel/pull/28#issuecomment-526941077

through "then the app can try again"

Request from requesting agent to resource server
GET /documents/x HTTP/1.1
Host: resources
Authorization: Bearer secret

Response from resource server
If accepted, then:
HTTP/1.1 200 OK
…

Otherwise, again the 403 from above.

I like this LDN approach. Based on https://github.com/solid/app-authorization-panel/issues/27#issuecomment-527150602 I still see the example in this PR not dealing with anything specific to applications.

for all apps or for specific apps

I understand that would need to get requested from a particular RS only in situations where RS doesn't honor user preference published by the user someone else - kind of global app authorization granted by the user to application - or user doesn't have such preference published.
In that case how would the request to RS hosting specific resouce look if person already has needed access to that specific resource and would only like to restrict it to some specific application(s)? Also keeping in mind #24 how one can later revoke such authorization for some / all of authorized applications, without removing person's own access all together?

@RubenVerborgh thanks for joining our efforts here! can you add yourself as a panelist please?

I still see the example in this PR not dealing with anything specific to applications.

@elf-pavlik That would likely be an extra triple in the permissions block. However, I don't think we have such a predicate yet (that would probably be the subject of another PR); unless I'm overlooking something in https://github.com/solid/web-access-control-spec.
But imagine something like
[
  a tbd:AppendRequest;
    as:actor <https://user/#me>;
    as:target <https://resources/documents/x.acl>;
    as:object [
      a acl:Authorization;
      acl:agent <https://user/#me>;
      acl:accessTo <https://resources/documents/x>;
      acl:mode acl:Read, acl:Write;
      tbd:fromOrigin <https://app>; # <== add origins here
    ];
].

In that case how would the request to RS hosting specific resouce look if person already has needed access to that specific resource

The conditions on which a processing agent grants access are not specified here. It could look up the existing ACL, or it could not. We might want to suggest such a process (but I'd consider that a different, orthogonal PR).

and would only like to restrict it to some specific application(s)?

I don't think "restriction" is the desired interpretation. It all depends on how the ACL specifies it though. It seems that we have a dependency on WebACL actually; regardless of the chosen protocol, they probably need to figure out first how to represent app-specific permissions in an ACL document, since otherwise we can't store these.

Also keeping in mind #24 how one can later revoke such authorization for some / all of authorized applications,

There are at least two different cases: the requester asking to remove permissions, or the processing agent (or even a third party). The way ACLs are currently written, this would need a deletion request of some kind for the requester. Other scenarios could work differently.

can you add yourself as a panelist please?

@michielbdejong Thanks, I appreciate the invite. However, I'm already quite committed panel-wise, and am discussing #27/#28 in my capacity of Data Interoperability and Notifications panel member. Feel free to just consider me a regular member of the public for these now 🙂

Let's leave aside, for the moment, the fact that inboxes / LDN in Solid is currently not ready for use (there are numerous issues with it, such as - Solid servers currently do not record who created a particular notification, and there are many spoof and XSS vectors).
I think this proposal (requesting access with LDN) is trying to solve a very different problem than @zenomt's privilege request protocol, and is trying to solve it at the wrong level (at an application-specific level, rather than at the HTTP / REST level).

@dmitrizagidulin You bring that argument up about LDN/Solid not being "ready" or having "issues" every now and then, and my response is the same: in what way are those issues or shortcomings unique to LDN and virtually not any other interaction in context of Solid or say LDP for read/write?

@csarven The difference is - the Inbox is world-writeable, and the rest of the pod is not.

Correction to the above: does not have to be the inbox, hence not
globally writable.

How does one request access without having public append on the access request inbox container?

The general inbox normally needs to have public append, to be able to receive messages from anyone. More specific inboxes might be less open. For instance, a resource A could decide that only people from a certain group can request access. Or only people who are logged in.
Moreover, the URL of the request inbox to A could only be exposed to only a small group; i.e., not everyone who gets denied access is given the opportunity to request it.

@dmitrizagidulin I think it goes without saying that any authorization policy, at any time (and duration), for any reason, can proceed that expectation.
@elf-pavlik That's a fair point but it is orthogonal to whether an inbox is public append and subject to the perceived Inbox-centric issues. If it holds true for an inbox container, it holds true for any other resource.

@elf-pavlik Pardon me, I didn't actually answer your question. Ruben already answered I think. Given that if a specific actor is not mentioned in a policy and that the container is not public append, then I suppose it is not possible as there is no way to inform the target about the request through a notification. So, the system is essentially locked down and it doesn't seem like the sender can be usefully verified any way. If some message were to get through, then there'd be possibilities eg. requester also places their request in their outbox whereby the target entity (the one controlling the access request inbox container) checks to see if the information matches the notification that they've received in the inbox.

Thanks for clarifications @RubenVerborgh and @csarven

Or only people who are logged in.

I see the distinct acl:AuthenticatedAgent , @csarven can correct me but that seems like what would match this SHOULD recomendation on inbox https://www.w3.org/TR/ldn/#sender-verification

If some message were to get through, then there'd be possibilities eg. requester also places their request in their outbox whereby the target entity (the one controlling the access request inbox container) checks to see if the information matches the notification that they've received in the inbox.

If inbox uses acl:AuthenticatedAgent for append permission this doesn't seem like a necessary step.

Solid servers currently do not record who created a particular notification

This sounds like implementation specific issue, maybe also possibly something for Data Interoperability panel to address - eg. validation of something like dcterms:creator (required by shape) matching WebID of authenticated user.

It’s definitely part of data validation to be able to say that a certain
field must be the WebID of the requester. Not only for this, but also for
chat, comment, etc.
But I want to emphasize that you cannot gain access to a document by
requesting access for another WebID than your own (and there are even
legitimate use cases for this).

@RubenVerborgh I believe that we have covered this exchange in the interoperability panel as part of the Data Authorization workflows. After we've had a change to discuss, I think we could probably close this, but will keep it open until we do.

@justinwb To be clear, from the point of panel proposals, the linked Data Authorization is a proposal. It is on equal grounds with the proposal in this PR. We can't just close this issue, especially if the data interop panel didn't take it into account / acknowledge its existence prior to writing up a proposed solution in one of its own documents. Significant amount of work is put into creating issues and PRs and they ought to be processed prior to writing up alternatives on an open canvas and dismissing existing work/proposals.

@justinwb To be clear, from the point of panel proposals, the linked Data Authorization is a proposal. It is on equal grounds with the proposal in this PR. We can't just close this issue, especially if the data interop panel didn't take it into account / acknowledge its existence prior to writing up a proposed solution in one of its own documents. Significant amount of work is put into creating issues and PRs and they ought to be processed prior to writing up alternatives on an open canvas and dismissing existing work/proposals.

@csarven I don't think it's appropriate to say that work done in another panel equates to a conscious dismissal of work in another. You are leaping to a conclusion that if this was closed, it would be done under the cover of darkness, with no regard for anyone. In fact, as I told you live, I'll be discussing this with the original poster (@RubenVerborgh), who my comment was aimed at, next week. Following that discussion, we'll have a better idea of how to proceed, one of the outcomes possibly being closing this proposal if we judge the efforts to be duplicated. If someone else would like to pick it up instead - fantastic.

Fantastic. Please discuss in one of the public minuted meetings.
You'll probably recall that all of this surfaced when I tried to understand what you were trying to achieve. Which turned out to be a form of requesting access as originally proposed in https://github.com/solid/data-interoperability-panel/issues/13#issue-483343099 and then this PR.. that I've pointed you to, live. One only wonders why prior work is not acknowledged prior to making a new proposal.
Do you suppose that one of the outcomes possibly being retracting the other proposal if "we" judge the efforts to be duplicated? Probably not.

I believe that everyone is doing one's best and while we may improve our workflow, we should anticipate some glitches now and than.
I have impression that this PR now looses its focus and we drift into discussions about process. I would suggest creating issue in process repo to discuss process and here let's give @RubenVerborgh a chance to respond if he sees https://solid.github.io/data-interoperability-panel/specification/#needs-access-request having potential to supersede this PR or we should keep working on both proposals concurrently

You'll probably recall that all of this surfaced when I tried to understand what you were trying to achieve. Which turned out to be a form of requesting access as originally proposed in solid/data-interoperability-panel#13 (comment) and then this PR.. that I've pointed you to, live.

Authorization (requesting access, etc.) is an important part of interoperability - but not the only part. The aim is to solve these Problems, and path to solve them makes the approaches for data validation, organization, and authorization somewhat intertwined.

One only wonders why prior work is not acknowledged prior to making a new proposal.

Because we're all just trying to do the best job we can with the time and resources we've got - to get work done that everyone can use - and do real things with Solid. There's no ill intent involved. It's not constructive to assume otherwise first. If this is an indirect way of pointing out that the interop spec draft needs an acknowledgements section - that's a completely fair point. It hasn't been added yet - not because there's any bad intentions, but because we've been focused on the functional pieces, and the full draft isn't complete. I'm happy to prioritize it, and I will.

This is about processing proposals. Nothing to do with panels or attributions.
This PR describes a solution using existing specs to a need based on implementation experience.

Catching up!
@justinwb wrote:

I believe that we have covered this exchange in the interoperability panel as part of the Data Authorization workflows.

I had a look at 6.2.2. Another Agent Requests Access.
Initial thoughts:

I'm very surprised by the REQAPP steps. I would expect usage of an app to be optional/orthogonal. An agent acting through an app is just delegation, right?
I find the interop:receivesAccessReceipt workflow weird. Why is that not in my access request notification?
CAUTHZ monitors CONTROLLER's access inbox autonomously It does not seem to be our territory what should happen on the inside. The Solid specs govern the wires and stop at the Ethernet port on both sides.

A difficulty is of course that I can only see the outcome of discussions in the document, not the rationale.
My current feeling is "too complicated" and "overreach", but I might lack the requirements that have inspired the procedure.
But fundamentally, I don't think this even belongs in application interop (as far as the access requests are for entire documents). We should have a procedure independent of apps (such as the one I describe in this PR), and then—possibly, if needed—an extension in case app delegation takes place.
So I'm confused at the moment, and I think it will take us a couple of meetings/discussions to have a full understanding.

This implements Roadmap task https://solidos.solidcommunity.net/public/Roadmap/Tasks/state.ttl#Iss1613476102890

Suggest allow the user to give either a reason for  wanting access, or maybe a pointer to some solid thing like a task oir a message in a chat

If the request is granted, suggest the original user gets a notification that it has.

@timbl Thanks for the feedback, will incorporate!

This implements Roadmap task https://solidos.solidcommunity.net/public/Roadmap/Tasks/state.ttl#Iss1613476102890

Perhaps also good to mention that this PR addresses the needs of the proposal in https://github.com/solid/data-interoperability-panel/issues/13 regarding Resource Access.

I will bring up this PR during next interop panel meeting to clarify how Access Needs can be used in this flow.

In order to satisfy the Minimal Credentials Disclosure Use Case we will need to have access control rules that are also visible. How this can be done in a way compatible with the current WAC specs is described in Issue 189: ACLs on ACLs for WAC. Publicly readable ACLs does not actually need to give out information about who is member of a group, such as when

the agentClass is given by description as when anyone who can prove they are over 21
the group is only readable by members of the group as described in the comment on the ACLs on ACLs

In the first use case there is no way to become a member of it without already being a member (ie. being over 21 and being able to prove it). In the second use case one would indeed want a way to be notified that one is a member, or request membership. So one needs a link from the group to a notification mechanism. But where would that link be placed? It could be placed in the ACL itself. So to take that example, one could add:
<#> authorizes [
   acl:agentClass <15263626-8352-11eb-8dcd-0242ac130003#invitees>
   :mode :Read ] .
   <15263626-8352-11eb-8dcd-0242ac130003#invitees> intiationEndpoint </requests> .

It could be in the HTTP header of the non accesible group, but how could a client add that link header there? (Good suggestions welcome)


Topics format, consumer options and base test suite

Handle topics format in Producer and consumer constructors
Add known topics
Improve consumer options
Create base test suite

/describe


Issue 197 misc

Updated README with npmcdn link
Refactored helper modules

#197 and #225 related

:+1:


Will it be possible to include binary for x86_64?

对于在软路由上运行OpenWrt的人会很有用。谢谢考虑！

Please use the official version of kcptun. If you need, I will make build for x86_64 in the future version.

Thanks!


Ignore pages or domains defined by the user

Please remember to change the version number to whatever you feel more appropriate

Please merge this


show current action while publishing artifact to repository

The problem is that "published ..." message is there only when upload is done.
Uploading big artifact to repository can take significant amount of time. It can take minutes.
Or even dozens of minutes for big uploads over slow Internet uplink.
It is not obvious what happens when upload is started. The console just hangs.
More user friendly would be to show for a user what is about to happen. In this case upload of an artifact will take place.

Hi @vitaliis,
Thank you for your contribution! We really value the time you've taken to put this together.
Before we proceed with reviewing this pull request, please sign the Lightbend Contributors License Agreement:
http://www.lightbend.com/contribute/cla

I understand (and sympathise) with what you're saying, but I'd like to also point out that the downside of this is that now everything is logged twice.
maybe a good compromise is to log the start at debug level and the completion at info level? what do you think?

@dwijnand thanks for your reply.
Hm, but then it will not solve the issue I face because sbt doesn't show the debug output by default. Or I can somewhere specify settings for sbt logger for a particular class (e.g. )? Which also seems like a workaround.

I was thinking of a better and nicer solution.
First you do the print (without line break): Message.info("\tpublishing " + artifact.getName() + " to " + hidePassword(repository.standardize(dest)) + "... ");
And then on the same line add println with the word "done".
But I think it is impossible to implement.

One more reason to add the logging before publishing is the fact that in packaging it is done in the way that is proposed for publishing.
Here is an excerpt of my console output:
[info] Packaging /path/to/artifact.jar ...
[info] Done packaging.
[info] Packaging /path/to/artifact-sans-externalized.jar ...
[info] Done packaging.
... and here it hangs for 5 minutes ...
[info] 	published projectName to https://nexus.example.com/repository/snapshots/...-SNAPSHOT.zip
...
[success] Total time: 295 s, completed Apr 9, 2018 9:00:10 PM

And this is not the biggest sbt sub-project we publish.

There's ivyLoggingLevel key which is set to UpdateLogging.Default.
https://github.com/sbt/librarymanagement/blob/1.x/ivy/src/main/scala/sbt/internal/librarymanagement/IvyActions.scala#L476-L484
There's a similar issue https://github.com/sbt/sbt/pull/3122 that's actually trying to hide "Updating.." maybe the common thread here is that we need a timeout log for a long running tasks. So if the operation finishes within 30s it doesn't print anything, but if it takes longer it prints out a message or a progress bar?


Unable to find room_id, I'll try again in X minutes

Application suddenly cannot find room IDs, used to work flawlessly. It appears the site changed how it handles IDs and stream URLs.

Duplicate issue, closing.


Boolean with default value: false -> ' '

I have some booleans, not nullable, with default value: false.
The generated migration change the default to "blank": ->default('');
Greets

Thank you for reporting this. This has been fixed in v1.3.0.


Confirm button is enabled Mandatory fields not being entered

### Current Behaviour
Confirm button is enabled Mandatory fields not being entered
Screenshot

Expected Behaviour
Confirm button should not be enabled Mandatory fields not being entered
Scrrenshot

Steps To Reproduce

Login https://portal.int.catena-x.net/Registration
fill everything expect Country identifier and Observe

@manojava-gk  give me a hint if you need a partner invite then i trigger one for you or align with @gopalreddy-bmw

@MaximilianHauer pls send an invite. will connect with @gopalreddy-bmw post code investigation


I get some wierd showing of the control - how do I setup properly?

This is how the control shows in my Dynamics - how do I make it work? (probably should show empty here, but still very odd looking) - please advise :)

Hi noesgard
This happens when the translations are not included for the language
Currently this control only supports English, but I can add other languages to solve this problem
Is it Danish you are using?
Thanks in advance

Yes it is, thank you
Med venlig hilsen/Regards
Jane

On Thu, Sep 24, 2020 at 8:10 PM, Cathal Noonan<EMAIL_ADDRESS>wrote:
Hi noesgard
This happens when the translations are not included for the language
Currently this control only supports English, but I can add other languages
to solve this problem
Is it Danish you are using?
Thanks in advance
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cathalnoonan/d365-pcf-processsessions/issues/1#issuecomment-698503163,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIT6X4I57S6KTM5XJ3QB3UDSHODQBANCNFSM4RX5ICHQ
.

Hi Jane,
Danish translations have been added in version <IP_ADDRESS>
This should fix the text when you install the update

Kind regards,
Cathal

Thank you,  I will try it out 🙂
Med venlig hilsen/Regards
Jane

On Thu, Sep 24, 2020 at 9:36 PM, Cathal Noonan<EMAIL_ADDRESS>wrote:
Hi Jane,
Danish translations have been added in version <IP_ADDRESS>
https://github.com/cathalnoonan/d365-pcf-processsessions/releases/tag/v<IP_ADDRESS>
This should fix the text when you install the update
[image: image]
https://user-images.githubusercontent.com/14317886/94191326-42ae4e80-fea5-11ea-87ba-71914cffb98d.png
Kind regards,
Cathal
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cathalnoonan/d365-pcf-processsessions/issues/1#issuecomment-698546336,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIT6X4LFLT3KDNJSEAZWZH3SHONTBANCNFSM4RX5ICHQ
.

Seems like it is working, though I cannot figure out to trigger the
relevant workflows in UCI - need to figure out for sure :)
Thank you,
Jane
On Fri, Sep 25, 2020 at 6:12 AM Jane Noesgaard Larsen<EMAIL_ADDRESS>wrote:

Thank you,  I will try it out 🙂
Med venlig hilsen/Regards
Jane

On Thu, Sep 24, 2020 at 9:36 PM, Cathal Noonan<EMAIL_ADDRESS>wrote:
Hi Jane,
Danish translations have been added in version <IP_ADDRESS>
https://github.com/cathalnoonan/d365-pcf-processsessions/releases/tag/v<IP_ADDRESS>
This should fix the text when you install the update
[image: image]
https://user-images.githubusercontent.com/14317886/94191326-42ae4e80-fea5-11ea-87ba-71914cffb98d.png
Kind regards,
Cathal
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cathalnoonan/d365-pcf-processsessions/issues/1#issuecomment-698546336,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIT6X4LFLT3KDNJSEAZWZH3SHONTBANCNFSM4RX5ICHQ
.

--
[image: photo]
Jane Noesgaard Larsen
Technical Lead, Dansk Sundhedssikring
60808400 |<EMAIL_ADDRESS>http://janola.info/
Rosengården 42, 4653 Karise
http://us.linkedin.com/in/janola http://facebook.com/noesgard
http://twitter.com/noesgard


[RFC] Support for Vault authentication through EC2 metadata service

Is your feature request related to a problem? Please describe.
I'm currently running an app in a EC2 instance, where I'd like to integrate dynaconf with Vault for my configurations. However, it seems dynaconf current only supports AWS authentication through boto3 session, but not through EC2 metadata service that I'm using. It will be nice if we could add support for it.
Describe the solution you'd like
Providing optional configurations to accept EC2 roles to authenticate through EC2 metadata service.
Describe alternatives you've considered
I'm currently using HVAC client directly to walk around the issue.
Additional context
A unrelated observation is, even for boto3 session authentication, it seems to me that we need to add header_value in the call to client.auth.aws.iam_login() as well, otherwise I'm receiving error. hvac.exceptions.InvalidRequest: error validating X-Vault-AWS-IAM-Server-ID header: missing header "X-Vault-AWS-IAM-Server-ID", on post

Hi! I also need this authentication method and I could work on its implementation as it should not be a big change, just ask for header_value, region and instance_role.


refactor: Data/Bitvec change definition of ofInt to the ring homomorphism

After discussion with colleagues, we agreed that this was probably the more usual definition of ofInt. I kept the old sign-preserving version as ofIntSign.

Sorry this has been sitting here unreviewed. I can't really tell why this change is being made. Perhaps you could incorporate more of that discussion into comments?
(But please, other reviewers, don't let my ignorance get in the way if you're inclined to merge.)

Thank you @semorrison. As part of our effort to model compiler IRs as they arise in LLVM and MLIR, @bollu, @goens, and @ChrisHughes24 started to model bit-vector arithmetic. Aiming to contribute to the lean community where sensible, we want to explore in which way our requirements are compatible with mathlib. Truncating to the least significant bits (instead of preserving the sign but) is what programming languages typically do and also matches our own modeling efforts for LLVM/MLIR as well as the lean-smt people. We once again discussed this internally and feel this is a genuine correction to mathlib and the old code just required this correction.
Some CS details: in our work we obtained peephole rewrite test cases from the Alive project that are generic over the bitwidth and contain constants such as 1. Even though the value 1 is a common constant in many test cases, it is not in the set of values represented by a 1-bit vector when interpreted as 2's complement, which is just {0, -1}. Hence, we need to convert the bitwidth-generic value 1 into a 1-bit value. The new implementation that this PR introduces coincides with the conversion LLVM/MLIR chose for the very reason that it is more convenient for mathematicians, as it increases consistency across different bitwidths.

The new definition is definitely more sensible than the old one.
bors r+

Thank you @digama0


Change Payment Method Button [Android]

Acceptance Criteria

[ ] User should be able to select the Change Payment Method button on the Review Contributions screen.

Context
Currently this button is difficult to select on Android.
UI Screenshot or Wireframe (optional)

@conrad-vanl If you get a minute, can you please maybe post a GIF of how hard it is to hit that button? I had Frank test it a bit ago and he didn't really have a problem. So I'm unsure if this has to be fixed. I don't actually have an Android device and I don't experience this problem in the simulator. Thanks!


Needed to add an assumption in Crypto.AEAD.Wrappers.CMA to pass a regression test

let mac #i st #aadlen aad #txtlen plain cipher_tagged ak acc h_init =
   let tag = Buffer.sub cipher_tagged txtlen MAC.taglen in
   let h0 = get () in
   recall_aead_liveness st;
   mac_wrapper ak acc tag;
   let h1 = get () in
   assume (enc_dec_liveness st aad plain cipher_tagged h1);
   intro_mac_is_set st aad plain cipher_tagged ak acc h_init h0 h1

Added the assumption here to pass regressions in nik_default_effects

something for us to investigate ... bizarre failure

commit c545db407fa16a2a1a533717abb1438c58e793b0

This code typechecks for me without the added assume clause in master (commit 782cb8f) with Z3 4.5.0. Can someone else try and confirm there is no regression?

This regression is now fixed in hacl-star (https://github.com/mitls/hacl-star/blob/master/secure_api/aead/Crypto.AEAD.Wrappers.CMA.fst#L277).
Most code in examples/low-level is now stale. We'll remove it in favour of hacl-star (see #928).


That's noted both in the README and LICENSE files. Other than that I don't see many similarities? I am not familiar with the project but the hypervisor there seems to be used only for page access interception (EPT/NPT).


Update sys-dm-resource-governor-resource-pools-transact-sql.md

Adding the max_vcores column, which I see in this DMV on Azure SQL Managed Instance. I took the definition from the docs page for sys.dm_resource_governor_resource_pools_history_ex.
This probably only applies to Azure SQL Database and Azure SQL Managed Instance? But I am not sure, so I didn't add that.

@rwestMSFT
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

I'll look into this.

@kendra-little We did an internal PR with both your changes. They'll be live in the next hour.


Allowing version 5.0 for Symfony components

Feature Request

Q
A

New Feature
yes

RFC
no

BC Break
no

Summary
For now ODM users cannot update to a new major version of Symfony framework - v5.0, since odm's composer.json requires versions of a few symfony components, bumped to ^3.4 or ^4.1.
We should update composer.json to allow version ^5.0 for this dependencies.

Symfony 5 support was introduced in PR #2115. Thank you.


Table focus is not shown #617

remove outline: none for a11y reasons
fixes #617

I had overlooked the outline:0. There are removed now!


fix: Missing artwork ID in SWA My Collection flow

This PR resolves ONYX-1381
Description
Missing artwork ID in SWA My Collection flow.
PR Checklist

[ ] I have tested my changes on iOS and Android.
[ ] I hid my changes behind a feature flag, or they don't need one.
[ ] I have included screenshots or videos, or I have not changed the UI.
[ ] I have added tests, or my changes don't require any.
[ ] I added an app state migration, or my changes do not require one.
[ ] I have documented any follow-up work that this PR will require, or it does not require any.
[ ] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

Need help with something? Have a look at our docs, or get in touch with us.

Warnings

:warning:

❌ An error occurred while validating your changelog, please make sure you provided a valid changelog.

  Generated by :no_entry_sign: dangerJS against a1c3dda58e5def65b4682ce63a053b3e6e277608


Skip invalid releases on the vulnerability report

Closes #9913. Store the releases found on the vulnerability report, and skip those versions that are not found. If no releases were saved, then we can raise an exception.
CC @di

@di I finally succeded! Can you review this pull request?

@di I don't have access to this repository, so I need your review to apply this :)

@di as I undertsand, I sorted the pyramid.httpexceptions.HTTPBadRequest import well. Anyway, isort failed:
+ python -m isort --check gunicorn-prod.conf.py gunicorn-uploads.conf.py warehouse/ tests/
ERROR: /home/runner/work/warehouse/warehouse/warehouse/integrations/vulnerabilities/utils.py Imports are incorrectly sorted and/or formatted.
Error: Process completed with exit code 1.

Any suggestions?

You can automatically reformat linting failures with make reformat: https://warehouse.readthedocs.io/development/submitting-patches.html#code

Ok, I'll try to do this now. If I don't, I'll update this PR the next week.

The tests are failing, I just have to update them.

@di any suggestions to fix the test?

The error looks pretty straightforward:
>       assert metrics_counter == {
            ("warehouse.vulnerabilities.received", ("origin:test_report_source",)): 1,
            ("warehouse.vulnerabilities.valid", ("origin:test_report_source",)): 1,
            (
                "warehouse.vulnerabilities.error.release_not_found",
                ("origin:test_report_source",),
            ): 2,
        }
E       AssertionError: assert Counter({('wa...ource',)): 1}) == {('warehouse....source',)): 1}
E         Omitting 3 identical items, use -vv to show
E         Left contains 1 more item:
E         {('warehouse.vulnerabilities.error.unknown', ('origin:test_report_source',)): 1}
E         Use -v to get the full diff

This is emitting a new metric now, you need to add it to the test.

@di everything passed. Do I have to change something more?

@di Any update here?

I think we actually need to add HTTPBadRequest here instead, the "unknown" metric is just for when this raises an unknown exception: https://github.com/pypa/warehouse/blob/3802138b4eed60a1b8218168919e6de3792e9105/warehouse/integrations/vulnerabilities/utils.py#L139

Got it. I'll work on this.

@di I made your suggestion, and it worked fine.

@di Merge this pull request whenever you want (I can't do it by myself).

Thanks @di!


Feature/lambda python3.10

TODO

[x] Build docker image for lambda exetution

Cannot install chromium with yum: No package chromium available

Fix by specifying the platform as x86_64 for chromium to work (chromium maybe not work on arm64)

It seems better to give up on keeping it maintained to work with Lambda.


Add EnforcedStyle for Style/DoubleNegation cop

This PR adds EnforcedStyle option for Style/DoubleNegation cop, and EnforcedStyle: context by default based on #7833 survey.
# @example EnforcedStyle: context (default)
#   # good
#   def foo?
#     !!return_value
#   end
#
# @example EnforcedStyle: always
#   # bad
#   def foo?
#     !!return_value
#   end

Ruby will return the last evaluated value.
This PR only supports simple contexts, such as the end of line value of method, and when using return.
A complex contexts should also be supported, such as when branching with if and others in the future.

Before submitting the PR make sure the following are checked:

[x] Wrote good commit messages.
[x] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Run bundle exec rake default. It executes all tests and RuboCop for itself, and generates the documentation.

The cop description should also be updated, as it currently pertains only to the forbidden style.


Update readme; fix misspelled word

Fixed misspelled word, add trialing line

Some may argue about enUK vs enUS but I'll merge it 👍


FAPI2 SP ID2: Keycloak needs to return "invalid_request" or "invalid_grant" or "invalid_client" as Token Refresh response without DPOP proof

Describe the bug
Supporting a conformance test whose spacification is as follows:
Operation: Manual
Conformance Test: FAPI2-SP-ID2
Conformance Suite: release-v5.22
Keycloak: 26.0.5
Test Profile:

sender_constrain=dpop
client_auth_type=mtls
openid=plain_oauth
fapi_profile=plain_fapi
Test: fapi2-security-profile-id2-refresh-token

This test ensures that This tests obtains refresh tokens and performs various checks, including checking that the refresh token is correctly bound to the client.
According to Section 5.2 of RFC 6749, Keycloak needs to return "invalid_request" or "invalid_grant" or "invalid_client" as Token Refresh response without DPOP proof
Version
keycloak: 26.0.5, conformace-suite: release-v5.1.22
Expected behavior
invalid_request or invalid_grant or invalid_client
Actual behavior
invalid_dpop_proof
How to Reproduce?
Supporting a conformance test whose spacification is as follows:
Operation: Manual
Conformance Test: FAPI2-SP-ID2
Conformance Suite: release-v5.22
Keycloak: 26.0.5
Test Profile:

sender_constrain=dpop
client_auth_type=mtls
openid=plain_oauth
fapi_profile=plain_fapi
Test: fapi2-security-profile-id2-refresh-token

Anything else?
No response

resolved.


TLS-e Updating documentation

changes are merged into https://github.com/openstack-k8s-operators/data-plane-adoption/pull/331

closing as changes are merged into 331


Corsair DARK CORE RGB PRO SE (Additional Lighting Zones)

Please add support for the following device:
Device Name: Corsair DARK CORE RGB PRO SE
Device Website: https://www.corsair.com/us/en/Categories/Products/Gaming-Mice/Wireless-Gaming-Mice/DARK-CORE-RGB-PRO-SE-Wireless-Gaming-Mouse/p/CH-9315511-NA
The mouse logo alone works when selecting Razer/Corsair Mousepad + Mouse, but the additional lighting zones on the mouse are ignored. By default, the additional lighting zones display the colours iCUE's current profile, and Request exclusive control must be selected in Device Manager to turn them off.
Ideally, the additional lighting zones should work in conjunction with Corsair Mousepad + Mouse.

Adding support for this looks to be blocked until corsair officially adds support for it. Linked issues: https://github.com/antonpup/Aurora/issues/1465 https://github.com/antonpup/Aurora/issues/1994


SCM: Add support for Retry-After header to default ClientRetryPolicy

Fixes https://github.com/Azure/azure-sdk-for-net/issues/44222

API change check
API changes are not detected in this pull request.


Prevent action downloading files after GH checkout action

If you require the user's repos uses GH's actions/checkout prior to the cpp-lint action, then all files are already there in a folder designated by the environment variable $GITHUB_WORKSPACE.
The JSON that the bash script is getting the list of download URLs can instead be used to get the relative path of files. This way, you'd only have to prefix the filenames with $GITHUB_WORKSPACE when passing them to clang-* tools.

I'm also exploring the possibility of using GH CLI (which is available to all GH runners) instead of the json option. That would mean less dependencies to install in this action's Dockerfile. Maybe this will be a seperate issue when I understand it better.
As for installing clang-* in this action's Dockerfile, you could switch to a docker container that already has them installed... again that would be yet another issue.

In my daily work, I used Bitubkcet, I want to bring this linter action to Bitbucket, using shell script may be easier to integrate with my internal environment as I don't need to install GH CLI.
But here in GitHub, using the environment variable $GITHUB_WORKSPACE and GH CLI is a great idea.
Btw, there is a docker image clang-tool I created several days ago include clang-format and clang-tidy maybe useful.

In my daily work, I used Bitubkcet, I want to bring this linter action to Bitbucket, using shell script may be easier to integrate with my internal environment as I don't need to install GH CLI

Interesting! I initially wanted to get involved as a way to learn bash scripting better. I'm now learning more about the git's REST API (which is what the JSON comes from). Maybe we can check for the file's existence before downloading it. I have another idea of letting clang-tidy look for a custom defined .clang-tidy file instead of hard-coded checks. However, the entire repo needs to be present for clang-tidy to find a clang-tidy config file (and a compile_commands.json referred to as "compilation database" in clang-tidy's output).

Btw, there is a docker image clang-tool I created several days ago include clang-format and clang-tidy maybe useful.

Cool! Could it be tailored to have all available versions of clang-*? That way we can let users specify what version (via another new input  arg) to use; this is a common input option for most other clang-tidy actions.
brendan@B-DESKTOP:/mnt/c/Users/ytreh/Documents/GitHub/cpp-linter-action$ apt list clang-tidy-*
Listing... Done
clang-tidy-10/focal,now 1:10.0.0-4ubuntu1 amd64 [installed,automatic]
clang-tidy-11/focal-updates 1:11.0.0-2~ubuntu20.04.1 amd64
clang-tidy-12/focal-updates 1:12.0.0-3ubuntu1~20.04.3 amd64
clang-tidy-6.0/focal 1:6.0.1-14 amd64
clang-tidy-7/focal 1:7.0.1-12 amd64
clang-tidy-8/focal 1:8.0.1-9 amd64
clang-tidy-9/focal 1:9.0.1-12 amd64

brendan@B-DESKTOP:/mnt/c/Users/ytreh/Documents/GitHub/cpp-linter-action$ apt list clang-format-*
Listing... Done
clang-format-10/focal 1:10.0.0-4ubuntu1 amd64
clang-format-11/focal-updates 1:11.0.0-2~ubuntu20.04.1 amd64
clang-format-12/focal-updates 1:12.0.0-3ubuntu1~20.04.3 amd64
clang-format-6.0/focal 1:6.0.1-14 amd64
clang-format-7/focal 1:7.0.1-12 amd64
clang-format-8/focal 1:8.0.1-9 amd64
clang-format-9/focal 1:9.0.1-12 amd64

as you can see, the versions available are aligned.

@shenxianpeng I switched to your docker image and runtime has decreased by 30+ seconds!!!

@shenxianpeng I switched to your docker image and runtime has decreased by 30+ seconds!!!

Wow, this is great! I think it can have all available versions of clang-. I'm just not so familiar with clang-, from your experience, will users care about the version?
Support custom defines .clang-tidy file makes a lot of sense to users.

Judging from the differences in the clang docs, compatibility between versions of clang are sketchy. From my experience, its better to have the action run with the same version of clang that you're using locally. Linux apt will default to installing v10, but latest stable release is v12 on GH (which is where I get the clang installer for Windows). Yes, I think people will care.

Because clang-tool image includes clang-format and clang-tidy, so I guess rename the docker image from xianpengshen/clang-tool to xianpengshen/clang-tools may be more suitable. I'll do this change later.

@shenxianpeng I can't dynamically use tags in the Dockerfile's FROM option. So, specifying a version has to come at runtime. Meaning all versions of available clang-tools need to be installed in 1 image. Then I can execute the user-specified version like
clang-tidy-"$CLANG_VERSION" ... $SOURCE_FILE

While looking into solving #8 , I've also added this feature in the process. I'll wait till #10 is merged to rebase then open another PR...
Note I haven't started using GH CLI at all; I'm purely using GH's REST API only (hopefully that's still somewhat compatible with a REST API from Bitbucket).


Publish flag, class images, and tonal attributes of classes of non-standard countries in DITA/json document

Publish flag, class images, and tonal attributes of classes of non-standard countries in DITA/json document

Taken care as part of #107


[10.x] Fixes Str::password() does not always generate password with numbers

fixes #48677
If we rely on Str::password() to generate a secure password and use the same logic for password validation, the provided password will fail if it's expected to contain symbols but doesn't have one because Str::password() MAY contain symbol instead of MUST contain symbol.
The expected behavior should be Str::password(letters: true, numbers: true) should indicate that the password MUST contain letters and numbers.

I wish I'd seen this before it was merged, there are a couple of issues I can see with it:
Less Secure: The shuffle() function is not cryptographically secure and using it within a password generation algorithm means the output should not be considered cryptographically secure. Since the whole point of this function is to generate cryptographically secure passwords, this is a significant issue.
The shuffle() needs to be replaced with a secure algorithm.
On a side note, replacing those helper methods with proper cryptographically secure implementations is on my list to do before v11. You can see my last attempt that I got in just too late for v10 at: https://github.com/laravel/framework/pull/46105
Length Bug: It cannot generate a password shorter than 3 characters:
Str::password(1) => "&1C"
Str::password(2) => ";B9"
Str::password(3) => "9l."
Str::password(4) => "Io5\"
Str::password(5) => "*al74"

Less Entropy: This is a tricky one, but you've lowered the entropy of this function.
Using the calculator at https://www.omnicalculator.com/statistics/password-combination to check possible combinations for 8 character passwords. There are a total of 88 characters, based on 52 letters, 10 numbers, and 26 symbols.
With the original algorithm, it tells us there are 3,378,005,142,470,400 possible passwords.
The new algorithm, which requires a letter, number, and symbol, there are only 1,739,426,494,740,480 possible passwords.
Side by side:
3,378,005,142,470,400 (original)
1,739,426,494,740,480 (new)

The change is incredibly significant, as you're effectively limiting the full 88 character set to 5 of the characters, and the remaining 3 have a much smaller set - especially the numbers.
So based on the raw numbers, it's far less secure. However, there is definitely the argument to be made that if the generated password is missing a number or symbol, it could be easier to crack and implies a simpler password scheme in general. Plus, there are the issues you've found with not having the required characters - which can cause users to pick rubbish passwords instead.
So I think it's ok like this, but I wanted to raise it as something to be aware of. Ultimately you're still generating a very random password, which is going to be better than anything a human would produce.
Oh and one more thing I noticed: it doesn't enforce uppercase, so although you'll hit the required number and special character, you may find passwords missing uppercase letters. Not sure if this is an issue or not though - it depends on the problem you're trying to solve. I just mention it because uppercase is usually separated out from lower as a toggle too.

The real, underlying issue is that "can contain" and "must contain" should be separately configurable.
But if you want to limit the amount of parameters to keep the helper simple, I think the configurability should be reverted to "can contain".

The real, underlying issue is that "can contain" and "must contain" should be separately configurable.
But if you want to limit the amount of parameters to keep the helper simple, I think the configurability should be reverted to "can contain".

When I worked on something similar a few months ago I suggested an $enforce param to cover that and don't change the actual behavior.
https://github.com/laravel/framework/pull/48142

Does providing a seed to the shuffle function makes it more secure ?

My understanding is that shuffle() uses the same predictable randomisation that rand(), etc, use. Therefore, even if you're starting with a proper random seed, the order of the shuffle may expose the seed and allow the complete order to be predicted.
So I'd say it's still not secure.

Using the calculator at https://www.omnicalculator.com/statistics/password-combination to check possible combinations for 8 character passwords. There are a total of 88 characters, based on 52 letters, 10 numbers, and 26 symbols.
With the original algorithm, it tells us there are 3,378,005,142,470,400 possible passwords. The new algorithm, which requires a letter, number, and symbol, there are only 1,739,426,494,740,480 possible passwords.

You're right of course, but changing the password length with just a single character has waaaay more impact. Input a range of lengths in the linked calculator and that becomes very obvious.
When generating random passwords and using password managers, we shouldn't talk about length=8 anymore.
You already know this, and the default length already is 32 chars, but I think it needs repeating the length=8 isn't best practice nowadays.

My understanding is that shuffle() uses the same predictable randomisation that rand(), etc, use. Therefore, even if you're starting with a proper random seed, the order of the shuffle may expose the seed and allow the complete order to be predicted.
So I'd say it's still not secure.

The master branch requires PHP 8.2 and could switch to Random\Randomizer::shuffleArray()
The introduction of random_int() and random_bytes() was already great for removing the old-school, tainted, rand() family of functions. So maybe it's time to plan to let go of shuffle() too. Or at least in secure contexts, but I'm not sure if the micro-optimization is worth it anymore.


Keyboard shortcuts for large and huge text

Tomboy doesn't have shortcuts for large and huge text, but this is something I would use in addition to those added by #56.
Proposed:
Ctrl  1: Huge (like H1, or # in markdown)
Ctrl  2: Large (like H2, or ## in markdown)
This would leave small text looking lonely and odd without a shortcut.
Also interesting:
Ctrl +: Increment font size (from normal to large, large to huge, etc)
Ctrl -: Decrement font size (normal to small, etc)

I really don't know about this.
Firstly, the Ctrl+ is a problem as most laptops don't have a dedicated + key. Its a shift key. I considered responding to Ctrl =  but what if someone has a different keyboard layout ?
Next, Ctrl 1 for huge based on html H1 is a bit of a long bow IMHO, we'd need to map normal to 3 and small to 4.  And not too many people know their HTML anyway.  Sigh ....
So, as an experiment, I have mapped Ctrl 1 to small, Ctrl 2 to normal, Ctrl 3 to Large and Ctrl 4 to huge, at least its a normal progression. I think. On the Mac, its Command....
I have NOT put that mapping in the menus so its officially not official. And might change....
I'd like a better answer.

We could just add a "shift" key to the combo.
So,
Ctrl-shift-1: Huge
Ctrl-shift-2: Large
Also interesting:
Ctrl-shift- +: Increment font size (from normal to large, large to huge, etc)
Ctrl-shift- -: Decrement font size (normal to small, etc)
Just a thought. I wouldn't mind the extra key since it's easy enough to do and it's not something that need to be done as often a say bolds or bullets

OK, I have been using Ben's initial suggestion of Ctrl-1..4 for a couple of weeks now and I have found it pretty nice to use. Its the same on all platforms (thats nice too).
So, I think I'm going to call it !
Ctrl-1 - small
Ctrl-2 - normal
Ctrl-3 - large
Ctrl-4 - huge
Thanks for input folks !
Davo


cxxrtl.h: Fix incorrect CarryOut in alu when Bits % 32 != 0 && Invert == False

This PR fixes the alu function in cxxrtl.h to return correct CarryOut when Bits % 32 != 0 && Invert == False, by updating carry after the last chunk is masked.
(CarryOut is currently only used by ucmp(), which always sets Invert = True, so this bug has not been triggered)

Thanks!


Using dead keys as shortcut keys

Which operating system does the issue occur on?
Linux
If on linux, are you using X11 or Wayland?
 I'm using setxkbmap -layout se,us which means that the plus sign + on the american layout is a dead key in the Swedish layout. This in turn means that the key cannot be used as a shortcut key even if I'm currently using the US layout.


[Update] Change lang from en to en-US

Change the lang attribute to the english version from 'en' to 'en-US'.

ok done !

May cause some problems with the actual code, will wait for the new version.


Implement Separators and MOI.UserCutCallback

There is still a problem with the tests: If there are two optimal solutions and one of them is cutted in a separator (or the cutcallback), SCIP still returns that solution, if it would have returned that solution in the first place. See also #156.

At a first glance, the code looks good to me.
I have two questions for understanding:

There can only be at most one cut callback for any MOI.Optimizer right?
When users MOI.set the callback, they can't set any of the keyword arguments (priority, frequency, etc.) but will use defaults, right?
If the priority is fixed for MOI users, should it be set higher that 0, so that the user's callback is called before SCIP's generic separators? Not sure what the expectation is in other solvers.

For the tests, is the issue that the solution is not unique and you don't know which one to cut off?
Could this not be helped by changing the coefficients and make it non-symmetric (e.g. 2x + 3y ≤ 4)?
Would it also make sense to add a valid cut that would separate the LP relaxation (e.g. x + y ≤ 1) and disable all of SCIP's separation and branch-and-bound, to see whether it would then be solved correctly?
From my point of view, it's also OK to add an invalid cut (which is too strong) just for the tests. So, you could add x + y ≤ 0 and verify that the returned solution is worse than the actual optimum. This would only work if the priority of the separator is high enough, I guess, and SCIP doesn't find a solution in any other way :worried:

There can only be at most one cut callback for any MOI.Optimizer right?

Right. At least as far as I know.

When users MOI.set the callback, they can't set any of the keyword arguments (priority, frequency, etc.) but will use defaults, right?

Right.

If the priority is fixed for MOI users, should it be set higher that 0, so that the user's callback is called before SCIP's generic separators? Not sure what the expectation is in other solvers.

I'm not sure either. But I don't think there's a problem with raising the priority. Would make more sense to me.
Maybe I'll give some more details about the problem, that I have with the tests. There are two tests, using the same MIP:
max x + y
s.t. x + y <= 1.5
x,y in {0,1}

This problem has the two different solutions (x,y)=(1,0) and (x,y)=(0,1). One of the tests cuts one of these solutions (with x <= 0), the other cuts the other solution (y <= 0). Still the solution, that is found by SCIP is (x,y)=(1,0) for both tests. Also the debug output shows, that no cuts have been added and that the number of rows stays at 1. Maybe there is a parameter, that prohibits the cut to enter the LP, such as separating/minefficacy or separating/minortho?

For the tests, is the issue that the solution is not unique and you don't know which one to cut off?

That the solution is not unique is on purpose to not violate SCIP's expectations to the added cut as we would have undefined behavior otherwise.

Would it also make sense to add a valid cut that would separate the LP relaxation (e.g. x + y ≤ 1) and disable all of SCIP's separation and branch-and-bound, to see whether it would then be solved correctly?

Do you know, which parameters I have to set to achieve that? I only found the list of all SCIP parameters, but there are quite some...

From my point of view, it's also OK to add an invalid cut (which is too strong) just for the tests. So, you could add x + y ≤ 0 and verify that the returned solution is worse than the actual optimum. This would only work if the priority of the separator is high enough, I guess, and SCIP doesn't find a solution in any other way

How to make sure, that SCIP doesn't find a solution in any other way?

Maybe there is a parameter, that prohibits the cut to enter the LP, such as separating/minefficacy or separating/minortho?

That's possible. Another explanation is that a solution was found by SCIP before the LP is solved or the separators are called (e.g. by a simple heuristic).

Do you know, which parameters I have to set to achieve that?

I don't know for sure, but a good strategy is to set an emphasis and then look at what parameters SCIP sets as a result. For example:
SCIP> set sepa emph off
separating/disjunctive/freq = -1
separating/impliedbounds/freq = -1
separating/gomory/freq = -1
separating/strongcg/freq = -1
[...]

Similarly for heuristics. Another one would be limits/nodes = 0.

I additionally set the parameters from set sepa emph off and set heuristics emph off and now the tests work! I also added a test with an invalid cut.
I'll add some comments and from my point of view it is ready to be reviewed then.

It seems that the tests still fail (consistently?) on CI. Do they all pass for you locally now? I can reproduce the failure on my system:
AddSingleCut (cut off another optimal solution): Test Failed at /home/rs/.julia/dev/SCIP/test/sepa.jl:126
  Expression: ≈(MOI.get(optimizer, MOI.ObjectiveValue()), 1.0, atol = atol, rtol = rtol)
   Evaluated: 0.0 ≈ 1.0 (atol=1.0e-6, rtol=1.0e-6)
Stacktrace:
 [1] top-level scope at /home/rs/.julia/dev/SCIP/test/sepa.jl:126
 [2] top-level scope at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/Test/src/Test.jl:1115
 [3] top-level scope at /home/rs/.julia/dev/SCIP/test/sepa.jl:90
AddSingleCut (cut off another optimal solution): Test Failed at /home/rs/.julia/dev/SCIP/test/sepa.jl:127
  Expression: ≈(MOI.get(optimizer, MOI.VariablePrimal(), x), 1.0, atol = atol, rtol = rtol)
   Evaluated: 0.0 ≈ 1.0 (atol=1.0e-6, rtol=1.0e-6)
Stacktrace:
 [1] top-level scope at /home/rs/.julia/dev/SCIP/test/sepa.jl:127
 [2] top-level scope at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/Test/src/Test.jl:1115
 [3] top-level scope at /home/rs/.julia/dev/SCIP/test/sepa.jl:90
Test Summary:                                      | Pass  Fail  Total
separators                                         |   14     2     16
  dummy sepa (no separation)                       |    1            1
  AddSingleCut sepa (cut off one optimal solution) |    5            5
  AddSingleCut (cut off another optimal solution)  |    3     2      5
  AddSingleCut (too strong cut)                    |    5            5

I think that symmetry detection and cons_orbitope is to blame for this behavior.
Could you add the following parameter as well?
+    setter("misc/usesymmetry", 0)

I just added that parameter as well.

All four jobs on CI fail now with the following message:
Got exception outside of a @test
LoadError: ArgumentError: Package JuMP not found in current path:
- Run `import Pkg; Pkg.add("JuMP")` to install the JuMP package.

How to resolve that, i.e. how should JuMP be installed on CI? Alternatively I can also rewrite the tests not to use JuMP. However I would prefer the first solution.

Thanks for your efforts!
I assume that you'd rather use this functionality soon, so I'll try and make a new relese now.
Note that it usually takes a few days for these to be registered, because they need to be approved manually.

I assume that you'd rather use this functionality soon, so I'll try and make a new relese now.

Thank you  :)

It seems the release has not been approved: JuliaRegistries SCIP v0.9.7

It seems the release has not been approved: JuliaRegistries SCIP v0.9.7

Yeah, it still needed manual approval, because the ] build SCIP does not work in CI.
This will all go smoother once we get the SCIP_jll running.

Yeah, it still needed manual approval, because the ] build SCIP does not work in CI.
This will all go smoother once we get the SCIP_jll running.

The latter, see also General.

The latter, see also General.

So someone of the Julia Team will take care of it. Just to have a rough estimate: How long did it take for past pull requests to be approved?

So someone of the Julia Team will take care of it. Just to have a rough estimate: How long did it take for past pull requests to be approved?

I think it was usually merged after 2-3 days, so I don't know why it timed out now.

I think it was usually merged after 2-3 days, so I don't know why it timed out now.


Redo Accounting for Rates and Invoices

Rate table accounts need to require CHART, ACCOUNT, and OBJECT CODE, with an optional SUBACCT.  We should use the regular FAU format [insert format here].  NOTE that in a few years the format will be different because of aggie enterprise, so we should remain flexible in the account format.
INVOICE CHANGES:
Invoice charges need to be split based on FAU/Account.  So the process should be similar to this:

[ ] Group all expenses based on FAU, so different account/object/subacct would cause different groups. Since FAU will be just the account field, this shouldn't be too hard.
[ ] For each group of non-passthrough expenses, distribute expenses as before based on account split using object code 3900
[ ] For each group of IsPassthrough charges, distribute object code 3918
[x] Add IsPassThrough to the expense table as well (we save the accounted used there to flatten it out) -JS
Add the object code info to config settings since they'll likely change. pr #585

May need clarification:

Project account require Object code?
Rate object code is only determined by if it is a passthrough account? Or does each rate account also require a non-config object code?
If a passthrough account is detected, this will require a percentage split (TBD). So each isPassthrough account will need bioth debit and credit splits? (Credit is where the money is going to, debit is from the PI's account(s) )


feature(rules): add user name and groups to rules context

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 70.08%. Comparing base (80851c6) to head (3097e80).

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #489      +/-   ##
==========================================
+ Coverage   68.48%   70.08%   +1.60%
==========================================
  Files          48       48
  Lines        3011     3015       +4
  Branches      648      648
==========================================
+ Hits         2062     2113      +51
+ Misses        769      718      -51
- Partials      180      184       +4

Flag
Coverage Δ

unittests
69.45% <100.00%> (+1.50%)
:arrow_up:

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

Files
Coverage Δ

...loyment_toolbelt/jobs/job_profiles_synchronizer.py
50.79% <100.00%> (ø)

..._deployment_toolbelt/utils/computer_environment.py
100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes


[Mechanic] Shielding

This might be something that a few others are thinking, but can there be a temporary health pool that damage is drawn from, this health pool cannot regenerate and once it's gone it is removed from your max health permanently, this shielding could stack infinitely with itself.
This could be used on bosses that have no actual health but instead have shield that is added to as the game goes by making the boss harder to do late game, but can be worked at early game to prevent it from getting so strong late game it is impossible.

what about overhealing by lifesteal? like upgrade of satanic could allow over heal by lifesteal what would create such of shield. ofc with top cap (and could also decaying)

@Wujekklawy That could be another application for this, the point of it is to create a kind of temporary health bar to be used in place of the normal one for a short time. Think of it like the Lucio shield in Overwatch.


Updating status of a couple of projects

This PR updates following:

CVS book
Vision framework tutorial

Hey @AnastasiaGolts—congrats on submitting a PR at the end of the git course. I'm really glad that you enjoyed the course and hope that you learnt a lot in doing it.
If you weren't already using git for your code, hopefully this has inspired you to do so. I hope that you enjoy the "Mastering Git" video course as well—you'll soon be able to get git to bend to your will :)
You can now wear this #GitWarrior badge with pride—and Tweet your historic victory!

sam


feat: incentive program queries and messages

Contents:

queries which fetch incentive programs
governance messages that set them.
governance message to set params

Also:

removes pagination from completed incentive programs query for now - doesn't seem necessary
adds function Iterate to util/store (we can switch over leverage module to use this function in a future PR, as that's where I got it from but this PR is scoped to incentive module only)

Just keep the tests in mind, we are trying to get code coverage up. Half of code isn't covered. Just keep that in mind.

Half of the code in the whole repository!


Don't give up on empty files

Currently: Could not mmap file: Invalid argument

Fixed in https://github.com/jyn514/crappy-server/commit/617cfb95c03be06cf243e4b9d1517c81d7983870


Changed double quote to single quote replacement with logic that changes

Small tweak to change where double quotes in an object were replaced with single quotes. Now a double quote is instead replaced with 2 double quotes to escape them. To go with this, the outer wrapping double quotes are removed. This seems to make csv's behave properly across excel, libre office spreadsheet etc.

@libpitt thanks for the review. We should be good with Derek's tweaks. I understand your comment on the [] format, it doesn't really matter in the CSV, we just need to display multiple {} items without the outer []. The CSV consumers will need to parse that according their needs.