V2: The validate general method

Pydantic V2 will do a massively better job of validating arbitrary objects.
To accomplish this without many methods, we should provide one function which can:

be used as a decorator on a function to validate it's argument, and optionally return type
be used as a decorator on dataclass, NamedTuple, TypedDict
be used to create a "validated" version of anything, e.g. ValidatedTuple = validate(tuple[int, int, int])

With this, the pydantic version of the dataclass decorator, will just become effectively:
def dataclass(*args, **kwargs):
    return validate(dataclasses.dataclass(*args, **kwargs))

Dataclasses need work (#4670), but validation and generate validation schemas for the rest of these types should already work.

So usage would be
from pydantic import validate

@validate(...config)
def my_method(...):
   ...

@validate(...config)
@dataclass
class MyDataclass:
   ...

@validate(...config)
class MyTypeDict(TypedDict):
   ...

Main question: How do we define validators, do we continue to extract them as methods, or do we let them be provided as kwargs to validate, or both?

Is this issue still open? if so I was wondering if it would be a reasonable first contribution for me and my partner @smhavens. thanks!

I'm afraid this is probably quite a challenging first task.
How about something like #4675? It's still pretty hard and complicated, but not as wide ranging as this.

Q: Would the validate API do more than raise exceptions? Would it try to parse/coerce objects as parse_obj_as (eg: parse_obj_as(str, 1) => "1") does now?

(added a few more examples in the above usage example)
So the question is, what does validate return.
Well, it has to depend on what it's called with:

if it's used as a decorator on a dataclass, it needs to return a valid dataclass, with a custom __init__ method
similar if it's used as a decorator on a NamedTuple or TypedDict
if it's used as as decorator on a function, it can simply return another function - this is the easiest case
if it's called with a Union, I'm not sure if we can create something that looks like a valid typing.Union, otherwise it should just return a function
if it's called on a tuple, like validate(tuple[int, int, int]), hopefully we can create a tuple subclass, same for list and dict etc.
some things can't be subclassed, e.g. validate(None), in this case I guess like Union we return a new function

In all these cases, we should hopefully attach enough information for the following:

json_schema(validate(...)) - generate JSON Schema from the return type
serialize_python(validate(...)(...)) - serialize the result of running validation on the return type - the equivalent of my_model.dict()/my_model.model_dict()
serialize_json(validate(...)(...)) - json serialize the result of running validation on the return type - the equivalent of my_model.json()/my_model.model_json()

For non-models we currently support or plan to support two approaches:
from typing import Annotated
from annotated_types import Predicate
from pydantic import Field

NonNegativeInt = Annotated[int, Field(ge=0)]
EvenInt = Annotated[int, Predicate(lambda x: x % 2 == 0)]

The first one already works with @validate_args (a real world use case of non-model validations/constraints like this).
So I think we should make validate something like:
from functools import wraps
import inspect
from typing import Annotated, Any, TypeVar

T = TypeVar("T")

def validate(__type_or_func: T, *args: Any, **kwargs: Any) -> T:
    if inspect.isfunction(__type_or_func) or inspect.ismethod(__type_or_func):
        @wraps(__type_or_func)
        def wrapped(*args: Any, **kwargs: Any) -> Any:
            # do some validation
            return __type_or_func(*args, **kwargs)
        return wrapped  # type: ignore
    else:
        return Annotated[__type_or_func, "some metadata"]  # type: ignore

# tests
from dataclasses import dataclass
from typing import  Literal, TypedDict
from pydantic import BaseModel

@validate
def my_func(a: int) -> int:
    return a

_1: int = my_func(1)

@validate
@dataclass
class Foo:
    a: int

_2: Foo = Foo(123)

@validate
class MyDict(TypedDict):
    a: int

_3: MyDict = {"a": 123}
_4: MyDict = MyDict(a=123)

ValidatedTuple = validate(tuple[int, int, int])
ValidatedIntStr = validate(int | str)

_5: ValidatedTuple = (1, 2, 3)
_6: ValidatedTuple = ValidatedTuple([1, 2, 3])
_7: ValidatedIntStr = 1
_8: ValidatedIntStr = "1"

class Cat(BaseModel):
    pet_type: Literal['cat']

class Dog(BaseModel):
    pet_type: Literal['dig']

ValidatedPet = validate(Cat | Dog, descriminator='pet_name')

_9: ValidatedPet = Cat(pet_type="cat")

This doesn't seem to work with unions. I think Pylance special cases unions because the result is not a type, it's some sort of "special form". We could just say you need to do ValidatedPet = Annotated[Cat | Dog, pydantic.DiscriminatedUnion(discriminator="pet_type")]. This sounds pretty reasonable given that discriminated unions are a somewhat complex use case.
This also does not make TypedDict.__init__ do validation and such. IMO I think we should either make it explicit that we are returning a thing which is not the original thing but instead a validator for it (validate(__thing: T) -> Validated[T] where Validated[T] ~= Callable[..., T]) or have two functions, one to add the metadata necessary for validation (which is enough for the type to be used in an already validated context like a field of a BaseModel, a function argument with @validate_arguments, a parameter in a FastAPI endpoint, etc.) and another to either perform the validation or create a Validated[T] which is not the same type as the original type.

I agree with most of your examples.
We should definitely make it explicit that we're return a new thing, specifically an instance of Validate
With that a user could do
validate_pet = Validate(Cat | Dog, descriminator='pet_name')

cat: Cat = validate_pet({'pet_type': 'cat'})
validate_pet.whatever_we_call_to_json(cat)

With that, the general usage would be:

Validate creates an instance of validate from __init__ - very traditional
validate is used as a decorator - it returns a function which in turn get's called with something and returns an instance of Validate

On the point of how to define validators, we should support:

BeforeValidator, AfterValidator, WrapValidator - as arguments to Annotated
PlainValidator - which can be used as an argument to Annotated, but actually ignores the type annotation in Annotated - the function is entirely responsible for validation and returning the right thing
Predicate which is just an alias to (I guess) AfterValidator
On dataclasses, named tuples, and typeddicts, we should support validators defined using the validator decorate as they are on BaseModel
we should support some kind of sequence or dict of validators as an argument to Validate or validator
we could also (possibly instead of 5.) all validators to be defined in Config which would be a bit less flat to define, but would be more versatile

WDYT?

validate is used as a decorator - it returns a function which in turn get's called with something and returns an instance of Validate

I think this would be a bit problematic: it would erase the original type and using an instance of Validate as a type would not be valid. Let me know if this is what you were thinking:
from dataclasses import dataclass
from typing import Annotated, Any, Callable, Generic, TypeVar, ParamSpec, reveal_type

P = ParamSpec("P")
T = TypeVar("T")

class Validate(Generic[P, T]):
    def __init__(self, __thing: Callable[P, T], *args: Any, **kwargs: Any) -> None:
        ...

    def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T:
        ...

def validate(__thing: Callable[P, T], *args: Any, **kwargs: Any) -> Validate[P, T]:
    return Annotated[__thing, "metadata"]   # type: ignore

@validate
@dataclass
class MyCls:
    a: int

reveal_type(MyCls(a=1))  # MyCls
reveal_type(MyCls)  # Validate[(*args: Any, **kwargs: Any), MyCls]

# Expected type expression but received "Validate[(*args: Any, **kwargs: Any), MyCls]"
def foo(thing: MyCls) -> None:
    pass

So I don't think @validate should return an instance of Validate, it should attach enough metadata to create that:
@validated(after=lambda x: x.a > 2)
@dataclass
class MyCls:
    a: int

my_cls_validator = Validate(MyCls)

reveal_type(MyCls(a=1))  # MyCls
reveal_type(MyCls)  # type[MyCls]

def foo(thing: MyCls) -> None:
    pass

foo(my_cls_validator({"a": "3"}))
my_cls_validator({"a": "1"})  # fails
reveal_type(my_cls_validator({"a": "1"})  # MyCls

But if used in a validated context, you would never need to create a Validate instance:
@app.get("/foo")
def endpoint(thing: MyCls):  # FastAPI creates the Validate instance internally
   ...

class MyModel(BaseModel):
  field: MyCls  # MyCls' validation logic is applied to this field

What semantics do we expect Validator to have with respect to forward references? Let's look at some simple cases:
from typing import List

from pydantic import BaseModel

IntList = List[int]
OuterList = List["IntList"]

class MyModel(BaseModel):
    x: OuterList

This works on both V1 and V2. It works because MyModel assumes that any forward references it encounters while recursively parsing it's annotations exist either in it's local namespace or it's global namespace. There are lots of situations where this breaks down (models defined in nested functions, forward references imported from another module, etc.). But in general this makes sense.
Take the same situation with Validator:
from typing import List

from pydantic import Validator

IntList = List[int]
OuterList = List["IntList"]

Validator(OuterList)

I think in this case it makes sense for it to work the same as a model. But I expect Validator is going to be used quite differently from a model:
IntList = List[int]
OuterList = List["IntList"]

async def endpoint(body: OuterList): ...

In this case I'd expect Validator to get called from somewhere inside the web framework. So the globals or locals from where it is called are pretty much meaningless. In other words: I think creating models dynamically is generally unnecessary and uncommon but creating a Validator dynamically might be pretty common. So I think that Validator is much closer to create_model than it is to BaseModel.  And indeed create_model does not work here:
from typing import List

from pydantic import create_model

IntList = List[int]
OuterList = List["IntList"]

MyModel = create_model("MyModel", x=(OuterList, ...))
MyModel.update_forward_refs()

If you pass in __module__ to create_model it does work:
from typing import List

from pydantic import create_model

IntList = List[int]
OuterList = List["IntList"]

MyModel = create_model("MyModel", __module__=__name__, x=(OuterList, ...))
MyModel.update_forward_refs()

So I think what we should do for Validator is emulate create_model, not BaseModel. It will look something like:
from typing import List

from pydantic import Validator

IntList = List[int]
OuterList = List["IntList"]

Validator(OuterList, globalns=globals(), localns=locals())

Validator(OuterList, globalns=globals(), localns=locals())

I think if, in practice, there is a significant fraction of usages of Validator where globalns=globals() and localns=locals() are the values that should be used, I'd be inclined to treat those values as defaults in case users (and not just frameworks) do end up wanting to use Validator in their own code.
As a pydantic user I have frequently found pydantic.tools.parse_obj_as (from v1) useful, and would like to retain that functionality in v2. I was under the impression that Validator was meant, at least in part, to replace parse_obj_as in a more reusable manner, and considering parse_obj_as literally just creates a temp-model with a field of the provided type, I think there may be a category of use cases where it would be helpful to use the same/"standard" namespace-inference behavior that is used when building a BaseModel subclass. So unless there is some challenge with that OR if there is a plan for a different API to replace parse_obj_as (perhaps wrapping Validator), I would be inclined to try to match the BaseModel namespace handling by default.
(As soon as I see APIs where I am forced to pass a namespace in, my eyes glaze over and I assume that I will need to put in more effort to understand what is required than I want to. On the other hand, if I see APIs where I have the option to pass in a namespace but it "just works" if I don't, I proceed with much less fear.)
Either way, I agree that it makes sense to allow namespace overrides for exactly the reasons indicated above.

I haven't used parse_obj_as much but I just tried it on the 1.10.X-fixes branch:
from typing import List

from pydantic import parse_obj_as

IntList = List[int]
OuterList = List["IntList"]

parse_obj_as(OuterList, [[1]])

pydantic.errors.ConfigError: field "__root__" not yet prepared so type is still a ForwardRef, you might need to call ParsingModel[List[ForwardRef('IntList')]].update_forward_refs()

So this doesn't seem to work at all with parse_obj_as 😞

@dmontagu  pointed out that we can use sys._getframe(1).f_globals to get the globals of the frame where we were called from. While this is not the same as the globals of the frame where the forward reference is bound or even where it is defined, it is often the same, so we're going to use that as a first step at least 😄

Per discussion on #5235 we might table the Annotated[..., PlainValidator(...)] feature until after the initial V2 release since it is not strictly necessary to replace deprecated functionality as long as we implement #5246

I think what we have now with TypeAdapter is good enough for now. We can circle back once we have feedback on that.


Make changes on a new branch in "Contributing to projects"

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
Contributing to projects (https://docs.github.com/en/get-started/quickstart/contributing-to-projects)
What part(s) of the article would you like to see updated?
The article describes a workflow of forking a project, cloning it locally, making changes, pushing them to the user's fork, and opening a pull request. This is clearly explained but I think could be improved by guiding the user to create a new branch after cloning, and making the changes on that branch.
As it is currently written, a new user following the steps in the current version of the Contributing to projects guide would be pushing their changes to the default branch of their fork, and making the pull request from there.
In my view, it would be better practice to make changes on a new branch. It would avoid potential difficulties further down the line, e.g. when the user wants to suggest other changes before the changes they first made (on the default branch of their fork) have been merged upstream. It seems to fit better with GitHub Flow too.
Additional information
I am suggesting a change to this specific section of the guide: Making and pushing changes.
Happy to make a PR to address this if you agree that the steps in the guide should be modified.

@tobyhodges - thanks for raising this point. You're right to point out the discrepancy between this article and GitHub Flow. Looking at the article, I can see that it's overdue a review generally, and I will check that it is on our internal list of articles to refresh.
In the meantime, your suggestion to bring the article inline with the GitHub Flow is a great idea. The existing sections are intended to be quite brief, so I suggest that we add a new heading of "Creating a branch to work on", before "Making and pushing changes".


Buttons with 'Text scrolling effect' are (sometimes) broke with HA 2024.09

Describe the bug
If Text scrolling effect is enabled for the button it sometimes starts to scroll even if it isn't needed. F5 helps in that case.
I'm using Button Card in a 2 Column Section Dashboard.
The Problem started with HA 2024.09
To Reproduce
Create a Button with enabled Text scrolling effect and reload the dashboard till it starts to scroll.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshot

Informations (please complete the following information):

OS: Windows, Android, iOS
Browser/App: Edge, Chrome, Safari
Bubble Card version: 2.2.4
Home Assistant version: 2024.09

Yes, I have same problem after update 2024.9 but only in mobile app in both Android and iOS, in web browser it's ok.

I'm seeing the same issue, not sure if it helps to debug the issue but for me it only appeared when I enabled the conditional visibility for a section on HA.
I have 3 sections, the first being a vertical menu, and the other 2 housing bubble buttons - as soon as I enable the conditional visibility for the first section so that it doesn't appear on mobile it causes buttons in the remaining 2 sections to scroll their text (even when not needed).
I guess that whatever method is used to hide the first sections screws up the width calculation for bubble and it thinks the screen is not wide enough?

Same problem here while using the companion app on Android. Note that it only occurs on Bubblecards that have sub buttons.

Hi! Is that issue still happening? I was unable to reproduce it, it's possible that I've missed an HA update.
🤞

Not really, its happening when the page is not fully loaded, but after I think 2024.9.2 I don't have this problem anymore.

I guess that I can close this issue then 🍻


feat: scaffold fsnetman CLI with ES6 support

Description
This pull request changes the following:

scaffold nodeJS CLI with basic command structure with es6 support
added winston logger support
structured code to support commands with subcommands

❯ fsnetman
Usage: fsnetman <command> [options]
Commands:
  fsnetman init     Initialize local environment
  fsnetman cluster  Manager FST cluster
Options:
  -h, --help     Show help                                             [boolean]
  -v, --version  Show version number                                   [boolean]
Select a command

Related Issues

Closes #423

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Deploy data browser to cgl-dev environment via CGL GitLab

HI @hannes-ucsc looks like this one is still failing as well.
0.4.8 python-dateutil-2.8.1 rsa-3.4.2 s3transfer-0.3.3 six-1.15.0 urllib3-1.25.9
$ export BUCKET=s3://dev.explore.singlecell.gi.ucsc.edu
$ if [ "$MAINTENANCE" = "true" ];then export SRCDIR=maintenance/; else export SRCDIR=dist/; fi
$ aws s3 sync --acl public-read $SRCDIR $BUCKET --delete
upload failed: dist/explore/3rdpartylicenses.txt to s3://dev.explore.singlecell.gi.ucsc.edu/explore/3rdpartylicenses.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
https://gitlab.dev.singlecell.gi.ucsc.edu/clever-canary/data-browser/-/jobs/3832

See https://github.com/humancellatlas/data-portal/issues/698#issuecomment-648323670

Working now.


Can you provide Data and Pretrained models？

Thank you for your interest in my method and its performance. To reproduce the results, I recommend using the pretrained model and dataset provided in the GitHub repository. You can find the necessary resources there for replicating the method. Let me know if you need any further assistance.

Thanks for your attention. I will update related instructions in the next few weeks.

Any progress so far?


Dependency update is workspace agnostic

Steps to reproduce

Open VSCode

without a workspace,
or with any non C# workspace.

We expect the C# extension to do nothing.
But what actually happens is:

VSCode output window for "C#" opens.
Dependency check and subsequent installation is performed

When working with a rust or js project, this is but a mildly infuriating annoyance, on a Windows machine with dotnet installed.
Installing C# dependencies...
Platform: win32, x86_64

Finished

The real problem arises when working with a Linux system where no dotnet is installed. The C# extension attempts to start, using up an unreasonable amount of CPU time and displaying a very much annoying and inappropriate error message. That it failed to locate the dotnet sdk.
The C# extension is not required in an empty, rust, tex, js or any other non C# workspace and thus should - according to the VSCode extension guidelines not install unrelated software, or even initialize anything at all. That should be delayed until the extension is actually required.
Why is this an issue?
The user is unable to prevent the extension from acting. Disabling the extension is really an option, because we need the extension in other projects. Even the "disable in workspace" option does not solve the problem, because by the time we have navigated to the settings, the extension is already doing its thing.
Solution
Delay loading the extension dependencies until required by the workspace. Believe in workspaces.

@ProphetLamb Our extension limits activation based on the activation events that are declared in our package.json.
https://github.com/OmniSharp/omnisharp-vscode/blob/65c110a03b0ca2f97a897d71996e46f30f5235bb/package.json#L544-L564
The Log (Extension Host) in the VS Code Output pane should list the reason that the ms-dotnettools.csharp extension was activated.
[2022-02-25 10:40:50.170] [exthost] [info] ExtensionService#_doActivateExtension ms-dotnettools.csharp, startup: false, activationEvent: 'onLanguage:csharp'

Perhaps you can identify which events are triggering the activation in your workspaces.

@JoeRobich Thanks for the info on where to look for the activation events. Excerpt from the log
[...]
[2022-02-28 10:40:08.560] [exthost] [info] ExtensionService#_doActivateExtension ms-vscode.test-adapter-converter, startup: true, activationEvent: '*', root cause: hbenl.vscode-test-explorer
[2022-02-28 10:40:08.563] [exthost] [info] ExtensionService#_doActivateExtension ms-dotnettools.csharp, startup: true, activationEvent: '*', root cause: josefpihrt-vscode.roslynator

[...]

[2022-02-28 10:40:10.917] [exthost] [info] ExtensionService#_doActivateExtension hbenl.vscode-test-explorer, startup: true, activationEvent: '*', root cause: Swellaby.vscode-rust-test-adapter
[2022-02-28 10:40:10.953] [exthost] [info] ExtensionService#_doActivateExtension josefpihrt-vscode.roslynator, startup: true, activationEvent: '*'

The way I am reading the log. The log implies that the roslynator analyzer extension caused ms-dotnettools to start. Now the question is why did  josefpihrt-vscode.roslynator start. That would then be an issue for the mentioned extension.
Am I reading this correctly?

That is correct. Looks like the extension launches whenever VS Code does. See https://github.com/JosefPihrt/Roslynator/blob/master/src/VisualStudioCode/package/package.json#L37-L39
Closing this out as it is unrelated to our extension.


Suggestion: Upload images to server data folder instead of embedding them in the chat message

Heya
Totally loving this module, but it has one big disadvantage:
As far as i've seen it, you're embedding images into the chat messages instead of uploading them to the server. This results in possibly drastically increasing the world size, specifically the chat.db file.
This is actually kind of a problem for the server, especially for those at the lower end. Related issue on the FVTT gitlab:
https://gitlab.com/foundrynet/foundryvtt/-/issues/3445
My suggestion:
Upload the images to the server and only link to the images there, instead of embedding them in the html. (either let the user set an upload path and/or default to the module folder. Second one has the disadvantage of stuff disappearing on update, but since this module is kinda finished, this shouldn't be to big of a problem if the user is warned of this beforehand)
As for naming these files i'd have two ideas:

just increase the number (check in the folder for biggest number and increase it, do not rely on a setting, cause of different worlds possibly sharing the same path)
hash the original file name (or the content) into some name.

Oh. Thanks for the suggestion, I tried to avoid cluttering the server with random images. But it looks like there is no other option.

The current way does clutter it as well, just not as obvious :sweat_smile:  (as well as clutter client side while playing)
Just make sure the user knows that you're uploading stuff (hint in description/path selection/whatever) and you're fine imo.


gaze tracking with poser

Do you think it would be possible to expand the poser case to do rudimentary gaze tracking?

What I was thinking about was roughly guessing the position on the screen a person is looking at from the webcam image, similar to the service offered by https://xlabsgaze.com.
My specific use case is, that I would like to automatically focus the window I am looking at. The accuracy for this does not need to be very high (10-20cm should be enough), but I do not want to involve additional cameras, other than the webcam already set up.

While the head might stay still, the pupil will look in different directions however. So what I was thinking was, using the poser network to locate the eyes, then feed a high resolution part of the image cropped to the area around the eyes into a network, together with the overall position and direction of the head, as determined by the poser network and try to correlate it with a position on the screen. To train the network one would capture video of the person in front of the camera while asking them to follow a moving dot on screen with their eyes.


Enhancement Request: add an user drop-down menu

Prerequisites
Please answer the following questions for yourself before submitting an issue.

[x] I am running the latest version
[x] I checked the documentation and found no answer
[x] I checked to make sure that this issue has not already been filed
[x] I'm reporting the issue to the correct repository (for multi-repository projects)

Expected Behavior
Clicking on the user icon at top-right should show a drop-down menu, with several links:

Profile
Settings
separator
Sign out

(keep profile linking to current page, the rest don't need to work)
Current Behavior
Icon links to a page

Hello @mariusa,
Thank you for using our products, we appreciate your contribution and the intention to help us to make our product better.
I just make a test to see how it looks:

We'll integrate it into the next update.
All the best,
Stefan


Searching Algorithms!

You can contribute the following searching algorithms(in any programming language):

[ ] Binary Search
[ ] Linear Search

Fork this repo(give it a star, if you want) and create a Pull Request.

Added Binary Search in c and c++ #11

Adding the Binary and Linear Search Codes in java #18

Added Linear & Binary Searching in Python #48 @bhaveshlohana.

Added a Binary Search in GOlang #59

Hey @bhaveshlohana I will write in Javascript. Assign it to me.

@bhaveshlohana
Added Linear Search In PHP an #85

Added Binary Search in Javascript #84

adding linear search in cpp

assign it to me i can add linear search and binary search in java c++ python

I have added program for linear search using "flag" and Binary search using Recursion.

I have added the implementation of Linear Search using JavaScript.

I have implemented Binary Search in C#

hey can i contribute on this

I have added Fibonacci Search Algorithm in python

Please review my PR #617 for hacktober fest. I have implemented Linear Search in java. Thank you.

Added Binary Search in Kotlin #707

Please review my PR ,i Added Binary Search in JS #710


scripts: print Does Not Properly Substitute the 'BuildRoot' and 'HOME' Environment Variables

The printenv script in scripts/printenv should substitute the BuildRoot and HOME environment variables as follows:
================================================================================
Project build environment set to:
  Build Root            = ${HOME}/src/git/github.com/nuovations/nuovations-build-make/examples
  Make Flags            = --no-print-directory -r -R -I ${BuildRoot}/third_party/nuovations-build-make/repo/make -I ${BuildRoot}/build/make
  Global Environment    = <None>
  Local Environment     = <None>
================================================================================

rather than:
================================================================================
Project build environment set to:
  Build Root            = /home/gerickson/src/git/github.com/nuovations/nuovations-build-make/examples
  Make Flags            = --no-print-directory -r -R -I /home/gerickson/src/git/github.com/nuovations/nuovations-build-make/examples/third_party/nuovations-build-make/repo/make -I /home/gerickson/src/git/github.com/nuovations/nuovations-build-make/examples/build/make
  Global Environment    = <None>
  Local Environment     = <None>
================================================================================

in addition, if neither are set, it should not err out with:
sed: -e expression #1, char 0: no previous regular expression

Fix both of these issues.

Fixed with #24.


[BUG] [GPU Error Bug] "SELECT -2613 FROM  HAVING ( NOT BETWEEN  AND MAX())" brings Error

What happened:
"SELECT -2613 FROM <table> HAVING (<TIMESTAMP> NOT BETWEEN <TIMESTAMP>  AND MAX(<TIMESTAMP>)) " brings error, when using GPU.
However it is able to output result, when using CPU.
What you expected to happen:
It will not bring error, when using GPU.
Minimal Complete Verifiable Example:
import pandas as pd
import dask.dataframe as dd
from dask_sql import Context

c = Context()

df0 = pd.DataFrame({
    'c0': ['CAST((12998) AS SMALLINT)'],
})
t0 = dd.from_pandas(df0, npartitions=1)
c.create_table('t0', t0, gpu=False)
c.create_table('t0_gpu', t0, gpu=True)

print('Result1:')
result1= c.sql("SELECT -2613 FROM t0 HAVING (TIMESTAMP '1991-02-28 13:42:12' NOT BETWEEN TIMESTAMP '1985-12-14 23:59:41' AND MAX(TIMESTAMP '2006-08-05 07:29:26'))").compute()
print(result1)

print('Result2:')
result2= c.sql("SELECT -2613 FROM t0_gpu HAVING (TIMESTAMP '1991-02-28 13:42:12' NOT BETWEEN TIMESTAMP '1985-12-14 23:59:41' AND MAX(TIMESTAMP '2006-08-05 07:29:26'))").compute()
print(result2)

Result:
INFO:numba.cuda.cudadrv.driver:init
Result1:
Empty DataFrame
Columns: [Int64(-2613)]
Index: []
Result2:
Traceback (most recent call last):
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/utils.py", line 193, in raise_on_meta_error
    yield
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/core.py", line 6470, in elemwise
    meta = partial_by_order(*parts, function=op, other=other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/utils.py", line 1327, in partial_by_order
    return function(*args2, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/indexed_frame.py", line 3375, in __array_ufunc__
    ret = super().__array_ufunc__(ufunc, method, *inputs, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/frame.py", line 1761, in __array_ufunc__
    return _array_ufunc(self, ufunc, method, inputs, kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/utils/utils.py", line 93, in _array_ufunc
    return getattr(obj, op)(other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/mixins/mixin_factory.py", line 11, in wrapper
    return method(self, *args1, *args2, **kwargs1, **kwargs2)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/indexed_frame.py", line 3350, in _binaryop
    ColumnAccessor(type(self)._colwise_binop(operands, op)),
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/nvtx/nvtx.py", line 101, in inner
    result = func(*args, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/frame.py", line 1750, in _colwise_binop
    else getattr(operator, fn)(left_column, right_column)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/mixins/mixin_factory.py", line 11, in wrapper
    return method(self, *args1, *args2, **kwargs1, **kwargs2)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/column/datetime.py", line 405, in _binaryop
    other = self._wrap_binop_normalization(other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/column/column.py", line 606, in _wrap_binop_normalization
    other = other.dtype.type(other.item())
ValueError: Converting an integer to a NumPy datetime requires a specified unit

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/tmp/bug19/bug19.py", line 19, in <module>
    result2= c.sql("SELECT -2613 FROM t0_gpu HAVING (TIMESTAMP '1991-02-28 13:42:12' NOT BETWEEN TIMESTAMP '1985-12-14 23:59:41' AND MAX(TIMESTAMP '2006-08-05 07:29:26'))").compute()
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/context.py", line 513, in sql
    return self._compute_table_from_rel(rel, return_futures)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/context.py", line 839, in _compute_table_from_rel
    dc = RelConverter.convert(rel, context=self)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/convert.py", line 61, in convert
    df = plugin_instance.convert(rel, context=context)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/logical/project.py", line 28, in convert
    (dc,) = self.assert_inputs(rel, 1, context)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/base.py", line 84, in assert_inputs
    return [RelConverter.convert(input_rel, context) for input_rel in input_rels]
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/base.py", line 84, in <listcomp>
    return [RelConverter.convert(input_rel, context) for input_rel in input_rels]
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/convert.py", line 61, in convert
    df = plugin_instance.convert(rel, context=context)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rel/logical/filter.py", line 65, in convert
    df_condition = RexConverter.convert(rel, condition, dc, context=context)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rex/convert.py", line 74, in convert
    df = plugin_instance.convert(rel, rex, dc, context=context)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rex/core/call.py", line 1129, in convert
    return operation(*operands, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rex/core/call.py", line 77, in __call__
    return self.f(*operands, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask_sql/physical/rex/core/call.py", line 140, in reduce
    return reduce(partial(self.operation, **kwargs), operands)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/core.py", line 617, in __array_ufunc__
    return elemwise(numpy_ufunc, *inputs, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/core.py", line 6469, in elemwise
    with raise_on_meta_error(funcname(op)):
  File "/opt/conda/envs/rapids/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/utils.py", line 214, in raise_on_meta_error
    raise ValueError(msg) from e
ValueError: Metadata inference failed in `greater`.

Original error is below:
------------------------
ValueError('Converting an integer to a NumPy datetime requires a specified unit')

Traceback:
---------
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/utils.py", line 193, in raise_on_meta_error
    yield
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/dataframe/core.py", line 6470, in elemwise
    meta = partial_by_order(*parts, function=op, other=other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/dask/utils.py", line 1327, in partial_by_order
    return function(*args2, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/indexed_frame.py", line 3375, in __array_ufunc__
    ret = super().__array_ufunc__(ufunc, method, *inputs, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/frame.py", line 1761, in __array_ufunc__
    return _array_ufunc(self, ufunc, method, inputs, kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/utils/utils.py", line 93, in _array_ufunc
    return getattr(obj, op)(other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/mixins/mixin_factory.py", line 11, in wrapper
    return method(self, *args1, *args2, **kwargs1, **kwargs2)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/indexed_frame.py", line 3350, in _binaryop
    ColumnAccessor(type(self)._colwise_binop(operands, op)),
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/nvtx/nvtx.py", line 101, in inner
    result = func(*args, **kwargs)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/frame.py", line 1750, in _colwise_binop
    else getattr(operator, fn)(left_column, right_column)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/mixins/mixin_factory.py", line 11, in wrapper
    return method(self, *args1, *args2, **kwargs1, **kwargs2)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/column/datetime.py", line 405, in _binaryop
    other = self._wrap_binop_normalization(other)
  File "/opt/conda/envs/rapids/lib/python3.10/site-packages/cudf/core/column/column.py", line 606, in _wrap_binop_normalization
    other = other.dtype.type(other.item())

Anything else we need to know?:
Environment:

dask-sql version: 2023.6.0
Python version: Python 3.10.11
Operating System: Ubuntu22.04
Install method (conda, pip, source): Docker deploy by https://hub.docker.com/layers/rapidsai/rapidsai-dev/23.06-cuda11.8-devel-ubuntu22.04-py3.10/images/sha256-cfbb61fdf7227b090a435a2e758114f3f1c31872ed8dbd96e5e564bb5fd184a7?context=explore

Thanks for filing @qwebug! In the past few months I haven't had as much capacity to be active on the issue tracker here so apologize in advance if many of the issues you've filed don't addressed right away, though we always invite external contributors if you have any interest in digging into this 😉 from your example, it's a little difficult to tell what in particular is causing the bug, but it does look like we seem to be passing an object that isn't supported into cuDF's datetime column mechanics.
I'd recommend trying to trim your example down a bit so it's more immediately obvious what the root cause here is. For example, I notice that the table in your example contains a SQL query - is this relevant to the failure you encountered? If not, it might make sense to use more trivial data here, i.e. ['a', 'b', 'c'] to quickly convey "this thing doesn't work on string data in general." It's also difficult to tell what part of the query causes things to break - do things work if we select a column instead of a scalar integer? Or if we choose a different type of scalar? Do things work if we include the MAX operation on one of the timestamps? I think if I were to rewrite your example, it'd probably look something like this (haven't tested any of this locally, purely an illustrative example):
import pandas as pd
from dask_sql import Context

c = Context()

df = pd.DataFrame({
    "a": list("abcde"),
})
c.create_table('df', df, gpu=True)

# this works!
res = c.sql("SELECT -2613 FROM df HAVING (TIMESTAMP '1991-02-28 13:42:12' NOT BETWEEN TIMESTAMP '1985-12-14 23:59:41' AND TIMESTAMP '2006-08-05 07:29:26')").compute()
# this doesn't work!
res = c.sql("SELECT -2613 FROM df HAVING (TIMESTAMP '1991-02-28 13:42:12' NOT BETWEEN TIMESTAMP '1985-12-14 23:59:41' AND MAX(TIMESTAMP '2006-08-05 07:29:26'))").compute()

Finally, I'm interested in if there's any additional context on how you encountered this issue (and the others you've filed)? Some of these queries seem like pretty carefully designed edge cases, which are great for unit testing even if they're sometimes difficult to find the bug in 😄

Dask-sql version 2024.3.0 has addressed this issue, and you can try again to confirm it.
Thanks for @qwebug!


Tweak 'bidirectional_promoter_lncRNA' term name

bidirectional_promoter_lncRNA (SO:0002185)
This term name suggests it's referring to the RNA product.
However, this is a child of 'lncRNA_gene' and the definition states it refers to a 'A non-coding locus' rather than the ncRNA product itself.
Can you change the name to "bidirectional_promoter_lncRNA_gene"? (which would also match the pattern of the other children of 'lncRNA_gene')
Thanks.

Hi @sjm41 ,
I agree with your assessment, bidirectional_promoter_lncRNA_gene does make more sense. However, this is a Gencode term (https://www.gencodegenes.org/pages/biotypes.html). The notes on adding this term are in Issue #408. While I don't feel comfortable changing the name to differ from Gencode, I have added the synonyms bidirectional_promoter_lncRNA_gene and 'bidirectional promoter lncRNA gene'. If you would like to discuss further the possibility of changing the name, please comment and I will reopen the issue.
Best,
Dave

Hi Dave - thanks for checking on this.
It's weird that Gencode biotypes don't clearly distinguish between 'RNA' and 'RNA gene' for this and a couple more examples.  Personally, I think SO should dictate the names and logic rather than Gencode!
Also, I notice that https://www.gencodegenes.org/pages/biotypes.html also says this:
lncRNA
Generic long non-coding RNA biotype that replaced the following biotypes: 3prime_overlapping_ncRNA, antisense, bidirectional_promoter_lncRNA, lincRNA, macro_lncRNA, non_coding, processed_transcript, sense_intronic and sense_overlapping.
So, sounds like Gencode aren't using this term anyway!

Hi @davidwsant / @egchr
I'd like to re-open this ticket, but don't seem to be able to do that myself.
I was just chatting with Jonathan Mudge, Project Leader at GENCODE.
He confirmed that GENCODE are no longer using 'bidirectional_promoter_lncRNA' as a biotype in their database, and he has no issue with SO changing the name of SO:0002185 to 'bidirectional_promoter_lncRNA_gene'. Can you go ahead and make that change please?
(Then, we should also add a new corresponding term under the ncRNA branch, which will be called 'bidirectional_promoter_lncRNA'! I will make a new ticket for that.)

@egchristensen As per my previous comment, we need to re-open (and then act on!) this ticket.  Can you re-open please?

Made the change to the term name.


Merge with gortc/stun

Fixes #10
The CI should be updated too.

Please take a look at the following points

[ ] LICENSE (I've used xor implementation and vendored hmac from go source)
[ ] AUTHORS (I've just appended authors from README to that file)

I think we don't need v2 or even v1, because current package version is v0.2.
So I propose to release v0.3.0 and then further adapt API if needed.

Regarding vendoring, here's an example we did earlier: https://github.com/pion/webrtc/tree/master/examples/vendor-wasm. It's a little different situation thought.
Anyway, this is looking great. This implementation is far superior to what we had before.

Everything looks great to me!
Would you prefer we move Contributors sections of README files into AUTHORS file? My motivation with that was to get people excited to see their name in the README file, when I was first starting out with Open Source that always excited me.
LICENSE wise I am happy as long as we don't require people to redistribute changes :) same goal as you here I really want to be 'Enterprise' friendly. Those users contribute a lot back (bug reports and driving excitement)

@backk

@ernado I say when you are ready lets merge across stun then ice and webrtc!
When it lands we can fix/confirm things as we go :)


Provide a mechanism to load dependencies from a separate file

It should be checked if it is possible to specify dependencies in a special file. Let's assume the following situation:

RootFolder

Dependencies.json

@{     Dependencies = @(@{File=%[Path]{ModuleRoot}%/Dependencies.json"}) }
The module loading process should identify the root folder first and afterwards it should load the dependencies. This way it is possible to specifiy the dependencies in the project repository and use it by an CI system.

Better idea: Provide a mechanism to merge module files (pse1). This way it is not necessary to implement a new dependency syntax. Furthermore parameters and set paths can be merged as well.

The function Import-EnvironmentModuleDescriptionFile can be used to load dependencies from a pse1 file without the need of a full module definition.

The pse1 file does now support a parameter named "MergeModules" that can be used to specify pse1 dependencies.


Fix it so that Reddit-hosted media URLs as well as third-party media

URLs are parsed correctly
Examples:
https://www.reddit.com/r/gifs/comments/7yvva0/peeling_off_the_background_to_show_off_my_final/.json
https://www.reddit.com/r/Rainmeter/comments/81wfgx/my_daft_punk_layout/.json

Thank you @guliyevemil1 !


Port PartitionIdentityActor

Ongoing effort for IdentityLookup here:
https://github.com/AsynkronIT/protoactor-go/pull/478
https://github.com/AsynkronIT/protoactor-dotnet/blob/dev/src/Proto.Cluster/Partition/PartitionIdentityActor.cs

I would like to work on this one

👍🏻 Great to hear!

Make sure to use the identity_lookup branch for both issues

Empty boilerplate for Go
https://github.com/AsynkronIT/protoactor-go/blob/identity_lookup/cluster/partition-identity/identity_actor.go

Done


openpgp: If possible, merge keys on import

Fixes https://github.com/keybase/client/issues/213

r? @oconnor663

lgtm


Redis: Option to use plain Strings instead of Hashes.

YCSB benchmark against Redis uses Hashes (HGET/HSET commands) instead of plain Redis String (GET/SET commands).
I think that it would be good to have an option to use Plain String because in some contexts performances differ if using plain String or Hashes.

closes #1129

Is there any progress after two years? Looking at the code, it's still using Hashes.

IIRC #1129 addresses this feature request? The quickest way to help get this issue solved is to review PRs.

Yes. I'm a new user of YCSB and I'm not familair with the issue the #1129 author is talking about and block on.

This was part of some work done with a project ended long ago, I'm not sure I can help too much on this.

Yes. I'm a new user of YCSB and I'm not familair with the issue the #1129 author is talking about and block on.

So #1129 store the object as a single JSON object represented as a string blob. As far as I remember the problem with this approach is that you cannot selectively delete one single fields without reading (and storing back) the full object. AFAIR this violates the semantic of some YCSB commands.

I assume Memcached also has this problem? How does that platform solve the issue?


[BEAM-13459] Cache artifacts across job runs on python+dataflow

This adds support for caching artifacts across job runs to the python dataflow runner.  The method it uses is slightly different than the JVM uses to work around some limitations to the python container boot code.  Specifically:

Certain artifacts must have a specific name (dataflow_python_sdk.tar, pipeline.pb, etc)
All artifacts for a job must be in the same "directory" on GCS

To work around this, we stage artifacts in a two step process now (gated by a pipeline flag, default value TBD?):

First upload the artifact to a common cache location (artifact_cache) directly under the staging directory.  In this location the artifact is named using its sha256 hash.  If the file already exists, this step is skipped (which is the slowest step)
Once uploaded (either because it was a cache hit, or just uploaded), perform a GCS copy operation to "copy" the file from its cached location into where it should be in the job's unique staging directory.  This operation is fast since its a GCS->GCS copy in the same bucket.

Ideally we wouldn't need these workarounds, but this works well for now.  If the boot code is ever enhanced to fix the above two issues, it'd be easy to change this to use a new caching method.
Just choosing some reviewers based on who's last changed code here:
R: @ihji @tvalentyn

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[x] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[x] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Run Portable_Python PreCommit

Thanks a lot @steveniemitz, haven't taken a closer look yet, but cc: @AnandInguva who is also looking in the pipeline dependency staging functionality.

@tvalentyn a quick question. Do we delete artifacts that are cached after a certain period (eg: 1 month)?

Users can set expiration policies on their buckets if they want, but there's nothing built-in.  Particularly with streaming jobs expiration can be dangerous because the job can always outlive the artifact expiration, if that happens the job will fail the next time it needs an artifact (autoscaling, worker failure, etc).

All artifacts for a job must be in the same "directory" on GCS

For my eductaion, where is this requirement coming from?

All artifacts for a job must be in the same "directory" on GCS

For my eductaion, where is this requirement coming from?

The python container boot code (the go binary) ensures it.

Thanks. Please don't squash reviewed and unreviewed commits before the review has completed, see: https://beam.apache.org/contribute/#make-the-reviewers-job-easier.

It's always a gamble that the person doing the merge will actually squash it :P

Looks like this change makes it into 2.36.0 release cut, please update CHANGES.MD


Second Variable Speed Pump Not Showing Power Under Sensors

I have two variable speed pumps, and I noticed that the second pump is not showing power.  All of the other controls are showing for the second pump.  I upgraded to .71 and the lights work great.  I unwinterized the second pump today.  I thought perhaps it was because I've had the breaker off on the second pump, as it was winterized. So I shutdown the system, and powered off the omnilogic controller thinking perhaps that we fix the issue.  I don't see any difference.  I've rebooted the HA Yellow device that I use.  In the iphone app both pumps have the Diagnostics and power showing.
I'll attached the HA diagnostics to this issue. I'm available to test and try things. 👍
config_entry-omnilogic_local-629a5add5b1b3a9386d23e3a68efb06f (3).json

Hey @toddhutch I just took a look at your telemetry and unfortunately, I think that only Filter devices report power usage.  Here are the relevant bits of the telemetry from your debug file:
<?xml version="1.0" encoding="UTF-8" ?>
<STATUS version="1.11">
      ... SNIPPED ...
    <Filter systemId="12" filterState="1" filterSpeed="75" valvePosition="1" whyFilterIsOn="14" fpOverride="0" reportedFilterSpeed="75" power="631" lastSpeed="25" />
   ... SNIPPED ...
    <Pump systemId="15" pumpState="1" pumpSpeed="50" lastSpeed="50" whyOn="8" />
   ... SNIPPED ...
</STATUS>

You can see in there that your Filter has a power parameter, but the pump device unfortunately does not.  Not much I can do there.


Customizing the ID of the model class

How to customize the ID property of the model class to be of type string and random value generated on action?

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

ID: 1d975a83-1550-b284-d0d8-7fe2ea206ff5
Version Independent ID: 48e81b42-7c2b-afbf-71e6-d4f442a4bd1f
Content: Add a model to an ASP.NET Core MVC app
Content Source: aspnetcore/tutorials/first-mvc-app/adding-model.md
Product: aspnet-core
Technology: aspnetcore-tutorials
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

Hello! Thanks for contacting us. This sounds like a general question about using ASP.NET Core. While we try to look at and respond to all issues, for questions like this we recommend posting to a community support group like Stack Overflow with the asp.net-core tag.


Golang single service

This draft is a proposal for 2 things:

Fixing the package namespace issue in the protobuf. Ideally this will be pushed to a separate PR, it is included here simply to make everything work.
Creates a trinsic-service that wraps all the individual services

This is intended mostly to encourage feedback on the wrapper service

Looks good to me


add Fullstack HQ to Sites Built with React Static

Description

Just changed the readme.MD to add Fullstack HQ as example, no other details to follow
Changes/Tasks

[ ] Changed code

Motivation and Context

Screenshots (if appropriate):

Types of changes

[ ] Refactoring/add tests (refactoring or adding test which isn't a fix or add a feature)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] My change requires a change to the documentation.

[x] I have updated the documentation accordingly.

[x] My changes have tests around them

Nicely done!


warp eror 5.3.0

THIS CRASH WAS CAUSED BY A PLUGIN
BAD PLUGIN: theSpawn
Error: Call to a member function getName() on null
File: plugins/theSpawn.phar/src/form/WarpForms
Line: 43
Type: Error
Backtrace:
#0 plugins/theSpawn.phar/src/commands/warp/WarpCommand(51): supercrafter333\theSpawn\form\WarpForms->open(object pocketmine\player\Player#186497)
#1 pmsrc/src/command/SimpleCommandMap(212): supercrafter333\theSpawn\commands\warp\WarpCommand->execute(object pocketmine\player\Player#186497, string[4] warp, array[0])
#2 pmsrc/src/Server(1415): pocketmine\command\SimpleCommandMap->dispatch(object

Looks like your warp-config-file is corrupted. This shouldn't be a bug of theSpawn.


[RFE]Ability to customize prompt when the service is up and running

Is your feature request related to a problem? Please describe.
Currently prompt Messages  is being referenced as a library import, and cannot be customized once an image is built. It has to be configured properly before the image build.
Describe the solution you'd like
Should allow road-core image consumers to provide their own customized prompt when running the image container, i.e. create an API to change the system prompt
Describe alternatives you've considered
via config to provide customized prompt file path when start the road-core service
Additional context
Add any other context or screenshots about the feature request here.

@yangcao77 I think this is a same requirement as Issue #158 and I have created PR #227 for review. Would you take a look?


Added transaction weight to Moneropedia.

I saw this on the issues page. It is issue #905. I made a basic layout of everything. I'm not that experienced with Monero and the blockchain to add anything to it so I'm hoping others can help add info as needed.

I think this is a good start, but i wouldn't create a Moneropedia entry for a couple of lines of explanation. Any idea on how to expand the entry?

Not sure how to expand it.

Sources: the fee calculation is discussed in Mastering Monero section <IP_ADDRESS>, which may be outdated after changes in 2019. ArticMine's talk can be found here. I'll try to write a longer text if I understand this.

Note that thee fee structure is being revisited: https://github.com/monero-project/monero/pull/7819

OK, the transaction weight isn't the most complicated part of the fee calculation or the dynamic blocksize. What do you think about the following text? I don't think we should include the precise calculation, which isn't done for other entries either. Relevant slide: https://i.imgur.com/MNw5Pda.png
"After @Bulletproofs significantly decreased the size of range proofs in Monero @transactions, the original size was still relevant for verification times. While proofs are relatively more efficient for a larger number of outputs, verifying each output will require a similar amount of time. To properly price the cost of verification, a 'clawback' is added to the transaction size of transactions with more than 2 outputs. The sum of the transaction size and this clawback is the transaction weight. For miners, the block weight is the sum of the weights of all transactions to be included in the block.
Not to be confused with Bitcoin's weight units introduced in the Segwit soft-fork, a different type of transaction weighting for different reasons."

Note that thee fee structure is being revisited: monero-project/monero#7819

Thanks for the warning. Looking at the discussion and changed files, I don't think this will affect the transaction weight or my proposed text. On the other hand, this suggests that explaining the transaction weight only explains a small detail of the fee calculation.


Run Code Popup Window Auto-Enabled On All Completed Challenges

If one has successfully completed a challenge, ie any waypoint/bonfire, etc, if you go to "Map" and click back to any of your old completed challenges, say, to check your earlier code for reference on a new problem, the "Run code" is automatically enabled and throws up the pop up window with "Go to my next challenge". It's not a huge issue. Just kind of distracting, as you have to close this window each time just to see your earlier code.

Yeah I agree this is kind of a pain.  Though I see a bit of value in having a visual indicator that the solution is correct

There already is a visual indicator: all the green checked circles indicate you've successfully completed it. I can understand the need for the pop up if you click on the "Run code" button again, but not if you're simply returning to the page.

Looks like this has been fixed as now you need to press run code before the code is evaluated.


msys2-installer license

Hi folks,
Are the scripts for msys2-installer in https://github.com/msys2/msys2-installer under any license?
Could they possibly be put under the same LICENSE as this repo?
(Looking to make an installer for an MSYS2-derived application, with a larger subset of packages included. Would be great to be able to leverage these scripts and re-release any changes.)
Thanks,
Angus
PS Apologies for posting in an unrelated repo, but Issues are disabled in the installer repo and @Alexpux is author of both so this seemed like the best place.

From my perspective s co-author they are public domain if Alexey agrees.

@mingwandroid I'm agree

@projectgus: Does @Alexpux's resolution satisfy you? Is there anything else you would like to discuss before this gets closed?

No, I'm happy if those folks are happy. Thanks. :)


Godot Game Engine

Have you ever tried to make a game with Godot?

Shhhh...

Shhhh...

You will enjoy watching the video I linked to.

I know what is Godot, issue isn't the place for asking this kind of question. It's reporting issue, asking for new feature and question about the software.


Fix: Repeat and Map can now rerender.

Resolves #179
Previously, the repeat and map functions were unable to rerender their contents at all unless the reference to the value they're iterating over changed. This change makes it to where, by default, repeat and map will run their template every time the template function renders, and adds a feature for memoizing the output with a cache key function if desired.
This merge request also adds documentation about the limitations of reactively re-rendering based on arrays and other complex data, and details workarounds/strategies for dealing with this.
As one more change, I've added .nvmrc to gitignore so that people using it don't pollute the repo. If desired, I could instead add the target npm version to its contents.
Testing instructions:

Create this element that leverages repeat:

import XElement from '../../x-element.js';

const entries = [{id: 'foo', value: 'FooValue', text: 'FooText'}, {id: 'bar', value: 'BarValue', text: 'BarText'}]

class MySelect extends XElement {
  static get properties() {
    return {
      selectedId: {
        type: String,
        default: 'foo',
        reflect: true,
      },
      options: {
        type: Array,
        // Will run once on load and then never again unless the array is replaced.
        observe: () => console.log('I ran!'),
        default: () => entries,
      },
    };
  }

  static template(html, {repeat}) {
    return ({ options, selectedId }) => {
      return html`

${selectedId}

${JSON.stringify(options)}

      <select name="my-options">
        ${repeat(options, option => option.id, option => html`
          <option value="${option.value}" ?selected="${option.id === selectedId}">${option.text}, ${selectedId}</option>
        `)}
      </select>
    `;
    };
  }
}

customElements.define('my-select', MySelect);
// We will edit this in the console.
window.entries = entries

Index:
<!doctype html>

    <meta charset="UTF-8">
    <link rel="stylesheet" href="index.css">

      <my-select></my-select>

Load this new demo up and access the console. Edit the entries array and note that no re-rending happens, as explained in the new documentation.
let thing = document.querySelector('my-select')
thing.selectedId = 'bar'
Note that the select/options update, as well as the JSON value and the selected ID value at the top of the component.
Edit the original component to add a key function after the callback function for repeat, () => entries.
Refresh the page. Edit the entries again, and edit the selectedId again.
Notice that the component re-renders, with the new JSON value, and the new selectedId shown, but the select/ioptions remain unchanged, because the key has not changed (it's a reference to the existing list.)
Try different key function outputs to make the re-render work or not work.
npm run test to run the test suite, or let CI work its magic.

Author notes and concerns:
I think this approach is solid overall, but it raises a few questions. First is that there could be performance impacts by making repeat/map render all the time by default. I could change the default to NOT rendering all the time, though I think this behavior would be more surprising than the current one.
The second is that repeat appears to be begrudgingly supported right now, and I've had to add a good bit of repeated code to continue supporting it. This might be a good argument to remove it entirely while we're here, but I don't know what the downstream impact would be for Netflix.
The third is that adding the key function changes the function signature (albeit in a backwards-compatible way) of repeat and map, and these signatures are already a little long.
The fourth is I don't know the code which uses this code-- so I don't have a strong sense of how often repeat and map are used in practice, and whether instead of adding a cache key to repeat/map, I should instead make it to where they always re-render, and instead add some kind of memoization function that can be embedded into the template arbitrarily. Let me know if you'd prefer I do that, instead.
Finally, I'm new to web components and this library-- I only started reading up on the both of them a few days ago in my spare hours. So there's a chance I'm missing something that would be obvious to someone who has worked with them further. Seeing as the issue has been open a while, I figured I'd take a crack at it anyhow :)

Ping @klebba who was affected by this issue, and should be able to confirm if I understood it correctly and have resolved it satisfactorily.

Hi @Kelketek — thank you for taking this on. We will take a look at get back to you; just to set your expectations I would anticipate this taking a few weeks due to Summer vacations and various internal ongoings.

Also FYI — I gave this a cursory glance but still need time to complete a more thorough review — thanks!

Hi @Kelketek — thank you for taking this on. We will take a look at get back to you; just to set your expectations I would anticipate this taking a few weeks due to Summer vacations and various internal ongoings.
One question: did you intend to merge to minor-housekeeping or main? I think main is the more suitable branch, though I can't recall what minor-housekeeping is

@klebba minor-housekeeping is https://github.com/Netflix/x-element/pull/180 . I made the pull request against it because when you wrote the documentation there, you discovered https://github.com/Netflix/x-element/issues/179. minor-housekeeping contains the markdown file where this information seemed most pertinent. Seemed best to make the PR against it to both make sure I had a good place to put the info and help you get the other PR across the finish line, since I figured adding docs that would cause the reader to run into a bug was part of the hold-up. :)

@klebba Thanks for the initial pass-- I've addressed the one particular note you had for me so far, and look forward to the full review. I'll wait on squashing 'til that's complete. :)

Got it — thanks for the context @Kelketek — would it be problematic for you if we were to merge minor-housekeeping ahead of this changeset?

@klebba No, not if you believe that minor-housekeeping is safe to merge without this change. If you do merge minor-housekeeping ahead of this changeset, I will rebase this PR against master instead.

@Kelketek just pinging here to let you know that we haven't forgotten about this. Thanks for your patience

@klebba You're welcome! I see I've got some conflicts now as well so I'll rebase when I get a minute.

@klebba Rebased! :)

@Kelketek — thanks for your continued patience. @theengineear and I met today to thoroughly review these proposed changes. Great work! We also revisited #179 to generate a reproduction case for the original issue: https://github.com/Netflix/x-element/issues/179#issuecomment-239792845
After some discussion we think that the XElement map directive is essentially memoizing input values when it should not.
We will leave a few comments on this pull request for your consideration, but also want to set your expectations:

to address #179 we do not believe an interface change will be necessary (will point out where in the PR this would need adjustment)
there is no pressure on you to fix this if your priorities have changed; just let us know and we can take it up in our next release

Hi @klebba ! I'd love to see the comments and will see what I can do to address your concerns. I'd like to see this through.

@klebba I've added a commit that removes the additional key function/interface change. Let me know if this looks good to you, and I'll squash these down so they're ready for merge. :)

Thanks for re-writing that spec and updating the implementation — it’s much clearer to see the real-world requirement here 🤘
I’m going to go through and leave some nit-picky comments in there to make sure the changes land in a consistent way with proximal code.

Glad to hear it, @theengineear :) I'm heading off for the night but expect to clear out the nits tomorrow.

@theengineear I believe all nits are addressed (and I also found a couple of more since I realized eslint was set up here and I could run npm run lint-fix.)

@theengineear Just one more thing-- I've changed the base branch to main now that I'm no longer including documentation updates that depended on minor-housekeeping.

No worries, @theengineear . I had a great time!
@klebba Github indicates this is still waiting for your signoff. Did you want to give it one more look?


Added welcome-email template

Pull Request Template
Description
Added a welcome-email template inside "email" folder.
Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
I've composed a new email and tried using the template, it was working perfectly.
Additional Context (Please include any Screenshots/gifs if relevant)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings
[x] I have tagged the reviewers in a comment below incase my pull request is ready for a review
[ ] I have signed the commit message to agree to Developer Certificate of Origin (DCO) (to certify that you wrote or otherwise have the right to submit your contribution to the project.) by adding "--signoff" to my git commit command.

I'm merging this PR so that we can get assets link from the main branch. Please use those links and change the img links and make a new PR.


Some comparison points with bonsai

Could you please share some comparisons with bonsai https://github.com/Sollimann/bonsai? I am looking for a long-term solution and am keen to know where my use cases are fitter.

I will be into it in a couple of days.
Shortly, I can say the following things:
Bonsai. Some observations

great and lightweight library for BT.
very straightforward API. In particular, The API allows creating the BT right from rust code.
It works brilliantly for small trees
For complex projects, the lib will require creating an extra layer of abstraction, since out of the box it seems a bit cumbersome.
Super lightweight. It doesn't use tokio or other lib which is cool.
The project is oriented(as far as I see) in the first turn to the game industry.

Forester
The first distinction is the goal. This framework is oriented in the first turn to robotics. Essentially, what I am interested in is the research in 2 main directions:

Introducing the high-level dsl with the bt to reduce the redundancy and fold the complex subtrees (a hypothesis)
Combining the practices of Deep Learning with BTs and changing the BTs during execution relying on it
Although it provides the API to create the BTs in the rust code as well, it does seem less natural in comparison to Bonsai.

So, My reasoning is the following:
If your project will need to have some logic, orchestration with BT but it can be easily fitted into rust code. It will not need to be distributed on the different layers or systems, then Bonsai suits better.
If your project is in the area of ML/Robotics with the intention to use BT heavily and centralize the logic around it, probably Forester serves better.

Thank you, the Robotics use case really resonates with what we are trying to achieve. I will be keen to try it. Cheers


Failures when built with latest packages.

I have been struggling to get Microsoft Graph working with a new clean Xamarin.Forms application.
To work out where my app was going wrong, I started out with this sample, did not update the packages and everything worked as expected.
I then updated all packages to the latest version, and when deployed, touching the "Connect" button,  the application now throws error:
System.MissingMethodException: Method 'Android.Support.CustomTabs.CustomTabsIntent.LaunchUrl' not found.
at Android.App.Activity.n_OnResume (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <61dabd3f0b0446bc8b570d6071d995d7>:0
at at (wrapper dynamic-method) System.Object:b6c23b17-8ac8-40a6-a970-77d99181019c (intptr,intptr)
Not really sure how to begin debuging this one.
I'm Running Visual Studio 2017 Community on a mac (OSX 10.12) if that helps.
Cheers.

Does the sample start working again when you replace v 25.3.1 of Xamarin.Android.Support.CustomTabs with 23.3.0? It looks like the latest version of that package might have introduced an incompatibility with the latest version of MSAL (Microsoft.Identity v 1.1.0).

I was able to reproduce this by updating the Xamarin.Android.Support.* libraries from v 23.3.0 to 25.3.1. This update pulls in additional libraries, so unfortunately if you're starting from a fresh Xamarin.Forms application, you'll need to switch to the v 23.3.0 versions of some libraries and remove others.
After reproducing I was able to fix the problem by doing just that, and I ended up with this packages.config file in the Xamarin.Droid project.
  <package id="Microsoft.Identity.Client" version="1.1.0-preview" targetFramework="monoandroid71" />
  <package id="Plugin.CurrentActivity" version="1.0.1" targetFramework="monoandroid71" />
  <package id="System.Runtime.Serialization.Json" version="4.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.CustomTabs" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Build.Download" version="0.4.3" targetFramework="monoandroid71" />
  <package id="Xamarin.Forms" version="<IP_ADDRESS>" targetFramework="monoandroid71" />

Notice that this is identical to the packages.config file in this repo:
https://github.com/microsoftgraph/xamarin-csharp-connect-sample/blob/master/XamarinConnect/XamarinConnect.Droid/packages.config
That's one workaround for now. I'll look into why this incompatibility exists and whether there is any other way to work around this.

I've opened an issue in the MSAL repo.
https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/443
Closing this issue, since it's a problem with MSAL and not with the sample itself. Please track the issue in the MSAL repo. Thank for alerting us to this!

Thanks for the quick response!
Sent from my Samsung Galaxy smartphone.
-------- Original message --------
From: Jim Crowley<EMAIL_ADDRESS>Date: 7/7/17 2:56 am (GMT+09:30)
To: microsoftgraph/xamarin-csharp-connect-sample<EMAIL_ADDRESS>Cc: Craig Dunstan<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [microsoftgraph/xamarin-csharp-connect-sample] Failures when built with latest packages. (#17)
I've opened an issue in the MSAL repo.
AzureAD/microsoft-authentication-library-for-dotnet#443https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/443
Closing this issue, since it's a problem with MSAL and not with the sample itself. Please track the issue in the MSAL repo. Thank for alerting us to this!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoftgraph/xamarin-csharp-connect-sample/issues/17#issuecomment-313463722, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOcCy39m9_zigJ9X8x-4FiL7JvRsNqIoks5sLRjAgaJpZM4OMVM5.


Cannot build emacsql sqlite binary with gcc

I was not able to build sqlite binary with gcc as the compiler, see my issue for org-roam, and after I switched to clang, it seems to be fine. Is it expected behaviour?

The "internal compiler error: Segmentation fault" is GCC crashing while
compiling SQLite. This is very unexpected.

The "internal compiler error: Segmentation fault" is GCC crashing while compiling SQLite. This is very unexpected.

I am on Debian sid with build-essential which includes gcc freshly installed, and actually I have tried to remove and reinstall gcc for several times, which seems to be of no use.

This works fine for me:
FROM debian:sid-slim
RUN apt-get update && apt-get install --yes build-essential emacs-nox git
RUN git clone https://github.com/cbbrowne/pg.el pg
RUN git clone https://github.com/skeeto/emacsql
WORKDIR emacsql
CMD make check

docker build -t emacsql-test .
docker run --rm emacsql-test

Which indicates that its definitely some local installation issue. Perhaps one of GCC's dependencies — e.g. libgmp10, libisl23, libmpc3, libmpfr6 (all: dpkg -s gcc-10 | grep Depends) — are corrupted?

Thank you for your reply, as I have already compiled binary with clang, I am not able to reproduce it, would you please tell me how to delete the compiled emacsql file so that I may reproduce it?

please tell me how to delete the compiled emacsql file

Use rm sqlite/emacsql-sqlite.
I am closing this because I trust Christopher's conclusion that this is a local issue.


Add feature: update hidden values on any readonly input changes

Suggest add on change event:
$('input').on('change, function() { // update corresponding hidden value of input with same name   $('input:hidden[data-sham="'+ $(this).name +'"]').val(''); })
in case the value is programmatically changed.
e.g. $('select').val('changed value').trigger('change')

Please add a method to update the hidden values at any case, I found that the only way to do that is doing this:
readonly($("#my_selector"), false);
readonly(t$("#my_selector"), true);

@boscolau @quevon24 This issue should be resolved with version 3. Thank you for reporting this bug and please let me know if you run into any more issues.


Initial operator codes with run and stop modules

This PR includes initial operator src. (Fix #10)
The operator utilizes Cobra CLI project (CLI framework source autoGen).
The proposed commends are as follows,

~/go/src/github.com/cloud-barista/cb-operator$ ./src/operator -h
Cobra is a CLI library for Go that empowers applications.
Usage:
operator [command]
Available Commands:
exec        A brief description of your command
help        Help about any command
info        A brief description of your command
remove      A brief description of your command
run         Setup and Run
stop        Stop
Flags:
--config string   config file (default is $HOME/.operator.yaml)
-h, --help            help for operator
-t, --toggle          Help message for toggle
Use "operator [command] --help" for more information about a command.

Currently, operator run & stop are available.
operator run : invokes "docker-compose up" system call with the specified docker-compose.yaml file.
operator stop : invokes "docker-compose down" system call.

@jihoon-seo
Since this PR is about a initial code, I'd like to merge myself.
So, please just check added content, and send inquiries to me if necessary.


v1.0.0 labeled as Trojan.Rozena

The v1.0.0 version is labeled as Trojan.Rozena and some other ransomwere on both totalvirus and hybrid-analysis so i don't know if i should trust this

As per VirusTotal, the executable you mention of is detected as malicious by 3 out of 66 antivirus engines. Two of them are false-positive heuristic detections by BitDefenderTheta and FireEye. The other one that you speak of is the Trojan.Rozena detection by Ikarus, which I am 100% certain is also a false positive. As the developer of this software, I can attest and guarantee that there is no malicious behavior programmed into the code. If you cannot take my word, you can always audit and compile the code yourself.

I guess i put too much trust in VirusTotal, sorry for the trouble
Although i would recommend adding this info in the README for anyone else


Model samples links

Continues effort on #1329
Renaming of the other image files to come on a second commit but will be 403 forbidden links until new image folders under downloads are made public.

image file renaming reference link -https://github.com/sbesson/data_repo_config/blob/samples_script/samples_migration.py

My primary question is whether we should distinguish OME-XML files with a BinData element (i.e. most of our generated OME-XML samples for each schema release) from the OME-XML files without e.g. generated by dumping the output of tiffcomment proprietary_file? /cc @melissalinkert @mtbc @joshmoore @jburel

I think, useful but not required.

Briefly discussed with @hflynn and @jburel. The current consensus is to:

favor .ome.xmlas the OME-XML file format extension across the board. This includes the model documentation as well as our schema samples - see https://trello.com/c/s7LvGwoQ/5-have-schema-samples-tested-by-the-full-repository-job
use .ome in the case of companion OME files i.e. xxxxcompanion.ome

cc @imunro re: changes to 6,7&8D storage FLIM sample descriptions

Still need to work on sample data page - not decided whether to ditch it yet or just re-write. More to come tomorrow.

re: changes to 6,7&8D storage FLIM sample descriptions. Look good to me. It's tricky as there is no generally accepted terminology for this data.

Changed my mind about the layout for the multi-dimension storage page. Will tackle developer sample image page this afternoon.

Developer sample image page can go in future I think but I didn't want to remove the URL in a post-release doc update.

FWIW I have found the sample images useful in the past.

@imunro just rebuilt staging, if you wanted to have a look over https://www.openmicroscopy.org/site/support/ome-model-staging/ and see if you think they are easier to find now, that would be a help but don't worry if you're busy, listing this for review tomorrow now anyway.

@mtbc can you please look at the last commit and let me know how I need to update the text to match the changes in the XML sample? Thanks very much.

i probably need to fix other XML examples in the developer section too actually…
Do we have sample-third-party.xml in the image samples @sbesson ? Referenced on https://www.openmicroscopy.org/site/support/ome-model/developers/using-ome-xml.html

At first glance I honestly can't make much sense of them, but I don't really understand the acquisition stuff anyway. How was this change generated, could that give us clues? @rleigh-dundee, is this any more obvious to you? (You've at least used a microscope before. :smiley:)

(It could be useful to keep the XML properly indented, it's more readable then. I could probably provide a commit to indent it if need be.)

@hflynn While I agree that the basic xyztc dimensionality is fairly self-explanatory (if you already know about this stuff...) the extended descriptions about what the samples are for are not, and I think there's some value in retaining these, if not extending them further.  I think it could certainly be simplified--maybe as a table in place of the verbose descriptions, e.g. as columns: (Filename, Z, T, C, Planes, Type, Description), where Z/T/C are the dimension sizes, Planes the total plane count and Description the remaining part of the description.

If you look at http://downloads.openmicroscopy.org/images/OME-XML/2015-01/ the samples have been renamed according to what they are for @rleigh-dundee - do you still think we need a table?

If you @hflynn @mtbc Need a quick FLIm refresher chat let me know. It's tricky as there is no generally accepted terminology.

Still needed - a consensus on whether listing all the XML samples from http://downloads.openmicroscopy.org/images/OME-XML/2015-01/ is useful/needed and sorting out the mess re: filter XML sample.

Regarding the filter samples, we recently corrected invalid OME-XML files (from a BF test standpoint) to make them valid (but not fully sensible as per discussion above). As no-one has a concrete proposal for what the file should be, I propose we tackle the filter.ome.xml  rewriting as part of the Bio-Formats 5.2.0 work.

Ok, that works for the next schema release having a sensible sample. What do we want to do in the meantime for this PR? Leave the correct but not sensible sample in place or remove the whole section until the sample is both correct and sensible?

Filter samples improvements captured as https://trello.com/c/veWP24MU/389-model-doc-samples. I do not think the current state justifies removing the whole section and would leave it as it is. Shall we merge this PR and release the updated documentation or are we expecting a last round of review?

I was mostly waiting on a decision regarding the filter.xml and whether I need to re-instate the xml sample descriptions on https://www.openmicroscopy.org/site/support/ome-model-staging/developers/sample-files.html
I will skim thro the staging pages now to make sure there are no formatting issues we've missed.

Ok, unless anyone wants to scream about the xml sample descriptions, I'm done with this.

Last commit looks good. Assuming there will be a number of further changes on these pages (PRs welcome!), so merging.

Further effort on XML samples already planned on https://trello.com/c/veWP24MU/389-model-doc-samples


Added getting started with create-next-app guide

I found it confusing not having a quick snippet to create new project with create-next-app, so I added it ❤

whoa thank you for adding this 🙏 😄 @bring-shrubbery

whoa thank you for adding this 🙏 😄 @bring-shrubbery