[FR]: database file location separated from rows files

Contact Details
<EMAIL_ADDRESS>Present your request
Currently we have the current folder for the database source (which I've been using mostly). But the main drawback of this approach is the database file being mixed up with all the database rows in this folder. The default name Untitled database makes things even worse, putting the db file at the end of folder's file list. If we have so many rows and want to bulk delete them, using for example a file manager, we can easily make a mistake and delete the database file itself.
I'd like to see an option (global or per database) to put the database file outside and at the same level of the rows folder with the same folder name. Or even anywhere I want to, if it had an option to specify which are the rows folder. The latest could be even better because I could separate all database files from their rows folders.
Taking the opportunity, for the current folder option, it would be better if the database file name had by default a more meaningful name that bring it to the top of the file list; example: _db_ or _{folder name}_.
For which platform do you request this request??
Cross

Hi @www-wagner,
If you need to use multiple ddbb inside the same folder you can use   dataview query targeting that folder with a note outside or simply filter the other ones with
database-plugin is empty

Hi @RafaelGB ,
I knew I could use dataview query to browse another folder for database rows but I didn't know how excluding the database in the folder, thanks for the help!
My above suggestion is for a more user friendly interface. Not all users know how to use dataview queries.

We can include links to dataview documentation and community snippets. Improving the user interface on dataview supposes creating a constructor of queries and, in my opinion, it's beyond the scope of this plugin


Fails when used with ES6.I have gulp as task runner.It fails while i run gulp with "Unexpected token error";

I'm having the same issue.  Let me know if you figure anything out.  Really looking forward to using this component.  Thanks!

Btw anil26, i just switched over to webpack instead.  Since it's becoming more of a standard anyway.  After doing that this library ended up working.

If anyone can debug and fix this, that would be great. I have never used Gulp myself and don't have resources (time) to support and debug it.
Until then, the solution is to migrate to webpack :).

Any solution without use webpack?


Improve Accessibility score (at LightHouse)

I have to investigate how to choose better colors from the color palette to improve accessibility score of the website.

The present blue color theme does pass the lighthouse accessibility test but most of the theme colors does not.

Maybe this one is related to #51 ?


sort env vars alphabetically and warn on setting new ones

LGTM.
As a side note, a lot of times I wish Golang had the equivalent of Python's sorted method.

I couldn't agree more.


E & G# & B

Hi!
When I'm playing, for example, E & G & B - it's working just fine.
Or E & Gb & B.
But, when I'm trying to play E & G# & B - at least one of notes doesn't press.
Firefox 36.0 for linux.
Tried with chromium browser - 3d-piano doesn't work at all.

Hi Tirnak
Thanks for your feedback. It is an old project so I am not planning to fix it, but it would be great if you find a way around it :)


fix cookie store initialization issue

@aleffert  please review
cookie store needs to be initialized first

:+1:


Refactor PersonBuilder constructor to use TypicalPersons as argument #855

Fixes #855

Ready for review

Hi @LiXiaoooowei, thanks for your PR!
Good job on your first PR so far. However, some changes will be needed in order for us to continue with this PR:
First commit: Refactor code to initiate PersonBuilder by accepting Person instances…

Commit message subject is too long. It should not be longer than 72 characters, otherwise GitHub will break the message and we will see …

See the Commit message convention for more details regarding commit message subject.
You will have to be creative here since the issue title is quite long, but it can certainly be summarized without using a lot of words.

Commit message body is empty. The purpose of the message body is to explain the rationale for the changes made, so that future developers will be able to look back at your commits to get a better understanding of what is going on.

See the Commit message convention for more details on how to write the commit message body.
The rationale of the changes can be found in the original post of #855.
Do take note that the body should be wrapped.

Second commit: Remove unused imports and fix style issue

Squash this commit with the first commit. We should squash this commit because it is relevant to the first commit. The practices of se-edu differs from common practices of other OSS projects. We practice squashing in order to keep the history clean, and each commit by itself should have their test passing.

See the Commit organization convention for more details about the need to squash.
There should be a few tutorials online on what is squashing and how to do the squashing. For an authoritative source, see this tutorial, which is definitely not written by a rather familiar person 🤔.

Submitting code for reviews

We use a commit summary tool, known as CanIHasReview, to submit code for reviews, instead of posting a "Ready for Review" comment.

See the Workflow convention to see how you can submit your PR for further review.

Others

Branch name is too long. For long issues, the convention is to use 3-5 keywords. E.g.: 889-personbuilder-use-typicalpersons (still a bit long than desired, but it fits the general guidelines of 3-5 keywords).

Note: I don't think we can rename a branch without having to re-open the PR, so for now, we can live with this branch name. Just take note of this for subsequent PRs.

Btw, don't need to start the branch name with #, just the issue number will do (i.e. 889-personbuilder-use-typicalpersons, not #889-personbuilder-use-typicalpersons).

Do let me know if you have any more questions. Thanks!

Good attempt in writing the commit message. :+1:
Commit message paragraphs need to follow a certain style and structure. Do take a look at the 'stylistic recommendations' portion of the Commit message convention to find out more. Some examples of writing commit messages are also given, you can refer to those to further understand how a commit message is structured.
For your convenience, I have also given my suggested changes on how you can improve the commit message. Do take note that my English is not necessary the best, so if there's any errors, feel free to change as necessary:

Initiate PersonBuilder with TypicalPerson instance when necessary

I just realize that the original issue's title doesn't really make sense, so I have taken the liberty to come up with a better subject title that suits the context of the commit.
The words "when necessary" is not needed, it is implied.

Suggested change for the title:
Tests: Shorten calls to PersonBuilder

To create a Person for testing, constants from CommandTestUtil is used
with default PersonBuilder constructor(eg. toAdd = new PersonBUilder()
.withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY).withAddress(VALID
_ADDRESS_BOB).build()).

There is a typo in the example (new PersonBUilder()).
The examples neglected the tags field (withTags()), so they are actually showing the wrong way of how to refactor the code.
While the body text must be wrapped at 72 characters, one type of text can violate this rule - stuff that gets very ugly when wrapped, such as codes and shell commands.

Suggested change for this paragraph (this is the paragraph for {current situation}):
When creating a Person for testing, some tests specify almost all of
the fields of an existing TypicalPerson, with only a slight variation
in one or two fields. For example, the code below builds on top of
TypicalPersons#AMY with only changes to address and tags:

    toAdd = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)
            .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_BOB).withTags().build();

This is long-winded and restricted to only AMY and BOB.

We can use a more concise and extensible form(eg. toAdd = new
PersonBuilder(AMY).withAddress(VALID_ADDRESS_BOB).

Don't think the mentioning of AMY and BOB outside the code example would be necessary. This will be apparent in the commit diff.
These two paragraphs should be merged together because they both belong to {why it needs to change}.

Suggested change for this paragraph (this is the paragraph for {why it needs to change}):
This is long-winded and unnecessary, as PersonBuilder allows us to start
from a ready-made Person, and modify as necessary. For example, the code
above can be refactored to:

    toAdd = new PersonBuilder(AMY).withAddress(VALID_ADDRESS_BOB).withTags().build();

The paragraph for {what is being done about it} is missing.

Suggested addition to the commit message (this is the paragraph for {what is being done about it}):
Let's refactor the calls to PersonBuilder to make them more concise.

With everything combined, it should be like this:
Tests: Shorten calls to PersonBuilder

When creating a Person for testing, some tests specify almost all of
the fields of an existing TypicalPerson, with only a slight variation
in one or two fields. For example, the code below builds on top of
TypicalPersons#AMY with only changes to address and tags:

    toAdd = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)
            .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_BOB).withTags().build();

This is long-winded and unnecessary, as PersonBuilder allows us to start
from a ready-made Person, and modify as necessary. For example, the code
above can be refactored to:

    toAdd = new PersonBuilder(AMY).withAddress(VALID_ADDRESS_BOB).withTags().build();

Let's refactor the calls to PersonBuilder to make them more concise.

@LiXiaoooowei nice work. You can progress to harder issues for your next PR.

@yamgent Noted. Thank you so much!


Feature/deploy docs

hello:
thanks for the great package.  i noticed there could be some possible improvements in the package.json.  some of these changes are opinionated propositions, but have shown to be super helpful in a series of packages I've published and worked with in ampersand-js.  hopefully you'll find these useful.
problem statements

jsdoc & rethinkdbdash dependencies are missing
docs aren't persisted to the web on-module publish (user's have to download the repo and open the html)
linting, testing, and package-validation could benefit from being run on every commit (quality control!)
dependencies are out of date

solution

add missing deps
auto-generate and publish docs to the web on-publish

add postpublish script that deploys docs!
ref: http://cdaringe.github.io/reconsider/index.html

add git-validate to support pre-commit tasks (re: lint/test/validate oncommit)
update dependencies
add git friendly auto-versioning+publish scripts

e.g. npm run publish-patch would bump the patch version, push a tagged release to github, and publish to npm.

Thank you very much for your contribution, much appreciated.
Also, these npm scripts look highly useful, I'll certainly make use of them (or similar ones) in other projects.


postgresql: 10.20 -> 10.21, 11.15 -> 11.16, 12.10 -> 12.11, 13.6 -> 13.7, 14.2 -> 14.3

Description of changes

https://www.postgresql.org/about/news/postgresql-143-137-1211-1116-and-1021-released-2449/
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg eval


rescueTokens completes without error when given a non-existant poll's ID

rescueTokens does not throw an EVM error when invoked with a pollID for a poll that doesn't exist.
    it('should throw an error when attempting to rescue tokens from a non-existant poll', async () => {
      const plcr = await utils.getPLCRInstance();
      const options = defaultOptions();
      options.actor = bob;

      try {
        await utils.as(bob, plcr.rescueTokens, '666');
        assert(false, 'should not have been able to call rescueTokens for a non-existant poll');
      } catch (err) {
        assert(utils.isEVMException(err), err.toString());
      }
    });

#7 is more precise


Fix updating of table when filtering backend data

What kind of change does this PR introduce? (check one with "x")

[ x ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Other... Please describe:

What is the current behavior? (You can also link to an open issue here)
When filtering is done on a table backed by backend data (externalPaging) "rows" is bound first, recalculating. "count" is bound second resulting in a wrong "rowCount".
What is the new behavior?
When "count" is changed via binding a "this.recalculate();" is issued fixing the calculated "rowCount".
Does this PR introduce a breaking change? (check one with "x")

[ ] Yes
[ x ] No

Other information:
Fixes:  When filtering is done on a table backed by backend data (externalPaging) "rows" is bound first, recalculating. "count" is bound second resulting in a wrong "rowCount".

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.

Thanks for your contribution!


fix: add words including numbers to candidates

If a word in a dictionary has any number, let's say "cat2"(🐈) or "100"(💯), it doesn't appear in candidates, and then the word cannot be converted, no matter what word you type.
So I fixed it.

PRありがとうございます。テストが落ちるのはこちらの問題なので一旦直します


Considering moving test logic into new package: aqueduct_test

Folks using aqueduct pull in all of package:test dependencies, even if they don't test.
Here's the list of things that disappear when removing test as a "regular" dependency
- barback 0.15.2+14
- boolean_selector 1.0.2
- http_multi_server 2.0.4
- io 0.3.2+1
- js 0.6.1
- mime 0.9.6
- multi_server_socket 1.0.1
- node_preamble 1.4.0
- package_resolver 1.0.2
- pool 1.3.4
- shelf 0.7.2
- shelf_packages_handler 1.0.3
- shelf_static 0.2.7
- shelf_web_socket 0.2.2
- source_map_stack_trace 1.1.4
- source_maps 0.10.4
- stream_channel 1.6.3
- term_glyph 1.0.0
- test 0.12.31
- web_socket_channel 1.0.7

https://github.com/dart-lang/mono_repo is your friend here!

Inspiration
https://github.com/dart-lang/angular/tree/master/angular_test
https://github.com/dart-lang/build/tree/master/build_test

This is definitely of interest. I felt real gross putting package:test in the standard dependencies just to support the test library. My fear was that people wouldn't test because they wouldn't find the test package. In hindsight, since everyone is going to create a project from the CLI anyway, the default project can include it as a dev dependency.

the default project can include it as a dev dependency.

Exactly!

Completed and will push to pub once all test suites can be added back in for dart2.

Sweet!
On Sun, Jun 10, 2018, 12:42 Joe Conway<EMAIL_ADDRESS>wrote:

Completed and will push to pub once all test suites can be added back in
for dart2.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/stablekernel/aqueduct/issues/391#issuecomment-396076078,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABCirUjYUn_7U7hLMyWvPN89-X7xvALks5t7XaegaJpZM4ST_8A
.


Force SAML Login

After enabling force saml login feature, actual main URL also redirects back to OneLogin instance... How this is possible? Are they settings in WordPress or OneLogin that I am missing ?
Thanks

example https://mydomain.com/wp-admin works fine with SAML onelogin, however after enabling force saml only option, https://mydomain.com also automatically redirects back to onelogin instance...

You are "Forcing SAML login", so if there is no session at WP, you are redirected to Onelogin in order to authenticate, and then a SAMLResponse is sent to WP SP ACS URL in order to process it, validate it and log the user.


inline ^gap in VFL splat does not become ^^gap

  @v |-^[block-gap-top]-(.block)-^block-...-^[block-gap-bottom]-| !require;

.block { &[bottom] + ^block == &:next[top]; }; // should be ^^block to point to proper parent
::this[top] + ^[block-gap-top] == .block:first[top] !require;
.block:last[bottom] + ^[block-gap-bottom] == ::this[bottom] !require;

I just ran into this too.


Add contributions docs

This PR begins adding some docs about creating bindings, and adds a CONTRIBUTING.md with some other contribution suggestions.

Coverage remained the same at 100.0% when pulling 39ff0f5812bbb364829c88bc7da516e5f62ff986 on isaacbrodsky:contrib-docs into d0444e57867427d82c0cd9b2557137c85894de1f on uber:master.


Update Child

Expected behavior and actual behavior.
What I want to do: Update the Payment Method picklist(global) in the AP Invoice Entity with the entry from the Account Entity of the same global picklist
Just getting an error

Steps to reproduce the problem (screenshots are really usefull)

CRM Version - online/onpremise - WorkflowTools version
On-Prem Version <IP_ADDRESS> (1612)
Workflow Tools Version: <IP_ADDRESS>

Hi bpr-admin,
I don't understund why...but:
in the plugin trac log i see that there is a valur for "_ParentFieldNameToUpdate", but the parameter called "Parent field name" is empty...
the error looks like you put the value "bpr:Paymentmethod" on the parameter "Parent Field Name", and this is why you get that error. you should leave it blank.
thanks!


Is it possible to change the background color of specific time blocks?

I'm using this library to create a group calendar and it's pretty amazing so far!
Is it possible to change the background color of specific blocks of time? ie. from an array of startDate and endDate objects similar to events.
The use case would be to show when the group is free (the green cells). These cells should still be pressable for the onGridClick callback.
I have attached a simple mockup. Could you add this in the future for me?

Hi @pdpino , how will this work if I want the event will be over the colored grid? Something like this:

I think the current workaround will halve the "actual event" into 2, something like this:

I assume you have two events in tuesday 11: the blue event, and an event from 14hrs to 23hrs. The events are overlapping, hence their width is reduced so they fit in the screen. To avoid this, you would have to change the second event to be from 18hrs to 23hrs, and you should get the expected behavior.

@pdpino  That's correct. While I understand the workaround, it really limits the application of the "available timeslots", as events cannot be created on it. For the application I'm using it for, an overlap of the "available dates" and "actual events" is required.
Is it possible to set an array of time ranges, with its own Component, but keep the grid functionality? (ie. onGridClick, and allowing Events to overlap it).
Essentially it'll be like the current events array and EventComponent, but it is just for appearance. onGridClick will still work on it and real events will be placed over it when created.

@jeminsieow to make sure I understand correctly: do you need to be able to press the actual events? (using onPressEvent). I suppose the answer is no. If yes, what happens when the user press a point that is overlapping between a placeholder-event and an actual-event? (e.g. tuesday 16hrs). Should the touch go to the actual event (blue) or the placeholder (light green)?

Is it possible to set an array of time ranges, with its own Component, but keep the grid functionality? (ie. onGridClick, and allowing Events to overlap it).

Regarding this, there is no way to keep a separate array of events that are not reduced in width when there is overlap, something like "background-events".
However, if I understood correctly what you need, and assuming the answer to my question is no, I think you can make it work like this:

Use onGridClick instead of onEventPress:

Remove onEventPress (i.e. do not pass anything, or pass onEventPress={null}).
Use onGridClick to receive presses in any point of the grid (including where there is an event). When the events are not pressable (onEventPress == null), the event box should ignore any press and it should bubble it to the grid, triggering onGridClick() (I have not tested this recently, but I have seen it before. I will check again soon).

Decouple available-slots and placeholder-events:

Available-slots will be the actual time ranges that are available
Placeholder-events will represent the available-slots in the grid (the green boxes), but making sure they do not overlap with actual-events. In other words, placeholder-events will represent the available-slots that do not have any actual-events saved yet.
If you create an actual-event where there is an available-slot, you should remove or reduce the placeholder-event to avoid the overlap (e.g. if you create the blue event from 14hrs to 18hrs, then you reduce the placeholder from 18hrs to 23hrs)
If that slot is still available, you should keep that information elsewhere (hence, the decoupling)
This will also allow you to decide how many events you allow per available-slot, without changing the placeholder-events
Pass actual-events and placeholder-events (without overlap) in the events prop

So, your code would be something like this:
const availableTimeSlots = {} // Save this in any convenient way

const myEvents = [
  // actual events...
  // placeholder events without overlap...
];

const MyComponent = () => (
  <WeekView
    events={myEvents}
    onGridClick={(pressEvent, hour, date) => {
      // Here you need to check if the slot is available, by checking availableTimeSlots
      if (isSlotAvailable(availableTimeSlots, hour, date)) {
        // handle as available slot

        // If you create a new actual-event that will use that place,
        // make sure to remove or reduce the corresponding placeholder-event
      } else {
        // handle as non-available place on the grid
      }
    }}
    // ...other props
  />
);

Does that make sense to you? Am I understanding the problem correctly?

As a side note, consider onGridClick only provides precision up to the hour (not minutes or seconds). If you need, we could add precision up to the minutes, although the press with the fingers is usually not so precise.

Hi @pdpino, thanks for the reply.

@jeminsieow to make sure I understand correctly: do you need to be able to press the actual events? (using onPressEvent). I suppose the answer is no. If yes, what happens when the user press a point that is overlapping between a placeholder-event and an actual-event? (e.g. tuesday 16hrs). Should the touch go to the actual event (blue) or the placeholder (light green)?

For this, I actually do need to press the actual events. In the case that the actual event overlaps the placeholder-event, the touch will go to the actual event and not the placeholder. (This behaves like onEventPress having priority over onGridPress).
The placeholder (green spaces) is just a change in background of the grid.
Really appreciate the help!

@jeminsieow I see. For now, I think we cannot implement a specific solution for this problem, something like backgroundEvents=[...] or timeslots=[...] (placeholder-events that would be placed in the grid, but do not get halved if there is an overlap, and have less priority than actual-events). It looks like this is too specific, and could still be solved in your app code (see comment below). Also, the implementation would get messy, as we would have to handle two array of events (the regular events and the new ones), handle touch conflicts and z-index conflicts between events, and more.
If we see more use-cases for this in the future, or if @hoangnm thinks otherwise, I'd be happy to take a shot at it :slightly_smiling_face:

I think the current solution would be:

Using onEventPress as press-callback, and distinguish actual-events vs placeholder-events with a boolean like isTimeslot (like the first example I provided)
Providing actual-events and placeholder-events in the events prop
Decouple available-time-slots and placeholder-events (like the last example I provided), and making sure placeholder-events do not overlap with actual-events (so the width is not halved)

Although is not perfect, it should work

Update: now you can create blocks with colors to achieve this

const timeslotFields = {
  description: '',
  color: 'rgba(0,255,0,0.2)',
  eventKind: 'block',
  style: {
    borderWidth: 0,
  },
  disablePress: true,
  disableDrag: true,
  disableLongPress: true,
};
const sampleEvents = [
  // Regular events
  {
    id: 1,
    description: 'Event 1',
    startDate: new Date(2023, 1, 21, 15),
    endDate: new Date(2023, 1, 21, 16, 30),
    color: 'blue',
  },
  {
    id: 2,
    description: 'Event 2',
    startDate: new Date(2023, 1, 23, 12),
    endDate: new Date(2023, 1, 23, 14, 30),
    color: 'orange',
  },
  {
    id: 3,
    description: 'Event 3',
    startDate: new Date(2023, 1, 21, 12),
    endDate: new Date(2023, 1, 21, 16),
    color: 'red',
  },
  // Timeslot events:
  {
    id: 10,
    startDate: new Date(2023, 1, 20, 9),
    endDate: new Date(2023, 1, 20, 17),
    ...timeslotFields,
  },
  {
    id: 11,
    startDate: new Date(2023, 1, 21, 9),
    endDate: new Date(2023, 1, 21, 17),
    ...timeslotFields,
  },
  {
    id: 12,
    startDate: new Date(2023, 1, 22, 9),
    endDate: new Date(2023, 1, 22, 17),
    ...timeslotFields,
  },
  {
    id: 13,
    startDate: new Date(2023, 1, 23, 9),
    endDate: new Date(2023, 1, 23, 17),
    ...timeslotFields,
  },
  {
    id: 14,
    startDate: new Date(2023, 1, 24, 9),
    endDate: new Date(2023, 1, 24, 13),
    ...timeslotFields,
  },
];


[Feat][Spark] Split datasources and core, prepare for support of multiple spark versions

Proposed changes

split datasources and core GraphAr
introduce Maven profiles for different versions of Spark
small fixes of PySpark part due to new naming and paths
new pom.xml files for subprojects

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have read the CONTRIBUTING doc
[x] I have signed the CLA
[x] Lint and unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)

Further comments
Part of discussion in #320 and #366

May someone help me with .licenserc.yaml? What should I put here to force it ignoring any pattern like spark/datasources-32/src/main/scala/com/alibaba/graphar/datasources or spar/datasources-33/... or any other version of datasources that will be here when we extend the list of supported spark versions?
I tried 'spark/datasources-*/src/main/scala/com/alibaba/graphar/datasources' but it is not working as one may see.

May someone help me with .licenserc.yaml? What should I put here to force it ignoring any pattern like spark/datasources-32/src/main/scala/com/alibaba/graphar/datasources or spar/datasources-33/... or any other version of datasources that will be here when we extend the list of supported spark versions?
I tried 'spark/datasources-*/src/main/scala/com/alibaba/graphar/datasources' but it is not working as one may see.

It seems that skywwalking-eyes does not support path pattern like datasources-*, you can just use the full path like

spark/datasources-32/src/main/scala/com/alibaba/graphar/datasources
spark/datasources-33/src/main/scala/com/alibaba/graphar/datasources

The docs generate command [here] https://github.com/alibaba/GraphAr/blob/4158bb8167694b0bca5d799c9ce3f52b71b61141/docs/Makefile#L40 may need to update.

I'm out of ideas. @acezen may you try to run mvc scala:doc from the spark folder locally? Is it working for you? Because it is crazy, why Reactor build works fine for test/compile/package but the same setup failed on scala:doc

I have tried and I got the same problem with CI. I trying exclude the dependency when generate doc, hope it work

I'm out of ideas. @acezen may you try to run mvc scala:doc from the spark folder locally? Is it working for you? Because it is crazy, why Reactor build works fine for test/compile/package but the same setup failed on scala:doc

I have tried and I got the same problem with CI. I trying exclude the dependency when generate doc, hope it work

Try mvn clean install -DskipTests before mvn scala:doc, this solution works on my enviroment.

Finally, everything is green! :tada:


Feature/separate executable and library files

Fixes

Deleted unnecessary shebang.
Fixed readme file.

Codecov Report

Merging #175 (078b42b) into master (1137ca0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #175   +/-   ##
=======================================
  Coverage   93.85%   93.85%
=======================================
  Files          72       72
  Lines        1871     1871
=======================================
  Hits         1756     1756
  Misses        115      115

Impacted Files
Coverage Δ

lib/groovy-lint-fix.js
98.57% <ø> (ø)

lib/groovy-lint.js
99.55% <ø> (ø)

Continue to review full report at Codecov.

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

sorry for the elay, thanks for your contribution :)
it seems there are issues with Codenarc these days, i'll try to upgrade to its latest version before releasing a new npm-groovy-lint version


[JENKINS-55787] Switch labels from entry to checkbox

Sorry, turns out that data migration doesn't like what I did in #494
https://issues.jenkins-ci.org/browse/JENKINS-55787
Basically checkboxes should have labels, splitting the labels away from their checkboxes is poor UX, poor accessibility. This change brings the layout more inline with how normal settings UIs lay out checkboxes.

Closing as no response and UI wasn't checked properly...

The UI was properly checked. That is the way it's supposed to be. I'll reopen this later once we shift to the table-free layout.

Ok, well that's a change that won't be accepted in it's current state,


DataError: Data provided to an operation does not meet requirements. when trying to put

Think I'm trying to do something relatively simple, where I have a wrapper on top of dexie. However, whenever I try to do a put, I am getting a
DataError: Data provided to an operation does not meet requirements.
Below is some code, is there anything that I am doing wrong?
private items: Dexie.Table<Object, string>;
constructor() {
super('myDb');
this.version(1).stores({
items: 'key, value'
});
}
public setItem(cacheKey: string, item: Object): Promise {
return new Promise( (resolve, reject) => {
this.items.put(item, cacheKey).then( (message: string) => {

Ok, it's because when keys are "inbound" in your schema (which is the most common case), you "must not" specify the key argument to Table.put() since it is already included with the item.
Maybe what you really want is a non-inbound table where the items does not include the key. Then, define your schema like this:
this.version(1).stores({
    items: '' // Basically leave an empty string here
});

Then to put stuff into it:
class X {
  ...
  setItem(cacheKey: string, item: any) : Promise<string> {
    // Side-note: When consuming Promise-based APIs, you never need
    // to wrap it in another Promise. Just return the promise you get. In this case
    // the return value is the same key as was given (a string)
    return this.items.put(item, cacheKey);
  }
}

If what you put into it, is an Object, and you want to index a certain property, but still keep it non-inbound:
this.version(2).stores({
    items: ', propToIndex1, propToIndex2' // Keep first entry empty for non-inbound keys
});

A typical use would then be:
{
  dummyQuery() {
    return this.items.where('propToIndex1').between(10,20, true, true)
      .toArray();
  }
}

This worked, thanks!!
On Thu, May 4, 2017 at 6:17 AM David Fahlander<EMAIL_ADDRESS>wrote:

Ok, it's because when keys are "inbound" in your schema (which is the most
common case), you "must not" specify the key argument to Table.put() since
it is already included with the item.
Maybe what you really want is a non-inbound table where the items does not
include the key. Then, define your schema like this:
this.version(1).stores({
items: '' // Basically leave an empty string here
});
Then to put stuff into it:
class X {
...
setItem(cacheKey: string, item: any) : Promise {
// Side-note: When consuming Promise-based APIs, you never need
// to wrap it in another Promise. Just return the promise you get. In this case
// the return value is the same key as was given (a string)
return this.items.put(item, cacheKey);
}
}
If what you put into it, is an Object, and you want to index a certain
property, but still keep it non-inbound:
this.version(2).stores({
items: ', propToIndex1, propToIndex2' // Keep first entry empty for non-inbound keys
});
A typical use would then be:
{
dummyQuery() {
return this.items.where('propToIndex1').between(10,20, true, true)
.toArray();
}
}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dfahlander/Dexie.js/issues/527#issuecomment-299181959,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AP71c42uN4Z05vfTSSoxh2T3AD81e8Yfks5r2c_SgaJpZM4NQExs
.

Thank you for this!
@dfahlander it would be nice to add this note in the Table.put() documentation :)

Indeed. The docs should clarify this better for both put, add, bulkPut and bulkAdd. The docs are open for editing by anyone. If one visits http://dexie.org/docs/Table/Table.put() with enough screen resolution (not mobile), there is an edit button that allows editing the page. In the background, you are forking the site and generating a pull request.

Hi there! I have to comment this issue again as either there's a bug or docs are inconsistent. I'm using the lib ^3.0.3 with TS, following the instructions on the inline user-defined PK ([https://dexie.org/docs/Version/Version.stores()]) but it refuses to store any data with schema lacks a property named id. I do provide a PK, just not named id, and getting this DataError. Could someone explain it?

@levant-x You can specify inbound or outbound PK. Inbound keys must exist on every object you put. In your case, you have probably used inbound keys named it 'id' when you declared your version.stores(...). You decide whether you want then inbound or not and if so, the keyPath to that property (such as 'id' or 'nested.pk').


Filter Menu

Would it be possible to add a select-all / unselect-all to the filter menu?
We have 25 filters and to narrow it down to 1 requires 24 clicks

This feature is added to the tip branch, please test.


Reserve the application and java project namespaces before Kotlin DSL 1.0 is released

The Kotlin DSL adds a project extension for each project convention that a plugin adds. The Java plugin adds a java convention, and the Application plugin adds a application convention, so these end up as extensions in the kotlin DSL. After Kotlin DSL is released, we won't be able to replace these with something else.
This conflicts with a couple of things we'd like to do:

Application plugins, of any domain, use the application extension for the main component model.
A property/provider centric model for these.

Before we release Kotlin DSL 1.0, we should add some placeholder extensions for the Java and Application plugins that we can later evolve to do the above, as it will be more difficult to do this in a backwards compatible way later.
I don't think we care about the namespaces that the other plugins add, they can be retired later.

need to do this in 4.10


result.expires_in is in wrong js format

Describe the bug
The value returned by dropbox uses unix epoch instead of whatever js format is
To Reproduce
check the value
Expected Behavior
new Date(Date.now() + (result.expires_in * 1000))
Actual Behavior
new Date(Date.now() + (result.expires_in))
Screenshots
If applicable, add screenshots to help explain your problem.
Versions
#54043fd58e6ab36e21fe1c70b00d3b7c98736400

This should be fixed in v2.0.2! Please let me know if this doesn't fix the issue

This should be fixed in v2.0.2! Please let me know if this doesn't fix the issue


[chip-tool] Add repeat-count and repeat-duration-ms optional paramete…

…rs for cluster commands
Problem
Some test cases requires to repeat a command after some delay.
Fix #16091
Change overview

Add repeat-count and repeat-delay-ms optional parameters to cluster commands

Testing
It was tried using ./out/debug/standalone/chip-tool onoff toggle 0x12344321 1 --repeat-count 4 --repeat-delay-ms 200

@vivien-apple Will this PR also add support to yaml ? That way we can also use it to script up the respective test cases.

@vivien-apple Will this PR also add support to yaml ? That way we can also use it to script up the respective test cases.

No. In YAML you can just write the same command again with a given delay in-between.


[Enums] "Purchase Line"."Document Type " access

Hi,
I'm trying to convert some Options types into Enum type.
I don't know how I'm doing this wrong, but when I put an enum type in a table field, I don't have any intellisense proposal out of my enums.
If I put it manualy, I have this AL error

Is it possible to call a standard enum like "Purchase Line"."Document Type" or do I have to create it ..?
I'm using 2.0.56865 version of AL Language in the W1 13.1 (26323) version of BC
Thanks for any help :)

You cannot convert option to enum, we have done it for you


Enhanced project section layout

Improved the layout of the project section using CSS grid and remove the old table layout method.
Issue Fixed: #9

Screenshot

@0xPrateek review it

PR :+1:
Make sure to replace the new image of the project layout in readme.md

PR 👍
Make sure to replace the new image of the project layout in readme.md

but u have hosted that previous image on some URL so can u host this image too and make the necessary adjustment

@vsharma20v  okay..!
Your work is amazing.
Have a look at other issues as well.

@0xPrateek I will surely take some other issues after my exams i.e. after 20 dec

No worries..! Best of luck for your Exams


Keyword selection too broad

In the following exemple:
foo
foo foobar
foo

Trying to select the three foo will also select foobar which is not expected.

With the default mappings:
Cursor on first foo.

 - Selects first foo
 - Selects second foo
 - Selects foo in foobar
 to skips foo in foobar and selects final foo

The  step is not natural. It should not have been selected at the first place. Moreover, ^foo assumes the line start with foo which might fit the given example, but unlikely to fit real code, say
foo
foo foobar foo
foo

In this case, :MultipleCursorFind foo\> would work. But a more general test case for this issue would be:
foo
foo foobar foo barfoo
foo

Here the search would be: :MultipleCursorFind \<foo\>. This is the core of this issue. The search pattern should be \<[word below cursor]\>, not just [word below cursor].

@lacombar I know that feel, bro. Please read this: https://github.com/terryma/vim-multiple-cursors/pull/105. Is this what you want?
@faceleg I noticed several people mentioning that behavior and expecting it to be default (including me). Maybe it's time to make it default? I remember someone in comments offering that somewhere.

I agree it should be default, enough people have risen up that it seems the obvious choice.
Would the old behaviour be toggle-able via a switch?

Well, via a two-line configuration as I demonstrated in that PR. It's mentioned in Mapping section of README. We can change default behavior and fix README to instruct how to bring old behavior back in case someone likes it better. If @lacombar confirms it solves his problem, I suggest renaming this issue to "By default select with word boundary in Normal mode" and keeping it open until someone sends a PR (the change shouldn't be that hard). Note that word boundary is not applied in Visual mode, I hope everyone agrees it's not very logical to do that.

let g:multi_cursor_start_key='g<C-n>'
let g:multi_cursor_start_word_key='<C-n>'

in my .vimrc seems to work fine for me.


Missing command using the latest version

Bug report
Describe the bug
I just installed the CLI tool to test it now and I'm following the official Docs. Looks like the CLI is missing some of the commands listed.
To Reproduce
If I run supabase db it should display those commands (according to the docs):
supabase db branch list
supabase db branch create
supabase db branch delete
supabase db switch
supabase db changes
supabase db commit
supabase db reset
supabase db remote set
supabase db remote commit
supabase db push

But my list is actually much shorter:
Available Commands:
  branch      Manage branches. Each branch is associated with a separate database.
  diff        Diffs the local database for schema changes
  push        Push new migrations to the remote database
  remote      Manage remote database connections
  reset       Resets the local database to current migrations

I'm running the latest version:
supabase -v
0.38.4

Expected behavior
I wanted to use supabase db commit to create migrations automatically and supabase db remote set to create remote connection but those commands are missing along many others.
System information

OS: macOS
Version of cli: 0.38.4

Hi @piotrkulpinski , thanks for providing us with feedback. We are in the process of stabilising CLI commands for v1 release and unfortunately that meant some breaking changes. Specifically,

db commit and db changes are superseded by db diff
db remote set is replaced by supabase link --project-ref

The old behaviour is still available via supabase db diff -f my_name which creates a migration file automatically. In addition, you will be asked to enter your database password when doing db remote push.
We will be updating our guide to reflect these changes these few days. Once v1 is released, we will plan more carefully around deprecation. Appreciate your kind understanding.

Hi @troels , we fixed the issue with db remote changes here https://github.com/supabase/cli/releases/tag/v0.38.7. Could you try upgrading to the latest version 0.39.3?

Hi @sweatybridge
Yes, it's working now.

Our new docs site for v1 is now live:

Local development guide: https://supabase.com/docs/guides/cli/local-development
CI / CD guide: https://supabase.com/docs/guides/cli/cicd-workflow

The commands listed in CLI reference are expected to have no breaking changes for this major version.
Hope it helps!


SW-5761 Add requested subzones to admin UI

Show the list of requested subzones for each observation on the planting site
page in the admin UI, and allow subzones to be selected when creating
observations.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#2247
#2246
#2245  👈
#2244
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @sgrimm and the rest of your teammates on  Graphite

Merge activity

Aug 7, 1:31 PM EDT: @sgrimm started a stack merge that includes this pull request via Graphite.


Add a Rate us Option

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
Hello, my name is A.A.D.Sailaja. I am a Tech Enthusiastic and i'm looking forward to contribute in open source projects. Here in this project i would like to add a rate us option it will allow the user to rate our website and also he can suggest us to improve if any
Can you please assign me this issue under gssoc'24
Explain your solution
No response
Any alternative approaches/features
No response
Additional Context
No response

will you assing me this issue @jfmartinz

@jfmartinz will you assign me this issue

will you assign me this issue


Add CABLE

Insert URLs to the project here:
https://github.com/CABLE-LSM/CABLE

[x] The projects is active, documented, open source licensed, shows usage from external parties and is directly targeting environmental sustainability. Find more details in the Contribution Guide.

All issues labeled as 'Good First Issue' of the project listed on OpenSustain.tech will be visible on ClimateTriage.com. This is a great way to welcome new community members to your project.

@ccarouge @tammasloughran @JhanSrbinovsky


chore(main): release 0.4.5

:robot: I have created a release beep boop
0.4.5 (2024-08-22)
Bug Fixes

exposed more fields to getDynamic options (b61e6a7)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v0.4.5
:sunflower:


What to do with the request query params field?

Request.query_params
Our HTTP clients use it, Apify platform does not.
See https://github.com/apify/crawlee-python/pull/542#discussion_r1813094025 for more information.

When it comes to sending the Request to the platform, the query params must be appended to the URL. Currently, we just drop the field in the SDK, which is not great.
How much of an inconvenience would it cause to just drop the field?


Disable liblldb scripting

LLDB can be customised (with its .lldbinit file) and extended with scripting (typically in Python).
These files are not necessarily write-protected, so an adversary could exploit them to alter the generated BPF byte-code.
We don't rely on Python extension in our use of LLDB. Ideally we would link against a liblldb with no scripting support, but we can't control what features distributions enable in their liblldb-devel package. So this PR is an attempt at mitigating this risk by documenting the issue and disabling the scripting engine.
Checklist

[x] Language changes are updated in man/adoc/bpftrace.adoc
[x] User-visible and non-trivial changes updated in CHANGELOG.md
[x] The new behaviour is covered by tests

Can you also revert 0e71958ce4a38bd5aa5fb7d090da9a167547d797 and see if the appimage works again?

Can you also revert 0e71958 and see if the appimage works again?

Unfortunately, this change does not solve the appimage issue.

Ah, ok. Unfortunate. But this seems like a good change anyways


la-go-live

Docs Build status updates of commit 3932872:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/tabs/tabs-sso-prompt.png
:white_check_mark:Succeeded
View

msteams-platform/concepts/deploy-and-publish/appsource/post-publish/application-certification.md
:white_check_mark:Succeeded
View

msteams-platform/tabs/how-to/authentication/auth-aad-sso.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Desync

After playing many games I discovered a desync bug... One client loses track of how many cards the opponent has (ocards), which doesn't immediately (or always) cause problems. But if the opponent of the glitchy client wins the game, then the client becomes softlocked waiting for a response from an opponent who already won the game :)

[ ] Keep a log on the server so I can figure out what sequence of actions causes this state to occur
[ ] The server should tell clients when their opponent wins as a last resort
[ ] Glitchy clients could tell the server to flag games in the log when a desync occurs

These are some ideal goals. I regret not building logging/testability into this codebase from the start :) Lessons to learn for my next project
I deduced that the desyncs were caused by those asynchronous fetches to /refresh while waiting for the opponent to play cards. There are several checks in the client to prevent this, but if the responses arrive simultaneously then the opponent's cards get doubled as 2 promises resolve at the same time.
The easiest way to fix this is tracking the "previously refreshed turn" in the database. Instead of trying to do it client-side, the server can return a 204 No Content if it receives a correct-but-duplicated request. The client ignores 204s and life goes on.
Implemented in 39f9d9c


Add default secure cipher suites for management ingress

There is a security issue about the insecure algorithm
used in management ingress. So need to add default secure
ssl cipher suites.

Close it as ssl-ciphers option seems not take effect.


[oatpp] update to 1.2.5

Fix #17504
Update oatpp to the latest version 1.2.5
Note: no feature need to test

Duplicate to #17601


Release Google.Cloud.Deploy.V1 version 1.0.0

Changes in this release:
No API surface changes; just dependency updates and promotion to 1.0.0.

Created release for Google.Cloud.Deploy.V1-1.0.0


creates ResultSet class

I've created a new ResultSet class, amended the Tournament class to use it and shifted the test for scores initialisation.
The intention is to move the functions that create the plots and csv files into that class from run_tournament.py, but I won't start that unless you're happy with what I've done thus far.
There's a dummy test in test_resultset.py which deliberately fails so that this PR doesn't yet look ready to merge.

No no, I like the idea of this. Very modular. Should make #79 even easier (very minor tweak and clean up).

Ok - I'll get on with it!

The day job is going to take precedence for the next few days. The csv method is done, tested and working. I've not used matplotlib before, but there's some work required on the plot method so that it returns a fig object.

Cool: no worries :)
If I get time will send some pull requests your way (I doubt it though the
day job is becoming the day and night job at the moment).
On Tue, Mar 3, 2015 at 8:49 PM Owen Campbell<EMAIL_ADDRESS>wrote:

The day job is going to take precedence for the next few days. The csv
method is done, tested and working. I've not used matplotlib before, but
there's some work required on the plot method so that it returns a fig
object.
—
Reply to this email directly or view it on GitHub
https://github.com/drvinceknight/Axelrod/pull/78#issuecomment-77031474.

As I understand it so far, run_tournament.py uses matplotlib.pyplot at the moment, which, according to the docs:

Pyplot provides the state-machine interface to the underlying object-oriented plotting library. The state-machine implicitly and automatically creates figures and axes to achieve the desired plot

I think what's required for my plot method is to create the fig and axes objects explicitly, but I've no idea how to do that and then to achieve the boxplot at the moment!

Are you 'just' trying to recreate the same plot as before or trying to
create a new plot? (Sorry for not following.)
On Tue, Mar 3, 2015 at 9:00 PM Owen Campbell<EMAIL_ADDRESS>wrote:

As I understand it so far, run_tournament.py uses matplotlib.pyplot at the
moment, which, according to the docs:
Pyplot provides the state-machine interface to the underlying
object-oriented plotting library. The state-machine implicitly and
automatically creates figures and axes to achieve the desired plot
I think what's required for my plot method is to create the fig and axes
objects explicitly, but I've no idea how to do that and then to achieve the
boxplot at the moment!
—
Reply to this email directly or view it on GitHub
https://github.com/drvinceknight/Axelrod/pull/78#issuecomment-77033351.

The same plot - just returned as an object from the method rather than saved directly to a .png
run_tournament can handle saving the file. The ResultSet plot method should just return an object.

With you. Does this sort it out:
https://gist.github.com/drvinceknight/efea1afb243e8170c120
On Tue, Mar 3, 2015 at 9:05 PM Owen Campbell<EMAIL_ADDRESS>wrote:

The same plot - just returned as an object from the method rather than
saved directly to a .png
run_tournament can handle saving the file. The ResultSet plot method
should just return an object.
—
Reply to this email directly or view it on GitHub
https://github.com/drvinceknight/Axelrod/pull/78#issuecomment-77034279.

Good grief!! It's that simple?!!! That may well have saved me hours of hunting around the docs and examples!!
I'll give that a whirl on the train to London tomorrow, with any luck.

Yeah...  I really should just look in to it and understand
it...
On Tue, Mar 3, 2015 at 9:20 PM Owen Campbell<EMAIL_ADDRESS>wrote:

Good grief!! It's that simple?!!! That may well have saved me hours of
hunting around the docs and examples!!
I'll give that a whirl on the train to London tomorrow, with any luck.
—
Reply to this email directly or view it on GitHub
https://github.com/drvinceknight/Axelrod/pull/78#issuecomment-77036947.

Seems to be working - just need to write a test for it now

Hehe... I thought this was waiting for the train ride tomorrow? :)
On Tue, Mar 3, 2015 at 9:41 PM Owen Campbell<EMAIL_ADDRESS>wrote:

Seems to be working - just need to write a test for it now
—
Reply to this email directly or view it on GitHub
https://github.com/drvinceknight/Axelrod/pull/78#issuecomment-77041445.

Couldn't leave that go once I didn't have to read the docs

Tests are all passing, but the plot isn't correct. Not sure where the error is at the moment.

Nope - can't see what's wrong here. It's definitely the plot method in ResultSet - if I pass the ResultSet object from the tournament into run_tournament.py and use the existing code to produce the plot there, it all works fine (so the methods to produce the numpy arrays etc. must be ok).
If I use the plot method, I get a figure with the correct ticks and titles, but the boxes and whiskers are nonsense.

I think this might need a separate class for the box plot - so that the functions which generate the plot and  the ticks can be refactored as methods and therefore tested.
How about I get rid of the plotting and we merge the work I've done so far to give us the csv output?

That sounds good to me: you'd leave the plots as is in the run_tournament.py script?

Mostly - It works when I leave the plotting in run_tournament.py but drive it from the new methods in the resultset (rankings, ranked_names, scores)

What would you prefer to do:

Leave the plot in this pull request and I can perhaps take a look (no promises on when...)?
Throw it out of this pull request and work on it separately (as long as run_tournament.py still creates the plots).

I'd be tempted to go with the second option... To be honest the plotting could even be done from the data output anyway (in a way the written file just takes precedence of the other object you're trying to pass).
Having said that, it might well just be a weird matplotlib thing that wouldn't take long to fix... Your call :+1:

I think the second option. I'll fix up this PR with the plot code left in run_tournament, but based on the resultset methods.

Yup, sounds great!

that should do it for the moment!

Weird... Travis is taking forever...

the yanks are out of bed

Ah. Tests failed on Travis because of matplotlib not being there. I might need to add something to the 'travis.yml' file. Could you also though perhaps put in an exception for when matplotlib isn't available? Perhaps users could just get the csv files in that case...
Hold on (haven't had my coffee yet), I thought this PR wasn't doing anything with matplotlib anymore? (haven't looked at changes yet)

the import statement for matplotlib was still in there - sorry. That's why we CI, I suppose!!

Hmmmmm..... thought you might say that, but was hoping to get away with it!!
They are exatly the same code that was previously in run_tournament.py - just moved to separate methods so they can be tested. I have to confess, I don't actually know what they do!! I just made sure the methods gave me the same results as the original code!!

Hmmmmm..... thought you might say that, but was hoping to get away with it!!
They are exatly the same code that was previously in run_tournament.py - just moved to separate methods so they can be tested. I have to confess, I don't actually know what they do!! I just made sure the methods gave me the same results as the original code!!

I very much appreciate it :)

I have to confess, I don't actually know what they do!! I just made sure the methods gave me the same results as the original code!!

I think I'm just panicking at times (this has garnered far more interest than I could have hoped for) and keep on thinking: 'Oh I need to make sure I ask for that'... If I knew what I was doing from the start I guess I would probably be and have been doing a better job :) I've got some tests and exams to write but as soon as that's done I'm going to go through everything really carefully...


feat: Option to remove files when removing a gluon user

I'm thinking that perhaps it may be better to have two separate functions DisableUser|RemoveUser and RemoveUser|DeleteUser. Internally it could just call the existing implmentation of RemoveUser but it might be cleaner on the API side of things?

I actually think that becomes a bit more confusing, because that API suggests that it's possible to firstly remove a user and then delete it, which wouldn't be the case -- once the user is removed, you can't then delete it. Having it in the same function (with an option for file removal) feels better to me since.


Fix IPA identifier value

/test-ipa

/test-ipa

/test-ipa

I think this has to go in without the ipa test, as https://github.com/Nordix/airship-dev-tools/pull/356 is still waiting to be merged.
So I think it should go in, an then we can do the test on 356.

I think this has to go in without the ipa test, as #356 is still waiting to be merged.
So I think it should go in, an then we can do the test on 356.

True. Just wanted to check. But maybe I should do it on another PR.


missing automatic sort in tailwind

https://tailwindcss.com/blog/automatic-class-sorting-with-prettier

Eslint already does this with tailwindcss/classnames-order.
https://github.com/francoismassart/eslint-plugin-tailwindcss/blob/master/docs/rules/classnames-order.md
https://github.com/joaopaulomoraes/reactjs-vite-tailwindcss-boilerplate/assets/16243531/e38b958c-e374-415d-b7e2-5f08eebb64be
You may need to install the extension in your IDE


Compatible with react native?

Would it be possible to integrate umami with react native, for use on mobile apps?

The UI can already be accessed on mobile. If you're asking if there's going to be a react native port, it's very unlikely.

Ah it was a hail mary anyway. Just want to sincerely thank you for creating this amazing open source software. I know it can be a thankless job.

Would this ever be reconsidered? Being able to use Umami to get analytics on both a website and mobile app would be very useful.

Maybe there was a misunderstanding regarding the initial request. I guess the author was asking if it was possible to get analytics about mobile app users, not if the Umami dashboard was usable on a mobile device :)

bump


Build Error on npm start

Hi, i got an error when try to start the example:
ERROR in ./.storybook/generated-entry.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Cannot find module '@babel/compat-data/corejs3-shipped-proposals'

I'm using Node: v14.5.0.
I found a workaround:
npm update --depth 5 @babel/preset-env
npm update --depth 5 @babel/compat-data

Ref.: https://github.com/JeffreyWay/laravel-mix/issues/2383#issuecomment-643265068

Hi,
yeah a lot of the dependencies has changed since I originally published the example.
I will try to update the example to a more recent Stencil / Storybook version soon that should fix these kind of issues.

Hi,
yeah a lot of the dependencies has changed since I originally published the example.
I will try to update the example to a more recent Stencil / Storybook version soon that should fix these kind of issues.


Work on upgrade

Fix for #694.
Documentation.
Bumped versions and added change log entry.
Added check --offline-requirements is an actual valid path.

Fix for #694.
Documentation.
Bumped versions and added change log entry.
Added check --offline-requirements is an actual valid path.


Terragrunt is now available in Azure Dev Ops/VSTS!

Hi all, not sure if this is the right place to post but terragrunt can now be installed to Windows build agents in Azure Dev Ops/VSTS.
https://marketplace.visualstudio.com/items?itemName=BigAvocado.Terragrunt

Oh, cool, thanks!
This may be worth adding to the README if you have time.

It would be better if @jabba2324 could transfer the "ownership" of the project to gruntwork. :)


Fixed: sendCommEventAsEmail requires communicationEventId

In the new groovy file, component://party/groovyScripts/communication/CommunicationEventServices.groovy The parameter was set as the whole object  communicationEvent instead of the ID only communicationEventId which is the one required. It gave this error :
Error running Groovy method [sendEmailDated] in Groovy file [component://party/groovyScripts/communication/CommunicationEventServices.groovy]:  (org.apache.ofbiz.service.ServiceValidationException: The following required parameter is missing: [IN] [sendCommEventAsEmail.communicationEventId])
I did the line change and it worked and sent the email.
Thanks:

Thanks for your work Serge, as we rather fix in trunk and backport in supported branches, I have done the push with
https://gitbox.apache.org/repos/asf?p=ofbiz-framework.git;a=commit;h=6d6b0e38d96c57365528871254d609572428fcdf
and
https://gitbox.apache.org/repos/asf?p=ofbiz-framework.git;a=commit;h=e4c95d885020ab831af237850f13fe2bc5b5c43c


Nodon roller shutter - D2-05-00 - TypeError: Cannot read property 'datafield' of undefined

I'm currently trying to get a nodon roller shutter module to work with nodered, however I seem to either have an error in my payload data or there is something broken with the eep used by the eep-transcoder.js for the device.
I see the following error:
(node:24) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'datafield' of undefined
    at getPayloadLengthFromEEPDescriptor (/data/node_modules/@enocean-js/eep-transcoder/src/eep-transcoder.js:349:18)
    at encodeData (/data/node_modules/@enocean-js/eep-transcoder/src/eep-transcoder.js:369:23)
    at RadioERP1.encode (/data/node_modules/@enocean-js/radio-erp1/src/radio-erp1.js:129:20)
    at EnOceanOutputNode._inputCallback (/data/node_modules/node-red-contrib-enocean/nodes/enocean-out.js:47:13)
    at EnOceanOutputNode.Node._emitInput (/usr/src/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:200:18)
    at Immediate.<anonymous> (/usr/src/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:179:33)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)
    at process.topLevelDomainCallback (domain.js:126:23)
(node:24) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 13)

When running a inject with the following msg.payload:
{
    "data": {
        "POS": 127,
        "ANG": 127,
        "REPO": 0,
        "LOCK": 0,
        "CHN": 15,
        "CMD": 1
    },
    "meta": {
        "eep": "d2-05-00",
        "channel": 15,
        "data": 1
    }
}

I tried to debug it remotely as nodered is running on raspberry pi and I believe the 'problem' is caused by this part of the code. As I'm not that familiar with node.js I struggle to fully understand why the "cond" variable is "NaN" in my case.
I have also a nodon 1 channel relay switch working with nodered, therefore I believe it is not a general issue with my installation.

Can you paste the flow (export as JSON and paste it) I can try to help you

I ran into the same issue and after quite a bit of analysis I came to the same conclusion as you. The problem is that "cond" is "NaN" and indeed just adding a || isNaN(cond) fixes the issue!
Maybe @Holger-Will can comment on my more thorough analysis and understanding of the code:
Here is a test that fails and that should work with the added "isNan" fix:
      radio = RadioERP1.from({ payload: [0], id: 'ff00ff00' })
      radio.encode({ POS: 31, ANG: 47, REPO: 0, LOCK: 0, CHN: 0, CMD: 1 }, { eep: 'd2-05-00', channel: 3, data: 1 })

Encoding a package uses a slightly weird logic:
We first create a radio package using the RadioERP1.from constructor: in it we actually specify a one-byte payload. However during encoding, some of the modules (d2-05-00) as a condition check for a bit that is beyond the first 8 bits. This actually results in a NaN when testing for that bits.
The code already has some questionable implementation in there, where it does check if the bits are "0" and then instead of comparing against the payload, it compares against some "data" value. This doesn't scale very well, since every comparison is always made against the same "data" value, though. Also, if for example a condition would be the zero value, this would also not work. IMHO the code should work differently: instead of passing in the "data" in order to find the correct case, we should investigate the case further and see if the conditional bits in question will be set through the other values. This is the case for the d2-05 modules:
condition: {
      datafield: {
        bitoffs: '28',
        bitsize: '4',
        value: '0x01'
      }
    },

and further down:
{
      data: 'Command ID',
      shortcut: 'CMD',
      description: 'Command identifier',
      info: {},
      bitoffs: '28',
      bitsize: '4',
      enum: {
        item: {
          value: '1',
          description: 'Goto command'
        }
      }

The condition is for the command and the command always sets the value to 1.
So instead of depending on some "data" that gets piped through to the getEEPDescriptor descriptor, we should rather build the payload according to the values that we have and then check for the constants in the condition. Something along the lines of this (where in this case there is no other choice), also worked for me:
if (isNaN(cond)) {
          // it could be that we don't have the payload initialized, yet - so we need to make up a payload and check against the condition
          //create an empty payload of the right size
          var length = getPayloadLengthFromEEPDescriptor(item)
          var bytes = new Array(length)
          for (var i = 0; i < length; i++){
            bytes[i] = 0
          }
          var ba = ByteArray.from(bytes)
          // and set all the values where there is no choice anyway, because the value is constant!
          item.datafield && item.datafield.forEach(function(field){
            if (field.enum && field.enum.item && typeof field.enum.item.value !== "undefined"){
              //no choice - set the value!
              ba.setValue(parseInt(field.enum.item.value), parseInt(field.bitoffs), parseInt(field.bitsize))
            }
          })
          // then check against the dummy payload, instead
          if (parseInt(item.condition.datafield.value) === ba.getValue(parseInt(item.condition.datafield.bitoffs), parseInt(item.condition.datafield.bitsize))){
            return true;
          }
        }

For the node-red module, the bug could also be worked around by modifying enocean-out.js to not initialize the payload with just one byte, but the above isNaN fix also works for me, although I don't really like the fix and would rather see the "data" stuff removed altogether for the encoding phase.
And by the way the same bug also exist in the (very nice!) eonocean-js eep-info browser - trying to view the possible commands for d2-05-00 results in exceptions and only some of the cases are shown.
I came across this issue, first, and there I fixed the problem by prepopulating the payload with the correct values in eep2JSON.
I would be happy to create pull-requests. For now I have created a fork and will add the fixes in there so that I can continue my work.

there is a lot(!) of room for improvement, I know...
my first intention was to have special nodes or wrappers for more complex eeps but I agree that the transcoder should at least fail gracefully ;-)
i will look into this issue...


Threaded DNS = memory fault

I try to make ZNC run on my OmniOS server, installed via pkgsrc:
$ znc --version
ZNC 1.7.1 - https://znc.in
IPv6: yes, SSL: yes, DNS: threads, charset: yes, i18n: no, build: autoconf

I imported my configuration from my old FreeBSD server. It still seems to have been not the brightest idea:
$ znc -D
... a lot of log lines, until ...
[2018-12-31 23:30:45.896799] Error in threaded DNS: node name or service name not known
Memory fault

This happens all the time, with no clear indication of which user or even network (or "node name or service name") was affected. I suspect that the "error catcher" is broken or something. Any ideas?

Could you show some lines before that line? How long after startup that happens?

Almost a minute. The log shows the usual IRC interaction over all users and networks, with the previous lines being two different users successfully processing messages on different networks to which they were already connected. As far as I could see, ZNC was essentially done connecting everything, so the message makes not much sense to me.
I'd prefer to not attach too many details about users/networks in a public ticket unless it's absolutely necessary. (Is it?)

You can grep for dns and TDNS

I'll do that tomorrow. :-)
Thank you for today.

I tried:
$ znc -D | grep -E 'dns|TDNS'
[2019-01-01 16:47:20.294083] TDNS: IRC::tux.::EFnet, connecting to [<IP_ADDRESS>] using bindhost [<IP_ADDRESS>]
[2019-01-01 16:49:21.205167] TDNS: initiating resolving of [irc.mozilla.org] and bindhost [irc.rosaelefanten.org]
[2019-01-01 16:49:21.313662] TDNS: IRC::tux.::Mozilla, connecting to [<IP_ADDRESS>] using bindhost [<IP_ADDRESS>]
[2019-01-01 16:49:26.288999] TDNS: initiating resolving of [irc.quakenet.org] and bindhost [irc.rosaelefanten.org]
[2019-01-01 16:49:26.289538] TDNS: IRC::tux.::default, connecting to [<IP_ADDRESS>] using bindhost [<IP_ADDRESS>]
[2019-01-01 16:49:31.382712] TDNS: initiating resolving of [chat.freenode.net] and bindhost [irc.rosaelefanten.org]
[2019-01-01 16:49:31.543283] TDNS: IRC::tux.::freenode, connecting to [<IP_ADDRESS>] using bindhost [<IP_ADDRESS>]
[2019-01-01 16:49:39.686532] TDNS: initiating resolving of [irc.snoonet.org] and bindhost [irc.rosaelefanten.org]
[2019-01-01 16:49:39.793901] TDNS: IRC::tux.::snoonet, connecting to [<IP_ADDRESS>] using bindhost [<IP_ADDRESS>]
[2019-01-01 16:49:47.481162] TDNS: initiating resolving of [de.quakenet.org] and bindhost [irc.rosaelefanten.org]
$

A-ha! But a crash is probably still the wrong thing to do.
Plus, why does my FreeBSD ZNC do it without an issue? FWIW, it even has the same build configuration:
# znc --version
ZNC 1.7.1 - https://znc.in
IPv6: yes, SSL: yes, DNS: threads, charset: yes, i18n: no, build: autoconf


Remove Field.fromNumber(x) to reduce API surface area

Given Field(x) works equally well.

we have three similar methods, which all duplicate part of the Field() constructor
  static fromString(x: string): Field;
  static fromNumber(x: number): Field;
  static fromBigInt(x: bigint): Field;

the only things they add is to narrow down the types that are allowed as input. I'm not sure if that adds any value though, and haven't seen any of those three used in any actual code

Remove them on UInt* as well

Sadly, we should remove Field.zero and Field.one and Bool.true and Bool.false


fixed alignment of letter on page load

Old:

New:

Cool project btw.

oh wow! awesome! thanks! :dancer:


docs: Fix a broken relref link

A little PR to fix a broken link on current doc : https://docs.gitea.io/en-us/hacking-on-gitea/#creating-new-configuration-options
I based myself on a link that work on the same page : https://github.com/go-gitea/gitea/blame/master/docs/content/doc/advanced/hacking-on-gitea.en-us.md#L94

Codecov Report

Merging #7233 into master will decrease coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #7233      +/-   ##
==========================================
- Coverage   40.97%   40.95%   -0.03%
==========================================
  Files         462      462
  Lines       62567    62567
==========================================
- Hits        25635    25622      -13
- Misses      33571    33584      +13
  Partials     3361     3361

Impacted Files
Coverage Δ

models/unit.go
62.16% <0%> (-5.41%)
:arrow_down:

modules/log/event.go
64.61% <0%> (-1.03%)
:arrow_down:

routers/repo/view.go
42.23% <0%> (-1.02%)
:arrow_down:

models/repo_list.go
72.08% <0%> (-1.02%)
:arrow_down:

models/gpg_key.go
55.83% <0%> (-0.84%)
:arrow_down:

Continue to review full report at Codecov.

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


I have added my name

Please I am sorry for all the trouble we have caused you but count it all joy. Your PR is about to be merged and you will be able to see your name on this url.
To enable me to do this, READ the README again carefully, update your code with the latest and push the update. I am here for you for the next 6 hours before I close the PR so you can initiate a fresh PR which will be easier to merge.

Hello Sanusi!
Please open a new PR! Remember to make a branch as you work on your changes! 🙏
We look forward to merging your next PR! :partying_face:

Hi Tobi,
I am just about making the changes as you requested. Thanks for the
notification
On Tue, 16 Aug 2022, 5:50 am Tobi Balogun @.***> wrote:

Closed #426
https://github.com/Oluwasetemi/altschool-opensource-names/pull/426.
—
Reply to this email directly, view it on GitHub
https://github.com/Oluwasetemi/altschool-opensource-names/pull/426#event-7193917300,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APDBKFZ4HAZBFHQIZ7PS3ALVZMM2NANCNFSM56NU7YOA
.
You are receiving this because you authored the thread.Message ID:
<Oluwasetemi/altschool-opensource-names/pull/426/issue_event/7193917300@
github.com>


Broken in Safari with an iframe

Thanks much for Readmore.js! It works great but we noticed a problem. If there is an iframe inside a div, then Readmore.js does not display the contents of iframe on Safari. On other browsers (Chrome/Firefox) it works fine. On OSX or iOS Safari the iframe contents are not rendered.
Any idea what might be causing this behavior?
Plunker which shows the problem
I have a plunker which demonstrates this problem: http://plnkr.co/edit/SCr7jmwmxQYrsTfDvsIY?p=preview
On Safari you see:

On Chrome/Firefox you see:

Not a Readmore.js issue.

Hi @jedfoster why isn't this a Readmore.js issue? My plunker clearly gives you a sandbox to reproduce it.

Hi @jedfoster I'd appreciate if you could give some more details about why you think this isn't a Readmore.js issue. I'd carefully created a plunker so that you'd be able to reproduce the problem.

Had the same problem, it has something to do with the script cloning dom elements as far as I can see. Wrote a tiny script that is enough for my readmore needs, is very small and is tuned form performance.
https://github.com/krisdigital/readmore-light-js

@krisdigital I'm curious if your issue is exactly the same as @ayush's? Do you have a page that shows the issue?
(BTW, I love that you linked to sassmeister.com!)

FWIW, I found that resetting the iframe's source at the end of setBoxHeights ""fixes"" the issue. See: http://plnkr.co/edit/tT30vAOyaHr40sHrafBL?p=preview
I say ""fixes"" because it feels hacky.
The ""fix"" is:
  function setBoxHeights(element) {
    //...

    element.find('iframe').each(function() {this.src = this.src;});
  }

Removing the cloned node seems to unload the iframe; calling hide() instead of remove() on line 86 also ""fixes"" the issue (can't leave those cloned nodes laying around.)
I still don't think this is an issue with anything in Readmore.js, it is a Safari issue. Admittedly, cloning, sizing, removing, and then resizing nodes is not a common operation (or at least, it shouldn't be :-), but I believe this to be a rare corner-case issue with this one browser.
Readmore.js was intended to work with text, not arbitrary HTML blocks. I am disinclined to include this ""fix"" in Readmore.js at this time.

Hi @jedfoster,
I did not know that sassmeister.com is your site! LOL, you are everywhere!
Yes I am pretty sure I had the same issue as @ayush and it was only in Safari and not always, but most of the time.
I just posted my solution as it might help others with the same problem. It is a different approach and it works well in my case.
I do not have a page with the issue online anymore..
Cheers!


Set 2018 as the current year for releasing

Do not prepare for releases in the past.
:wink:

Can one of the admins verify this patch?

CLA signed by all contributors.

Thanks! :)


MSI on windows machines

Close and reopen to trigger travis

PTAL @jhendrixMSFT @marstr
I think @weinong might be interested on this too.
BTW IDK what is happening now with Travis :I

:)

@colemickens :D :D :D


Fix and Enhance travisci build experience.

Fix TravisCI build fails from error "Unchecked dependencies for environment dev:"
Incorporate travisci build cache to speed up build process
Skip travisci install phase because no installation is performed in build process

Thanks for this, @linearregression!

Thanks for this, @linearregression!


Removing known issues text PR #39

As we pushed the fix, i am cleaning up text
PR: https://github.com/awslabs/cfncluster-cookbook/pull/39
Signed-off-by: Mohan Gandhi<EMAIL_ADDRESS>

Yes you are correct. updated the doc.


Update stale.yml to check only one label

Another stale bot example

This PR was released with 0.22.1


SMTP security: prevent command injection via To/From addresses

Validate addresses passed as SMTP command arguments to prevent
injection of other SMTP commands. Disallow line breaks and very
long addresses which may cause overflows on some old SMTP servers.
Ruby 2.4 Net::SMTP already disallows addresses that contain newlines.
Enforce this validation in Mail to cover older Ruby versions and
other SMTP implementations that don't validate input.
SMTP injection whitepaper: http://www.mbsd.jp/Whitepaper/smtpi.pdf
Ruby security report: https://hackerone.com/reports/137631
OSVDB entry: https://rubysec.com/advisories/mail-OSVDB-131677

@jeremy when might we expect an official 2.6.6 release for this? Currently I only see a 2.6.6.rc1 on rubygems.

@jordan-brough Expect an official 2.6.6 after RC1 has had a fair number of installs to shake out regressions. Note than 2.6.x is (coincidentally) not vulnerable to this issue, thanks to #505 stripping CRLF from header values.

One month and >10,000 downloads for 2.6.6.rc1 so far.

Mail 2.5.5 and 2.6.6 are released.


Fix dbeaver.dbeaver Machine Scope

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

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

https://github.com/microsoft/winget-pkgs/issues/135726


[MAS1.3.1][Info and Relationships- Open Bot Dialog] Placeholder and label of the “Bot URL” edit field are same.

Actual Result:
In "Open Bot Dialog, the placeholder and the label of "Bot URL" edit field are same which is also verified from the code.
Expected Result:
The placeholder should be different from the label. The purpose of the placeholder is to provide the additional information about the edit field, so it should be more descriptive than the label.
Repro Steps:

Open the Bot Framework V4 Emulator.
Welcome tab screen gets opened.
Navigate to the Welcome tab and reach at "Open Bot" button and activate it.
"Open a Bot" dialog gets appeared, navigate to "Bot URL" edit field.
Observe the issue.

User Impact:
User gets confused if the placeholder and label are same.
Observation:
If the placeholder and the label are same the voiceover, will also narrates the same information twice which misguide the voiceover dependent user.
Test Environment:
OS: Ubuntu 18.04.3 LTS
Application: BotFramework-Emulator-4.5.2-linux
Impacted MAS Link:
https://microsoft.sharepoint.com/:w:/r/teams/msenable/_layouts/15/WopiFrame.aspx?sourcedoc={54f28d1f-a2d1-4dcd-84e1-5c9b87e8aba4}
Attachment:

We have checked in the latest nightly, the issue is fixed now. So, we are closing the bug.
Test Environment:
OS: Ubuntu 18.04.3 LTS
Application: BotFramework-Emulator-4.6.0-94878


Typo in BaseDataTypes.xsd and Reported-Data.xsd

Line 223 and 224 of BaseDataTypes.xsd has ACRatedOuput and should be ACRatedOutput (missing 't') in Type name
The type is then referred to in Reported-Data.xsd on lines 520 & 689 so needs fixing there too.
The above line numbers refer to the CEPC-8.0.0 files.

Thanks for this @rogerdawkins - good spot.
There is a problem with just fixing this right now:  this error has been carried over from the legacy schema that we've inherited, and there is already a bunch of software out there that produces output to match the schema with the misspelled element (and probably has done for 10 years or more).  We'll have to get in touch with Air Conditioning report software providers to co-ordinate the change in element name.
But thanks for raising the issue - we will definitely get things moving to put it right... it just won't be immediate.

@TheDoubleK No probs. The typo doesn't appear in the XML output, it is only an element and complexType definition in the XSD files so may be easier to implement. I'll leave it with you.


GH-39024: [Compute] Allow implicitly casting extension to storage types in compute functions

Rationale for this change

Extension types are only logical, i.e. each extension type has a underlying native storage type. We can allow implicit casting from extension types to their storage types. I believe this can make ExtensionTypes much easier to use.
What changes are included in this PR?

In DispatchBest, if no matching kernels exist, allow extension types to be casted to their storage types and match again. The kernel with the minimum number of casts is selected. If there are multiple best kernels, report an error. The dispatching algo is similar to C++'s.
In functions that overwrite DispatchBest, call EnsureExtensionToStorage to simply replace extension types by their storage types, because these functions do not provide native kernels for extension types so we don't need to count the number of casts needed.

Are these changes tested?

Yes.
Are there any user-facing changes?
No.

Closes: #39024

I am not sure it's a good idea to do this automatically and exhaustively. Some operations will depend on the logical meaning of the types: you probably don't want the same casting rules to apply to UUID than to fixed_size_binary<16>, for example.
This seems reasonable to functions that merely forward one of their arguments, though, such as if_else.

I see. I think there are two things we can do do mitigate this problem:

Implicit casts should be disabled for Cast functions.
Each ExtensionType can have an allow_implicit_cast_ member to opt-in/opt-out of this feature. This is kind of like the C++ explicit keyword: A type needs to opt-out of implicit casting.

There's also a more passive yet controlled approach: We add a std::vector<std::string> allowed_implicit_casting_functions_ member to each ExtensionType and we implicit cast it only for those functions.
It can also be std::vector<std::string> disallowed_implicit_casting_functions_.

There's also a more passive yet controlled approach: We add a std::vector<std::string> allowed_implicit_casting_functions_ member to each ExtensionType and we implicit cast it only for those functions.

That would work but that means a lot of work for each extension type to follow additions to the range of default compute functions.
I would suggest we perhaps need a more general semantic description of storage type equivalence.
issues?q=is%3Aissue+involves%3Aozankabak+
Draft:
class ExtensionType {
 public:
  // Storage equivalence for equality testing and hashing
  static constexpr uint32_t kEquality = 1;
  // Storage equivalence for ordered comparisons
  static constexpr uint32_t kOrdering = 2;
  // Storage equivalence for selections (filter, take, etc.)
  static constexpr uint32_t kSelection = 4;
  // Storage equivalence for arithmetic
  static constexpr uint32_t kArithmetic = 8;
  // Storage equivalence for explicit casts
  static constexpr uint32_t kCasting = 16;
  // Storage equivalence for all operations
  static constexpr uint32_t kAny = std::numeric_limits<uint32_t>::max();

  // By default, an extension type can be implicitly handled as its storage type
  // for selections, equality testing and hashing.
  virtual uint32_t storage_equivalence() const { return kEquality | kSelection; }

@felipecrv WDYT?
@alamb @tustvold How do you handle extension types in Datafusion?

@alamb @tustvold How do you handle extension types in Datafusion?

TLDR is that we don't currently handle them
We have discussed how to do so in https://github.com/apache/arrow-datafusion/issues/7923 and https://github.com/apache/arrow-rs/issues/4472 but I would say we have not yet reached a consensus

I would suggest we perhaps need a more general semantic description of storage type equivalence.

Another way to handle this would be with a property on kernels (or even functions) instead of on ExtensionType:
class ARROW_EXPORT InputType {
 public:
  bool accepts_extension_types_if_storage_matches = false;
  // ...

    // ...
    filter_kernel->signature->in_types()[0].accepts_extension_types_if_storage_matches = true;

This would have the effect of disabling operation on extension arrays' storage by default, but allow enabling it per kernel or function. (The filter for accepted extension types could of course also be more articulated than a simple bool.)
I think this would put configurability where it needs to be since the specific categories selection, equality comparison, and arithmetic have differing levels of difficulty in support:

I can't think of a type which would not be selectable by operating on its storage unless the semantics of an array slot depended on its position in the array or on its neighbors somehow, which seems like something incompatible with arrow arrays anyway.
Equality comparison for extension types would have to be superset of equality comparison for their storage; if the storage slots are identical then whatever the extension type the corresponding slot in the extension array must be identical also. However it would be possible to define an extension of fixed size list wherein the semantic value of a slot is the sum of list elements from the storage's slot, in which case [1, 2] would be equal to [1, 2] but also equal to [3, 0].
Arithmetic is much more complex since even if a type supports addition it might not support multiplication and it might only support an addend of a specific other type (as timestamps can be added to durations but not to other timestamps).

Given that supporting various operations on the stored types is so nuanced, it seems we'd need to reserve handling of it for a system which can express those nuances - like kernel dispatch.

Another solution would be to formalize what we (de facto) have done thus far: allow casting to/from storage types, allowing operation on storage only when explicitly requested.

+1 on what @bkietz said: the casting behavior should be declared on the operation, not on the type itself.
Ideally we would have a declarative way of defining more elaborate type constraints on kernels and a decidable solver that dispatches to the appropriate implementation. If we implement that we have to write a checker that ensures there is always only one solution (ordering of declaration of the kernel implementations shouldn't matter).

Ok, say I have a IPv4 extension type backed by a UInt32 storage type. I want to declare that ordering on IPv4 extension values is the same as on the storage type (so that, e.g., sorting would work automatically). How does that work with the accepts_extension_types_if_storage_matches proposal?

Ok, say I have a IPv4 extension type backed by a UInt32 storage type. I want to declare that ordering on IPv4 extension values is the same as on the storage type (so that, e.g., sorting would work automatically). How does that work with the accepts_extension_types_if_storage_matches proposal?

The operation declares that it can receive int32 and all logical types defined in terms of int32 (like IPv4).
sort(array<int32>) can also work as sort(array<ipv4>), but sum(int32, int32) can't.
But to be fair, I would have to think more carefully about these things before accepting any magical implicit behavior. See how much pain the C implicit casts (that look inoffensive) have created in the world.

The operation declares that it can receive int32 and all logical types defined in terms of int32 (like IPv4).
sort(array<int32>) can also work as sort(array<ipv4>), but sum(int32, int32) can't.

Yes, but the problem here is another extension type based on  uint32 would also inherit the sort behavior even though it might want a different definition of ordering.

FWIW the design in arrow-rs currently is that extension types only exist in the metadata. The rationale being that by default kernels should treat them as the storage type. Imo it goes against the whole purpose of extension types if the only way to support them is for every kernel to be aware of all supported extension types.
That's not to say there can't be special kernels for certain extension types, potentially selected as part of a query engine's planning, but I can't help feeling if an array can't be correctly treated as its physical type, something is a bit off.
That's all to say I agree with coercing extension arrays to their physical types, arrow-rs goes even further by not having an extension array at all.
That all being said, that is just my view on this, and I suspect others will feel differently

Mark, to be addressed later

I think this conversation needs to move to the mailing list. I'll open a thread with a summary

https://lists.apache.org/thread/2j61nrod7x0s5vjhc6q9tlj898drz7rn

I think another problem it's that maybe it's hard to define some logic in extension type without or even with these casts.
For example, if I want to define a "cast_extension_to_string", I cannot add my logic to the MetaFunction "Cast", do we have some solving for this?


Error evaluating "env(AUTH_GITHUB_CLIENT_ID)": environment variable AUTH_GITHUB_CLIENT_ID is unset.

Describe the bug
When I run "npx supabase start" I get the error message:
Error evaluating "env(AUTH_GITHUB_CLIENT_ID)": environment variable AUTH_GITHUB_CLIENT_ID is unset.
Try rerunning the command with --debug to troubleshoot the error.
When I run "npx supabase start --debug" I get the same error:
Error evaluating "env(AUTH_GITHUB_CLIENT_ID)": environment variable AUTH_GITHUB_CLIENT_ID is unset.
I've followed this doc to add the variables and when I run "npx supabase secrets list" as the doc suggests, I can see that AUTH_GITHUB_CLIENT_ID is there. And I have a local ".env" and ".env.local" file with the variable set.
What am I missing?
Expected behavior
I want to be able to run supabase in docker
System information
Rerun the failing command with --create-ticket flag.

Ticket ID: c7835273637144bf897af2f1e3a21ba2
Version of OS: Windows 10
Version of CLI: v1.187.10
Version of Docker: v4.33.1
Versions of services:
SERVICE IMAGE      │      LOCAL       │ LINKED
─────────────────────────┼──────────────────┼─────────
supabase/postgres      │ <IP_ADDRESS>        │ -
supabase/gotrue        │ v2.151.0         │ -
postgrest/postgrest    │ v12.2.0          │ -
supabase/realtime      │ v2.29.15         │ -
supabase/storage-api   │ v1.0.6           │ -
supabase/edge-runtime  │ v1.55.0          │ -
supabase/studio        │ 20240729-ce42139 │ -
supabase/postgres-meta │ v0.83.2          │ -
supabase/logflare      │ 1.4.0            │ -
supabase/supavisor     │ 1.1.56           │ -

It's most likely due to wrong config.toml. Can you reinitialise with supabase init --force?

I am experiencing the same issue. Above solution isn't working either.

It's most likely due to wrong config.toml. Can you reinitialise with supabase init --force?

I tried moving around the env file, renaming, and the only thing that was working was GO_TRUE_ENV=blablabla supabase start on start, status, stop and everything.
However, that gets annoying pretty quickly. The correct solution and what I was doing wrong is my env file wasn't in the right place.
The correct should be:
folder
— ./supabase
— env.local

@pedroaquinoo could you give beta release a try? it could be related to a recent bug fix https://github.com/supabase/cli/issues/2772
npx supabase@beta start

Your local files look correct
.
├── supabase/config.toml
└── .env.local

Within .env.local you can set AUTH_GITHUB_CLIENT_ID or any other env declared in config.toml.


iso failed to install for ublue silverblue main

 this says it all

I've seen this a few times, can you attach the anaconda log? https://docs.fedoraproject.org/en-US/quick-docs/anaconda/anaconda_logging/

Found the issue (or at least a similar error), the machine needs to be on the network and if it's not it'll put this message up, I'll add this to the docs.

I got the same error. I'm trying the ISO via Boxes and the VM seems to be on the network via NAT?

This is a common issue with the github container registry and isn't necessarily a bug that's intrinsic what we're doing with the netinstaller. I get it frequently when testing in a VM, and this is unlikely to change until anaconda adds the ability to retry image pulls and/or ublue-os moves images to a more reliable registry host.

I've just experienced the same error installing on hardware, trying kinoite-nvidia:38, will be trying another one now.
Using ISO v1.2.1 and connected to a good wifi signal

I've just experienced the same error installing on hardware, trying kinoite-nvidia:38, will be trying another one now. Using ISO v1.2.1 and connected to a good wifi signal PS: I was trying to break the rules by installing on a partition, to later dual boot, but I don't think this signature is related to that

Apparently I was wrong or I had some issues with my network.

I tried again, and exit the network connection unconnected, to finish other things and the password kept popping asking to fill again, haven't happened before doing the same thing. Just exited and in the next time:
I waited to make sure the network was connected, then I formatted everything, and the installation was successful.

Not sure what happened, but if this is the expected error, it could be on the documentation, saying "if this then that" with common errors, for those stubborn users or regular one's haha

this one is fixed


Log number of rounds in block proposal

Motivation
Logging some metrics from our list
Proposal
Implementing number of rounds in block proposals Histogram metric
Test Plan
Ran validator locally, ran a benchmark against it, and saw metric properly logged:

Current dependencies on/for this PR:

main

PR #1138

PR #1139   👈

This comment was auto-generated by Graphite.

Merge activity

Oct 25, 11:42 AM: @andresilva91 started a stack merge that includes this pull request via Graphite.


Fix build failure from issue #23

This is the code I changed to fix #23

Great! Thank you for the solution to that problem!