allow hex configuration to be supplied aka private hexpm organisation

you don't have a chance to put the hexpm token for an organisation with the current implementation.
it allows you to do something like:
mix_do_configure:append() {
mix hex.organization auth ORG --key "${HEX_TOKEN}"
}

Hi @christophermlewis
Thanks for the PR. I just added one idea, let me know if it would help.
Also, could you prepend the 'mix.bbclass: ' to your commit description ? Like:
mix.bbclass: allow hex configuration to be supplied aka private hexpm organisation

Thanks.

Hi @christophermlewis
Thanks for the PR. I just added one idea, let me know if it would help.
Also, could you prepend the 'mix.bbclass: ' to your commit description ? Like:
mix.bbclass: allow hex configuration to be supplied aka private hexpm organisation

Thanks.

Hi @joaohf
Done :)
Our target OS variant is kirkstone, do I need to apply the same update to the Kirstone branch ?

Hi @christophermlewis
Yes, we need to also apply the fix to kirkstone branch.
Did you consider my comment about HEX_ORGANIZATION_TOKEN ?
Thanks.

Hi @christophermlewis
Yes, we need to also apply the fix to kirkstone branch.
Did you consider my comment about HEX_ORGANIZATION_TOKEN ?
Thanks.

I couldn't see any comment, but I see, yep I'll change the name makes sense to me :)

Hi @christophermlewis ,
Could you take a look into this commit https://github.com/meta-erlang/meta-erlang/pull/285 ?
I think it fits better, for the user perspective, when configuring hexpm organization.

Merged.
Thanks.


Package versions:
devexteme version: 19.2.6
devextreme-angular version: 19.2.6

Steps to reproduce:

Current behavior:
everytime the form / component load , it show Cannot read property 'loadSingle' of undefined
Expected behavior:

Screenshots:

Hi,
Judging by the call stack you provided, the error occurs in SelectBox on loading a value. However, it's not clear how to reproduce it locally as your description doesn't contain the dataSource implementation.
Would you please modify our Customize Item demo to demonstrate the issue? Extract the demo into a stand-alone example using the "Copy To CodeSandBox" button and modify it using the "Save" button to apply changes. Then, post the updated link here for further examination. Alternatively, you can use our project template as a starting point.

thanks for pointing me the loading value , the problem solve once i put the load value in constructor.


Add user and group creation to spec

I'd like to add a user and group for use with node.

This seems more like something you would do with your application delivery rather than with this RPM.


Serial port receives buffer overflow

Serial port receives buffer overflow

Could you please be so kind as to explain what the problem is? Sample code showing the problem, your set up, and why you think this is a problem in the Serial Port Stream software?


feat: Hash table implementation

Thanks to our man @jfontan for this, he is real guy to be credited.


Use UPnP and PCP to open ports where available.

We use a dynamic or static port for listening for incoming connections, on home networks this can be a problem as not all routers have all ports open and manually opening them is undesired and is a bad user experience.
See also

Universal Plug and Play
Port Control Protocol
RFC 6970 - UPnP IGD-PCP IWF

The feature was added in the complementary project locha-p2p,
This issue will transferred


Questions regarding unhandled rejections

Hello,
I am using this library through React Native. I am capturing unhandled rejections as described here: https://github.com/then/promise#unhandled-rejections. I am doing this in production, so that I can have error logging for my app.
I am a bit puzzled by statements made by the docs.

Due to the performance cost, you should only do this during development.

Where does the performance cost come from?

Due to the high probability of false positives, I only recommend using this when debugging specific issues that you think may be being swallowed.

What are these false positives and where do they come from? Can you please give an example?
Thanks!

False positive:
const promiseThatResolvesSlowly = delay(1000);
const promiseThatRejectsQuickly = Promise.reject('oops');

try {
  await promiseThatResolvesSlowly;
  await promiseThatRejectsQuickly;
} catch (ex) {
  // We handle the rejection here, but it was already reported as an
  // unhandled rejection while we were waiting for promiseThatResolvesSlowly
}

The reason it's not recommended in production, is that promise must track all unhandled rejections in case they are later resolved and we need to report them as handled. This has a memory overhead and can cause a memory leak in applications that deliberately ignore some rejected promises.

Thanks for the explanation!
You probably meant for that to run in parallel?
const promiseThatResolvesSlowly = delay(1000);
const promiseThatRejectsQuickly = Promise.reject('oops');

try {
  await Promise.all([
    promiseThatResolvesSlowly,
    promiseThatRejectsQuickly,
  ]);
} catch (ex) {
  // We handle the rejection here, but it was already reported as an
  // unhandled rejection while we were waiting for promiseThatResolvesSlowly
}

I think I'm starting to understand the problem better now, after a year of React experience 😄
I'm wondering why the best practices here are not popularized more, instead of just being hinted at in this obscure issue: https://github.com/facebook/react-native/issues/2585

...my bad, your example is correct, mine isn't (Promise.all only waits for first rejection)

@alamothe more importantly, Promise.all would mark the rejection as handled whenever it happens. so even if you had multiple rejections, all with different delays, they would all be marked as handled. Only the first would actually be re-thrown into the try/catch block though.


Special mentions

Fixes #1142
Changes Summary

adds community & collaborators section to the Team page

only thing that says "needs fixing" to me is perserving the filter when there is no title/description


Can't benchmark on medqa

In the evaluation folder, running python inference.py --checkpoint mistral --checkpoint_name mistral --benchmark medqa fails with the error datasets.exceptions.DatasetGenerationError: An error occurred while generating the dataset.
I managed to fix the error by setting the MedQA benchmark attribute self.subsets = ['med_qa_en_source]
By the way, the repository requirements.txt is missing the packages wandb, scikit-learn and openai (unused though), to be able to run the benchmark suite.

Thanks!


Add spm support

A nicer package manager: http://spmjs.io
Documentation: http://spmjs.io/documentation
http://spmjs.io/package/jquery-timeago

It is a package manager based on Sea.js which is a popular module loader in China.
spmjs focus in browser side. We supply a complete lifecycle managment of package by using spm.

If you need ownership of jquery-timeago in spmjs, I can add it for your account after signing in http://spmjs.io.

Could we also get it on npmjs.com?

@domenkozar It looks like someone stole my namespace by forking the repository instead of pointing directly to it.
https://www.npmjs.com/package/timeago
What'st the correct way to resolve something like this in the node community?

Cant you name it with jquery prefix?

@domenkozar Yes, but that will change the core package.json and affect everything else that relies on that manifest.

https://docs.npmjs.com/misc/disputes

@domenkozar Thanks. We should be good to go now. NPM team and @ecto were helpful.
Latest version of timeago is now published to npm. https://www.npmjs.com/package/timeago
It's based on the existing package.json, so if there are additional changes necessary, please open a new issue.
:beers:

No, thank you! :beers:


Custom health check with custom status attributes

Summary
Custom health check can currently be used to determine health status of custom object: https://argoproj.github.io/argo-cd/operator-manual/health/
In addition, it can pass a message via hs.message field.
It would be useful if there would be possibility to set other kinds of values/attributes to Application object, not only health status and message. These values should be reflected on Application CR's status field.
Use Cases
Usually there's need to collect information about applications that are running on various clusters, to answer questions like: how many applications of certain type and which versions are running, who owns them, are we running any vulnerable software, is software configured compliant with company policies etc.?
When using single Argo-CD for Application Lifecycle Management, Application objects can be neatly had in centralized place. These objects can be queried using labels, and further integrated to a security systems and dashboards and so on.
If it would be possible to fetch any metadata from custom objects into argo-cd's application object's status, it would improve this use case a lot, as information would flow from Custom objects to Application CR.

Closing as this was on wrong repository, sorry!

Closing as this was on wrong repository, sorry!


SpawnEntityEvent error w/ GriefPrevention

Error log: https://www.irccloud.com/pastebin/K3oU9Vkp/
This appears in the console frequently. I'm not entirely sure where the mobs are spawning to trigger it, but can look into it more if the log doesn't provide enough information.
Thanks!

Seems to happen when using a spawn egg inside a GP claim with entity-spawn: false. There may be other causes too, but this one was reproducible.

Fixed by https://github.com/SpongePowered/SpongeCommon/commit/ad9aa8641d465419f0685c69f8f3fd694bc59d83


Improve meshery code base by fixing lint issues

Description
See all Meshery lint issues here - https://github.com/layer5io/meshery/pull/281/checks?check_run_id=229200619#step:4:236
Found 5 lint suggestions; failing.
237
##[error]/home/runner/work/meshery/meshery/handlers/mesh_ops_handlers.go:77:22: error strings should not be capitalized or end with punctuation or a newline
238
##[error]/home/runner/work/meshery/meshery/handlers/mesh_ops_handlers.go:187:21: error strings should not be capitalized or end with punctuation or a newline
239
##[error]/home/runner/work/meshery/meshery/handlers/mesh_ops_handlers.go:254:21: error strings should not be capitalized or end with punctuation or a newline
240
##[error]/home/runner/work/meshery/meshery/handlers/mesh_ops_handlers.go:282:2: var operationId should be operationID
241
##[error]/home/runner/work/meshery/meshery/handlers/mesh_ops_handlers.go:346:21: error strings should not be capitalized or end with punctuation or a newline
242
Found 6 lint suggestions; failing.
243
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:55:26: error strings should not be capitalized or end with punctuation or a newline
244
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:59:26: error strings should not be capitalized or end with punctuation or a newline
245
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:99:21: error strings should not be capitalized or end with punctuation or a newline
246
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:103:21: error strings should not be capitalized or end with punctuation or a newline
247
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:124:21: error strings should not be capitalized or end with punctuation or a newline
248
##[error]/home/runner/work/meshery/meshery/helpers/session_badger_persister.go:128:21: error strings should not be capitalized or end with punctuation or a newline
249
##[error]Process completed with exit code 123.

Expected Behavior
No lint issues.

@ashiscs @gunjanmimo this may help in your efforts - https://goreportcard.com/report/github.com/layer5io/meshery

Hi, can I take this issue?

Hi, @jesuslerma. That would be fantastic.
In this particular case, this is a stale issue as I think we've corrected the outstanding lint issues in the meshery repo. Latest builds here - https://github.com/layer5io/meshery/actions?workflow=Meshery.
@jesuslerma, we'll close this issue, but @girishranganathan will readily point you to similar issues in Meshery's adapters, like these:
Meshery-Consul - https://github.com/layer5io/meshery-consul/commit/32678173563189cec6a59d0238ef57776cb9cf40/checks?check_suite_id=283639511#step:4:129

Confirmed - lint issues have been addressed. Closing this issue.

@jesuslerma here is a related new issue that may be of interest - https://github.com/layer5io/meshery/issues/436.
@girishranganathan forgot to point this out when he created it earlier.


Add Elmo primitive

Add the Elmo primitive and tests

 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.You have signed the CLA already but the status is still pending? Let us recheck it.


[Bug Report]: Admin not available

What operating system are you using?
Windows
What version of PHP do you use?
PHP 7.x
Where did you get the CMS code?
Github
Where are you trying to install the CMS?
Localhost
Which emulator are you using and which version?
TrinityCore
Describe the bug
Not getting access to admin panel. Able to create, log in, and log in using created account thru console for server. Web seems to be connecting and recognizing already created accounts. Allows new accounts be made and work on game server.
Even if having GM status on game server. Not able to admin on website. Using Mop premium pack from emucoach.
using [<IP_ADDRESS> | Refactor Code]
How can I reproduce the problem?
not sure how to reproduce
Screenshots


MySQL flexible server region format

az feedback auto-generates most of the information requested below, as of CLI version 2.0.62

Related command

az mysql flexible-server list/show
Describe the bug

The location property of each item listed in az mysql flexible-server list/show comes out with display format "North Central US"
instead of the format used in most other commands "northcentralus"
To Reproduce

az mysql flexible-server list --query [].location
outputs display name format of the regions of all instances
North Central US
East US
West Europe
Expected behavior

output should be in the same format as other az * list commands
az vm list --query [].location
northcentralus
eastus
westeurope
Environment summary

Can reproduce in win10 az 2.45 and 2.46, ubuntu 20.04 installed through WSL (same versions) and cloud shell
Additional context

@RickardTaran We are looking into it and get back to you for any additional information.

route to CXP team

@RickardTaran REST API also returns similar results, so redirecting this to services team to further look into it. Thanks

Adding @mksuni on this feedback and following

@RickardTaran Thanks for identifying this mismatch. There are two ways location is called used where we have full name like "East US" and we have the code "eastus". In Azure CLI there is no strict format for the output and MySQL Flexible currently uses full name format. When executing any CLI command for MySQL, you can pass the argument in either the code format without the spaces or with the full name that includes the space.
For example you can run the command either format for the region with Flex command and it should work.  Example
az mysql flexible-server create --location northeurope
OR
az mysql flexible-server create --location "North Europe"
Please do share details if there are any issues you are facing that are blocking you due to this mismatch that I can take that information back to product team.

Hey @mksuni, I appreciate the explanation. However, this doesn't address the logged issue. I'm having trouble with show/list instead of create. It's good to know that both input formats would work, my team will keep this in mind for those uses. My use case is that I use the az cli to generate output that I feed into other systems to generate reports.
This has so far worked fine for all other resource types that we work with because their associated sections of the cli have consistency on the output of the location/region. All other sections seem to use the code format instead of the name format with az mysql being the outlier. In fact, to be more specific, if I use another command to list Azure Reserved Instances for MySQL, that too will use the code format (e.g. az reservations reservation-order list / az reservations reservation show).
We have automation that relies on the consistency of these different show/list commands and the az cli has so far been a fantastic resource for this. We recently expanded that to use az mysql and ran into this inconsistency at that time. I know @SaurabhSharma-MSFT mentioned that this actually seems like an issue with the REST Api that is affecting behavior here, so I would also expect this to effect the SDKs (which bites because that would've been our first workaround). Unfortunately this doesn't negate the fact that we still are experiencing a bug in the az cli that is impeding my teams work. I understand this may not be a short term fix and we can wait for an update.
I do appreciate all of your prompt responses and input. Thanks!


Docker Hub links for README / Docs

Hi! Would it be possible to share the docker hub links for these base images in the readme? Im having a hard time finding them.

Also, might be useful to put example usage of base images in https://developers.home-assistant.io/docs/hassio_addon_index. I don't see any clear examples of using a base image, for example if I want to write an add-on in Python how / where do I pull the image? If I can figure it out, I can help add to the docs. It is pretty unclear to me though presently

The builder automatically picks them up for the correct architecture.
In case you want to override the default, this can be done in a build.json file as documented here:
https://developers.home-assistant.io/docs/hassio_addon_config#add-on-extended-build
For manual runs:
https://developers.home-assistant.io/docs/hassio_addon_testing#local-build


Release PR opened for chore

TL;DR
I made a commit with the chore type and Release Please opened a PR: https://github.com/remarkablemark/php-composer-test/pull/2. Is this expected behavior?
Expected behavior
Release PR is not opened for type chore
Observed behavior
Release PR opened for type chore
Action YAML
name: release-please
on:
  push:
    branches:
      - master

permissions:
  contents: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - name: Release Please
        uses: google-github-actions/release-please-action@v3
        with:
          release-type: php

https://github.com/remarkablemark/php-composer-test/blob/master/.github/workflows/release-please.yml
Log output
No response
Additional information
No response

Thanks for the response!


Initial register failed on v0.19.1

Describe the bug
When I click the button register, a warning occurred on the console and the application is stuck.(No response for long time)
I pulled the image from the official docker repo(both v0.19.1 and latest) and run it. But during the initialization process, the application seem crashed somehow. I've retried for several times. It doesn't happen on v0.18.1.
Maybe the web page called the wrong api?
ps: I didn't know how to find the container's log.Sorry for that.
Steps to reproduce

simply use docker to start the application
initialize with registering
click the button, then that's it

The version of Memos you're using
v0.19.1
Screenshots or additional context

Maybe fixed with https://github.com/usememos/memos/commit/46ea16ef7e5c4ed2731fe7842ae22f477c42678e
Could you pull the latest stable image and try again?

Maybe fixed with 46ea16e
Could you pull the latest stable image and try again?

It seems resolved, thank you.


Can't connect from Snap!

I loaded two different example projects (Sierpinski and stars) into Snap!.  I started RoboPaint, set it to allow remote paint mode, then clicked the printer-looking icon to start remote paint mode, then clicked the green flag in the project.  The picture appears on the screen but nothing happens on the WaterColorBot.  Painting from RoboPaint does work (although it seems to have weird ideas about filling largeish areas).

Hi Brian,
I'm sorry to hear about the trouble. I've just tested here with those examples, and everything appears to be working so far as I can tell-- so whatever is going on does not appear to be a global problem.
I'm testing with RoboPaint 2.0.0 Beta 3, Snap! live on the web page, and the two examples that you mentioned.
Unless you are actually using the remote printing feature -- printing from a different computer than is physically connected to the WaterColorBot -- I'd recommend to stay out of remote printing mode. For working with Snap!, I'd recommend to leave RoboPaint on it's home screen (a big "W" surrounded by mode icons) in order to get the best results.
For the moment, please quit and restart RoboPaint. If it's connected to your machine and it's powered up, you'll likely hear a little servo motor twitch as it first connects. Assuming that it does connect correctly, just switch over to Snap!, and see if you can get a response from it. I usually use Pen>WCB pen up/WCB pen down to make sure that things are responding. Please give that a try, and see if it helps.
If you still can't connect from within Snap!, you might try directly calling command codes from your web browser to see if that is working for you:
http://localhost:4242/pen.up
http://localhost:4242/pen.down
4242 is the default listening port within RoboPaint, and can be changed in the settings-- you might also double check that this value hasn't been changed on your copy of RoboPaint.
As for the filling issue in RoboPaint, it is likely that you have a low value set for the precision. Open up Settings in RoboPaint, select Style from the left hand column, and then play with the settings there.

Sorry for the delayed response.  I upgraded the software (I had
0.3.something, I think) and now it works fine.  Thanks!

Fantastic; thank you for following up.


python311Packages.hdbscan: fix build

Patch is already upstream in the current packaged version.
ZHF: #265948
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 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

[ ] Fits CONTRIBUTING.md.

Priorities
Add a :+1: reaction to pull requests you find important.

fixes https://hydra.nixos.org/build/241374083,  nixpkgs-review succeds. LGTM, thanks!


Restart NetworkManager only when needed and renamed task

It's not necessary and potentially dangerous to restart NetworkManager if it's not needed, so we will check the state of the dnf task to monitor if it's changed.
Also, the task name now explains what is going to be installed.

recheck

recheck


Add wait for status condition method

Short description:
Added a wait_for_status_condition function to support flexible, user-defined status checks, allowing for custom success and failure conditions.
More details:
The new wait_for_status_condition function introduces a generic approach to checking status conditions, making it adaptable for various scenarios. Unlike wait_for_condition, which only handles specific, hardcoded status checks, this function accepts lists of condition-check functions (wait_condition_fns and not_wait_condition_fns) to evaluate both success and failure conditions as needed.
This approach offers:

Adaptability: Supports any status condition without modifying the function itself.
Simplified Maintenance: New conditions can be added simply by passing functions, reducing code changes.
Separation of Concerns: Retains wait_for_condition for straightforward checks, while wait_for_status_condition addresses complex use cases.

What this PR does / why we need it:
Which issue(s) this PR fixes:
Special notes for reviewer:
Bug:

/verified


Handle Postgres 'NULL' types

Hey!
For example, I have a schema
CREATE TYPE tag AS ENUM ('new', 'stock', 'top');

CREATE TABLE some_table (
    ...
    mainTag tag
    ...
)

You can see that the mainTag field in the table can be null.
And for the corresponding table, 'sqlc' generates me the following code
type TagType string

const (
	TagTypeNew   TagType = "new"
	TagTypeStock TagType = "stock"
	TagTypeTop     TagType = "top"
)

func (e *TagType) Scan(src interface{}) error {
	switch s := src.(type) {
	case []byte:
		*e = TagType(s)
	case string:
		*e = TagType(s)
	default:
		return fmt.Errorf("unsupported scan type for TagType: %T", src)
	}
	return nil
}

After I try to translate data from the database, I always get an error in the default case: "unsupported scan type for ...."
Question.
SQLC can track that this field can have a NULL value in the schema?

I think the best option here to generate a second type that can handle NULL values. This will also be backwards compatible with the existing type.
type NullTagType struct {
    TagType TagType
    Valid bool
}

I'm looking at this problem and I think I can try at least scope out the work needed.
In order to replicate the Nullable values form the SQL library, wee need the equivalent of convertAssignRows
After looking at some PR https://github.com/golang/go/issues/24258 for example it is clear the method will stay private.
It is not possible to only copy-paste the method as I found it not that easy to extract it.
This library has the equivalent function but is easy to copy paste:
https://github.com/denisenkom/go-mssqldb/blob/master/convert.go
1- We need an equivalent to convertAssign.
Should we add a convert.go file on the generation with convertAssign from go-mssqldb ?
Should we add convertAssign to sqlc as a public method ?
2- Once we have convertAssign we can create the NullXXX type needed with it's equivalent Scan and Value methods
Should we generate this type even when the type is never used?
If we can just generate it no matter what becomes very straightforward.
3- Use the Nullable value instead of the raw type on the needed queries
I actually have not vision on this part at all.
@kyleconroy If you can tell me what you prefer for the point N-1 I can try to draft a PR with the changes, at least the points 1, 2

@sbres I'm not sure why we need a copy of convertAssign at all? Shouldn't implementing driver.Valuer be enough?
I've drafted up a PR, #1582. It seemed fairly simple, but I haven't even tried to execute the code yet.

I had forgotten about this comment. Yeah, we don't need the convertAssign.
I've also made a PR for this issue
https://github.com/kyleconroy/sqlc/pull/1485

sqlc now generates the correct Null* types for enums.


refactor: move structs to args mod

fixes #1243

Codecov Report

Merging #1250 (6edc12d) into main (c9629d0) will decrease coverage by 0.01%.
The diff coverage is 37.14%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1250      +/-   ##
==========================================
- Coverage   76.90%   76.90%   -0.01%
==========================================
  Files         340      342       +2
  Lines       37878    37878
==========================================
- Hits        29131    29129       -2
- Misses       8747     8749       +2

Flag
Coverage Δ

unit-tests
76.90% <37.14%> (-0.01%)
:arrow_down:

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

Impacted Files
Coverage Δ

bin/reth/src/args/network_args.rs
0.00% <0.00%> (ø)

bin/reth/src/lib.rs
100.00% <ø> (+61.11%)
:arrow_up:

bin/reth/src/node/mod.rs
0.00% <ø> (ø)

bin/reth/src/stage/mod.rs
0.00% <ø> (ø)

bin/reth/src/args/rpc_server_args.rs
59.09% <59.09%> (ø)

crates/stages/src/stages/bodies.rs
92.37% <0.00%> (-0.44%)
:arrow_down:

crates/net/network/src/peers/manager.rs
82.44% <0.00%> (-0.09%)
:arrow_down:

...rates/storage/provider/src/providers/historical.rs

crates/storage/provider/src/providers/latest.rs

...tes/storage/provider/src/providers/state/latest.rs
66.66% <0.00%> (ø)

... and 2 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


The auto generated file from PubPub has a lot of cruft

Try editing it by hand, or, just copy and paste to create a cleaner file.

Which file are you referring to? What if this book had dozens or even hundreds of different designs and how-tos, one per file?

Which file are you referring to? What if this book had dozens or even hundreds of different designs and how-tos, one per file?

I mean in https://github.com/disabilitytech/hamilton_why/blob/main/mens_slacks_and_trousers_modification.md


GaLore in HuggingFace

Hi team, very thanks for GaLore. I'm currently using HuggingFace for fine-tuning. Just curious to integrate GaLore with HuggingFace.
It's not an issue, I'm just interested to use GaLore with HuggingFace
@jiaweizzhao
from galore_torch import GaLoreAdamW, GaLoreAdamW8bit, GaLoreAdafactor
from peft import LoraConfig
import transformers
from trl import SFTTrainer
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

lora_config = LoraConfig(
    r=8,
    target_modules=["q_proj", "o_proj", "k_proj", "v_proj", "gate_proj", "up_proj", "down_proj"],
    task_type="CAUSAL_LM",
)

model_id = "google/gemma-2b"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

tokenizer = AutoTokenizer.from_pretrained(model_id, token=os.environ['HF_TOKEN'])
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config, device_map={"":0}, token=os.environ['HF_TOKEN'])

trainer = SFTTrainer(
    model=model,
    train_dataset=data["train"],
    args=transformers.TrainingArguments(
        per_device_train_batch_size=1,
        gradient_accumulation_steps=4,
        warmup_steps=2,
        max_steps=10,
        learning_rate=2e-4,
        fp16=True,
        logging_steps=1,
        output_dir="outputs",
        optim="paged_adamw_8bit"
    ),
    peft_config=lora_config,
)
trainer.train()

should I just replace optim="paged_adamw_8bit" with optim = GaLoreAdamW8bit? can you please provide some sample script ?

The official integration of the GaLore optimizer with Hugging Face is underway, as seen in https://github.com/huggingface/transformers/pull/29588.
For now, you can pass the GaLore optimizer in the optimizers argument of the trainer, e.g., https://github.com/jiaweizzhao/GaLore/issues/9#issuecomment-1989719401.

@PenutChen thanks, I looked into it. I see it is a combination of GaLore and LoRA right.
And I assume, just GaLore is enough to fine-tune all the parameters in the model.
In that case, should I remove LoRA from target_module_list and just leave it to default, Like the below code?
 trainer = Trainer(
        model,
        args,
        train_dataset=ds["train"],
        eval_dataset=ds["test"],
        optimizers=load_galore_optimizer(model),
    )

@IamExperimenting Yes, the LoRa-related part of the code can be completely removed.

@penut85420 I have remove LoRA  related code in the provide example, and pasted it. Can you have a look and confirm whether it is good to go?
import torch
import torch.nn as nn
from datasets import load_dataset
from galore_torch import GaLoreAdamW8bit
from peft import LoraConfig, PeftModel, TaskType, get_peft_model
from transformers import AutoModelForCausalLM as ModelImp
from transformers import PreTrainedModel as ModelCls
from transformers import Trainer, TrainingArguments, get_cosine_schedule_with_warmup

def main():
    model_path = "Llama-7B"

    model: ModelCls = ModelImp.from_pretrained(
        model_path,
        device_map="auto",
        torch_dtype=torch.bfloat16,
        use_cache=False,
    )

    print(model)

    args = TrainingArguments(
        "Llama-7B-GaLore",
        per_device_train_batch_size=1,
        per_device_eval_batch_size=1,
        max_steps=100,
        evaluation_strategy="steps",
        save_strategy="steps",
        load_best_model_at_end=True,
        save_total_limit=1,
        gradient_checkpointing=True,
        logging_steps=1,
        eval_steps=1,
        save_steps=1,
        log_level="detail",
    )

    model.gradient_checkpointing_enable()
    model.enable_input_require_grads()

    ds = load_dataset("parquet", data_files="tokens.parquet", cache_dir="Cache")
    ds = ds["train"].train_test_split(16)

    trainer = Trainer(
        model,
        args,
        train_dataset=ds["train"],
        eval_dataset=ds["test"],
        optimizers=load_galore_optimizer(model),
    )
    trainer.train()
    trainer.save_model()

def load_galore_optimizer(model: ModelCls, target_modules_list=["attn", "mlp"]):
    galore_params = []
    for module_name, module in model.named_modules():
        if not isinstance(module, nn.Linear):
            continue
        if not any(target_key in module_name for target_key in target_modules_list):
            continue
        print(module_name)
        galore_params.append(module.weight)

    id_galore_params = {id(p) for p in galore_params}
    regular_params = [p for p in model.parameters() if id(p) not in id_galore_params]

    param_groups = [
        dict(params=regular_params),
        dict(
            params=galore_params,
            rank=1024,
            update_proj_gap=500,
            scale=0.25,
            proj_type="std",
        ),
    ]

    optimizer = GaLoreAdamW8bit(param_groups, lr=0.01)
    scheduler = get_cosine_schedule_with_warmup(optimizer, 10, 90)

    return optimizer, scheduler

if __name__ == "__main__":
    main()

@IamExperimenting you're basically right, just two things to note:

This is not the layerwise-galore implementation, which is too complex to demo in a few lines.
The step arguments of the learning rate schedule are hard-coded, you should set them for yourself.

scheduler = get_cosine_schedule_with_warmup(optimizer, 10, 90)

@penut85420 oh.. so, I won't be able to completely levearge GaLore
Basically, I want to fine-tune Mistral 7B model(fine-tune all the parameters in the model) with my domain data.
Sorry for so many question.

@penut85420 could you please help me, I wanted to fine-tune full parameters in the model for (mistral, gemma).

@IamExperimenting Galore was just merged into transformers https://huggingface.co/docs/transformers/main/en/trainer#galore

@geronimi73 @penut85420 can I assume that the below code will fine-tune full parameter in the model.
args = TrainingArguments(
    output_dir="./test-galore",
    max_steps=100,
    per_device_train_batch_size=2,
    optim="galore_adamw_layerwise",
    optim_target_modules=["attn", "mlp"]
)

@IamExperimenting you can use model.num_parameters() to check the number of trainable parameters:
n_params = model.num_parameters(only_trainable=True)
print(f"Trainable Parameters: {n_params:,}")

For the Mistral 7B model, it will print Trainable Parameters: 7,241,732,096 for full-parameter tuning.

@geronimi73 @penut85420 can I assume that the below code will fine-tune full parameter in the model.

i suggest you start with the example in the HF docs and see if that works and adapt it to your needs


Missing Solver

Version: 1.6.4
Git Pull: fbb99c17
Platform: Steam
[home ~/]> run daemon.js
Running script with 1 thread(s), pid 2 and args: [].
/Tasks/contractor.js.solver.js: WARNING: No solver available for contract type "Array Jumping Game II"
Full info: {"contract":"contract-261858.cct","hostname":"nwo","type":"Array Jumping Game II","data":[1,2,0,1,5,2,4,2,3,2,4]})
[home ~/]>

Pulled this from // TODO in solver:
name: "Array Jumping Game II",
    numTries: 3,
    solver: (data: number[], ans: string): boolean => {
      const n: number = data.length;
      let reach = 0;
      let jumps = 0;
      let lastJump = -1;
      while (reach < n - 1) {
        let jumpedFrom = -1;
        for (let i = reach; i > lastJump; i--) {
          if (i + data[i] > reach) {
            reach = i + data[i];
            jumpedFrom = i;
          }
        }
        if (jumpedFrom === -1) {
          jumps = 0;
          break;
        }
        lastJump = jumpedFrom;
        jumps++;
      }
      return jumps === parseInt(ans, 10);
    },
  },

There's another one that is bugging me:
/Tasks/contractor.js.solver.js: Unable to find the answer for: {"contract":"contract-32543-FulcrumSecretTechnologies.cct","hostname":"syscore","type":"HammingCodes: Encoded Binary to Integer","data":"101111101110101100"}
Maybe a different story as this one will have another solution (and cannot be solved by hand as the array jumping game)

I'm working on the last if these now


Only P2S?

Can you have ExpressRoute coexist with only a Point-to-Site connection on a VPN Gateway? The P2S section in this article seems to imply that you have to add P2S to an S2S connection.

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

ID: 23d4f079-654e-2053-4654-115a55e9379f
Version Independent ID: 2c032f28-ebd6-513e-4324-622ac80e85d6
Content: Configure ExpressRoute and Site-to-Site VPN connections that can coexist: PowerShell: Azure
Content Source: articles/expressroute/expressroute-howto-coexist-resource-manager.md
Service: expressroute
GitHub Login: @charwen
Microsoft Alias: charwen

@dcbrown16
Thanks for your feedback! We will investigate and update as appropriate.

@dcbrown16 yes it can. This article shows how to create a VPN gateway along with an ExpressRoute Gateway in the same VNET.
Once you have a VPN gateway up and running, you can use it for P2S and S2S Connections.

Ok, thanks!

Hi, thanks for this post. I have an additional question. Can I use P2S and S2S simultaneously? It looks like the VPN gateway ignores the P2S subnet and sends it over the ER!

which was an BGP issue. The P2S subnet was advertised from the S2S to on-prem and back to the other VGW over the expressroute. This caused an issue when connecting to P2S.
We solved it by filtering out the P2S subnet going back to Azure over the expressroute BPG neigbourship.
So issue solved!


Import of csv with value 0 does not work

Steps to reproduce:
List the minimal actions needed to reproduce the behavior.

Open the InfluxDB Web GUI
Navigate to Data -> Buckets
On a bucket, select Add Data -> CSV Upload
Upload this CSV file: 2021-08-11_11 29_influxdb_data.csv

Expected behavior:
The data is imported into the bucket
Actual behavior:
The following error message is displayed

Environment info:

System info: Linux 5.10.25-linuxkit x86_64
InfluxDB version: InfluxDB 2.0.7 (git: 2a45f0c037) build_date: 2021-06-04T19:17:40Z
Other relevant environment details: Containerized on Docker for Windows

Debug info
Using the browser dev tools, i found that the generated Line Protocol seems to be incorrect

I tested this again with InfluxDB 2.1.0 (Server: 435907d, Frontend: cc65325)
The first file (2021-08-11_11 29_influxdb_data.csv, value is 0) works as intended, the second one (empty_value_test_data.csv, value is empty string) does not write any points to the bucket.
If this is the intended behavior, this issue can be closed.

Thanks for the update @lukasbrun - I've verified that the behavior with InfluxDB 2.1 is the same as the cloud UI now, so I am closing this out.


RFC: Backstage System Model

We believe that a strong shared understanding and terminology around systems, software and resources leads to a better Backstage experience. This is a proposal for the basic entities we would model in Backstage, without going into how to implement this (yet).
We model our technology using these five concepts (further explained below):

Domains are a high-level grouping of systems
Systems encapsulate the implementation of APIs
APIs are the boundaries between different components and systems
Components are pieces of software
Resources are physical or virtual infrastructure needed to operate a system

Domain
While systems are the basic level of encapsulation for resources, components and APIs, it is often useful to group a collection of systems that share terminology, domain models, business purpose, or documentation, i.e. they form a bounded context.
For example, it would make sense if the different systems in the “Payments” domain would come with some documentation on how to accept payments for a new product or use-case, share the same entity types in their APIs, and integrate well with each other.
System
With increasing complexity in software, we believe that systems form an important abstraction level to help us reason about software ecosystems. Systems are a useful concept in that they allow us to ignore the implementation details of a certain functionality for consumers, while allowing the owning team to make changes as they see fit (leading to low coupling).
A system, in this sense, is a collection of resources and components that exposes one or several APIs. Components and resources in a system are typically owned by the same team and are expected to co-evolve. As such, systems usually consist of at most a handful of components.
For example, a playlist management system might encapsulate a backend service to update playlists, a backend service to query them, and a database to store them. It could expose an RPC API, a daily snapshots dataset, and an event stream of playlist updates.
Component
A component is a piece of software, for example a mobile feature, web site, backend service or data pipeline (list not exhaustive). A component can be tracked in source control, or use some existing open source or commercial software.
A component can implement APIs for other components to consume. It might depend on the resources of the system it belongs to, and APIs from other components or other systems. All other aspects of the component, e.g. any code dependencies, must be encapsulated.
API
We believe APIs form an important (maybe the most important) abstraction that allows large software ecosystems to scale. Thus, APIs are a first class citizen in the Backstage model and the primary way to discover existing functionality in the ecosystem.
APIs are implemented by components and form boundaries between components and systems. They might be defined using an RPC IDL (eg Protobuf, GraphQL, ...), a data schema (eg Avro, TFRecord, ...), or as code interfaces. In any case, APIs exposed by components need to be in a known machine-readable format so we can build further tooling and analysis on top.
Some APIs might be exposed by the system, making them available for any other Spotify component to consume. Those public APIs must be documented and humanly discoverable in Backstage.
Resource
Resources are the infrastructure a system needs to operate, like BigTable databases, Pub/Sub topics, S3 buckets or CDNs. Modelling them together with components and systems will better allow us to visualize resource footprint, and create tooling around them.

This RFC does not yet mention entity ID spaces, and/or entities being sourced from several different ecosystems.
For example, if the data insights part of an organisation owns the concept and inventory of data pipelines, then would we require that their IDs do not clash with backend service component IDs? Or will they be namespaced to "kinds" or such, similar to k8s?

@freben Good question, I don't have a strong opinion on that. How to manage the inventory and id spaces in a good way probably warrants a whole separate writeup. Do you want to propose something, given you have insights from how this works at Spotify today?

Not quite yet, but when we start drafting the inventory part of Backstage, we'll have to tackle it. For now, this was more of a food-for-thought question.

I know this issue does not go into implementation details, but I'm adding this link here since people may be interested: https://medium.com/the-guild/graphql-mesh-query-anything-run-anywhere-433c173863b5

This is AMAZING! Thanks for doing this. We have built something similar at Farfetch and would love to contribute here. Some questions:

Would the "API" here only list networked services or would it include libraries ?
At what level would we assign ownership (human or group or other machines maybe )?
Some prior art comes from cmdb which try to capture only physical resources, are we limiting backstage only to a system level ?
Are we considering capturing "data flow" and dependencies across domains and systems ?

Would the "API" here only list networked services or would it include libraries ?

Internally at Spotify, we track a growing number of kinds of thing. The focus has been on software components of various types - services, websites, libraries, data pipelines, machine learning models etc. But it is also extending onto other types of software-or-system-like things, not necessarily created by us. For example, our internal Jira installation is owned and operated by a team, and that fact is also registered in our inventory. Same could go for third party external things such as Pagerduty, where we don't technically own the service as such but somebody owns the interaction, "problem space" and contracts etc - so that's registered as well.
What things are you most interested in inventorising?

At what level would we assign ownership (human or group or other machines maybe )?

Currently the owner field is just a string in the backing system, and it's up to other layers to enforce and/or validate it.
We have historically forced ownership to be on a team basis, so internally, to be considered well formed, our owner field should point to the LDAP name of a squad following certain rules. Some things may point to individuals and we don't reject that, but may inform you in the web interface that this is not normally allowed and you should change it. We are also expanding these rules internally to check that all component-owning teams are properly tied to a cost center to be able to do cost attribution etc. Being able to automatically track and analyse these things properly is one of the neat things of having such an inventory system.
We realise that these types of business rules may be different for each company that adapts Backstage and would need to leave it configurable or pluggable in some way in the open source product. We'd be interested to hear what your ideal setup could look like.

Some prior art comes from cmdb which try to capture only physical resources, are we limiting backstage only to a system level ?

Could you expand on this question a bit? The main target for this inventory has not historically been physical things, but maybe it could be relevant to expand the Resource concept to that?

Are we considering capturing "data flow" and dependencies across domains and systems ?

That is absolutely a very interesting thing to track. An inventory system could perhaps help store references between components and resources, but probably mostly for very static things.
Internally, we have usually deferred the indexing of more dynamic relationships, to runtime analysis systems. I.e., they would probably not be managed or stored by the inventory system but by other specialised services.
One such example would be service -> library dependencies; this would likely be burdensome to maintain manually, and besides, it will change over time from version to version of the service. So that may better be served by the CI/CD system having a post-build analysis step in it. A specialised service could ingest and serve that information.
Another example may be what pubsub topics that are consumed by services. The best source of that would be tracing the actual usage by live services, or perhaps by analysing the RBAC setups for service accounts that the live services use. A specialised service could deal with that too.
See where this is going? It's a super interesting problem space, and we hope to make use of current and future open source offerings to let you have a rich and vibrant data set to consume in Backstage and display in all of the relevant service views, maximising insights into the ongoings of your software fleet. But the data may come from many places and be aggregated in various nice ways. Internally we have a GraphQL service that helps with this.

Would the "API" here only list networked services or would it include libraries?

Likely both. As per @freben's answer, we track many different types of software components, but think it's particularly useful to identify APIs that form boundaries between systems. The need for code interfaces as APIs has also come up in internal discussion (eg in application frameworks or large applications such as our mobile clients), I'll update the issue with a formulation that is more inclusive for that.

At what level would we assign ownership (human or group or other machines maybe)?

I'd propose that all entities in this model have an owner. What form ownership takes might be company-specific, in Spotify's case we would want to verify that they are valid teams in our internal LDAP.

Some prior art comes from cmdb which try to capture only physical resources, are we limiting backstage only to a system level?

No, we think the Resource type described here would be suitable for tracking physical resources. This is probably more useful for longer-lived ones (eg servers). As we are fully cloud-based at this point, it would be great to learn more about what types of resources you'd like to track.

Are we considering capturing "data flow" and dependencies across domains and systems?

Those things would make great Backstage plugins :) At this point, we'd start with having a central inventory service that keeps track of what entities exist. We can then attach additional information at runtime, from offline analysis, or from static metadata in source repositories.

This is a really simple but powerful model, very interesting.
At bol.com we've been prototyping a service called Katalog specifically to host API specifications (i.e. Swagger or OpenAPI specs, but potentially any kind of spec, like gRPC). The idea is that teams can associate different version of specs to a service, notify users of deprecations, etc. Consumers of a service can retrieve an API spec based on a NPM/Maven style glob (i.e. "give me version 2.x of service Foo"). It's not yet deployed though, but I think the core concepts could be very suitable for inclusion in Backstage in some form.
So, I’m not completely sure yet how much of Backstage is going to be “just” a frontend on a number of disjunct backend systems, or whether it will be hosting a bunch of data itself as well. The reason I ask is that currently Katalog is doing a bunch of things that ideally we’d want to centralize: User/group management, management of “namespaces” and “groups” (ideally replaced by the system model), mailing, notifications, scheduled jobs, etc. It feels like it would be very useful if a lot of these things could be centralized since a lot of Backstage plugins will want to re-use this functionality.
In fact, you could argue that having a “watch” function in Backstage to get notifications about interesting things happening to a certain system would be very nice: It could aggregate a bunch of interesting events from multiple plugins and push them to the user (e.g. via daily mails or whatever). This is now a feature in Katalog, but why limit it to just changes in your API specs?
So the question for me now is: Does this fit in your vision? Can Katalog be focused on just “attaching” API specifications to the API part of your system model, and can Backstage do all of the overall orchestration? Would Katalog even exist as a product as it is now, or would we be able to make it much more lightweight? Is a Backstage plugin also a server component or just a frontend component?
Anyway, I'd be interested to hear your thoughts on this here, on in a separate issue perhaps.

@RoyJacobs there are a few things to unpack here :)
From an API use-case perspective we envision two different ways for people to use Backstage to explore APIs:

Inspecting the API of a backend service. The current way we do this at Spotify is described in this short video. Currently we only support REST/OpenAPI but I think at least gRPC should be supported as well. I imagine this use-case will become part of Backstage when we get to Phase 2.

Exploring all APIs in an organisation. In 1) you first need to know the name of the service to find its API. This limits discoverability and I think a separate plugin should expose a "API explorer" where a user can browse and find all APIs inside an org.

Nr 2 requires a central repository of all the APIs. This is not something Spotify has today, but if I'm understanding correctly, this is one of the use-cases for Katalog. If this is the case and you are interested/willing to help integrate Katalog as a plugin in Backstage that would be great. As you say, it might be better to create a separate issue in that case.
Having a watch- and notification system sounds useful for the broader Backstage platform -- not just tied to one specific plugin or use-case. Feel free to create an issue for it as well.

I think Katalog could be quite suitable for this, but I'd prefer to make it somewhat more lightweight than it currently is. The two main things it currently is managing itself, but I'd rather keep out of scope, is user/group management and the hierarchy of the APIs (i.e. to which system does this particular API belong).
Would it make sense to create a tracking issue to discuss a "Backstage system model API" that other services, like Katalog, would consume? This would make Katalog a "Backstage-only" system, effectively (well, in its initial revised version anyway), but that's fine for our needs currently.
For now, user management could be out of scope, under the assumption that all APIs within a company could be considered "public" within the company.

@RoyJacobs put together an issue outlining how we envision API documentation from a user perspective, i.e. as exposed in a plugin: https://github.com/spotify/backstage/issues/627
I still think there is a need to clarify how this would technically fit together with the contents of this RFC. Probably best handled as a separate issue.

I really like the idea to have a unified layer where all the plugins could read from. I'm thinking about something like what Gatsby.js does, where it consumes inputs and it exposes a single GraphQL API where any page can consume potentially any data it wants, by making GraphQL calls.
The suggestion of using something like GraphQL Mesh makes total sense to me, as it would be simple to just stitch together multiple backends under a single layer that can be consumed from any plugin, making integrations between plugins really nice. And potentially releasing independent backends, that will feed data to the GraphQL layer, and plugins, that will consume it.

One of the things I've encountered a lot with microservice work is data model. Namely, the number of data models scales at a rate of Ω(#services), barring an external force. Thus, within certain solution areas, I've leveraged shared data models, where a master specification is used to hydrate the data model across all users (thus, multiple APIs expose/reuse the same data model). I assume that's something encountered here as well, since the Domain concept discusses entity models; but it's non-obvious to me where those entity models would reside below it. Are they part of the domain, or component, or something else?
Another class of entities from the screenshots/videos that's at least hinted, is monitoring, metrics, operational data and logging. Are they treated on a Service level, or sub-levels (component/resource)? Both component/resource do have individual metrics (especially if resource is DB/cloud resources), but for someone external to the team maybe only the Service metrics are really interesting for an overview (is it up? where is it up? expected performance?).
As for APIs themselves, following the diagram, while it's technically true that an API is implemented by one or more components, it may be relevant to declare/track accessed using as an item. Sometimes, it may be that a collection of APIs may be implemented by a number of components, but accessed through a single service (Spinnaker orca == implementation, Spinnaker gate == access) to apply access control and authorization.

Remaining work: create documentation about what the metadata structures look like, after setting #983

Hey all! Thanks for putting so much work into making these concepts clear, it's so key for anyone trying to adopt backstage in their own company.
One thing I'm missing from the concept diagram presented here is the idea of an application environment. We tend to model our applications as services, each of which runs several environments.
I'm not clear how this type of concept works in the backstage catalog entity model? Do we assume each environment is modelled as a separate component? Grouped within the same or a different system/API?
I might be missing something here but I think some additional clarity around this area would be really useful. I suspect a lot of places think in terms of 'service+environment' combinations, and would be useful more generically.

The initial limited scope of the catalog (with a focus on Component) has now been merged and settled in documentation, so closing this issue.

@lawrencejones Hi! Thanks, keep us updated if there's more we could do to address or document things that you run into.
Regarding your question:
If I understand your situation correctly, that sounds like still just one Component in our parlance. As in, it is one set of source code, consistently owned and maintained by a group of people. The build and deployment strategies are a completely separate dimension to us, and those may well be reflected in the Backstage user interface as well, but under the "umbrella" of that one component.
For example, internally, our deployment/rollout system has support for both canaries and autoscaling and various other features, but those are managed by services for which there exist Backstage plugins to modify or track their behavior. For example there is a button to roll back to a previous known good build artifact, or to promote from canary to full deploy etc. Those are the concerns that the engineers that own the component need to interact with directly and effectively, so that's what is presented to them. The component page has tabs on its side to navigate between the views for build logs, deployment, API overview, quality metrics ... and all of the other infra for which this group of pages represents the glue.
But the component is referred to uniquely across all of this.

That all makes a lot of sense @freben. Still trying to understand how to model our systems in this language- thank you for your clear explanation!

@mbruggmann An evemt stream output (perhaps as a pubsub topic) from a service would fit neatly within the API concept, would it not? Or does it even deserve special treatment?

@freben Agreed, it'd be nice to model event streams as APIs. Then Backstage could list all available pub/sub topics with their payload schemas 😍

There is an effort to standardize these kinds of API through Async API. I'm not sure if this is too detailed for you, but it could be an inspiration for the model maybe?


rootDir points to the folder that contains jest-config

<rootDir> points to the folder that contains jest-config instead of the root of the directory containing the package.json or the pwd if no package.json is found
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
<rootDir> gets replaced with the path to the folder that contains config file.
If the current behavior is a bug, please provide the steps to reproduce and either a repl.it demo through https://repl.it/languages/jest or a minimal repository on GitHub that we can yarn install and yarn test.
That works fine when your jest config lives in root dir, but if you place your jest config in a different folder (say test) then config paths will be wrong because a <rootDir>/src will be transformed into /myproj/test/src instead of myproj/src.
What is the expected behavior?
As per documentation (and behaviour in 19):

rootDir [string]
Default: The root of the directory containing the package.json or the pwd if no package.json is found

Please provide your exact Jest configuration and mention your Jest, node, yarn/npm version and operating system.
Jest: 20.0.3
Node: v7.5.0
NPM 4.1.2
macOS 10.12.4
jestConfig:
{
  "transform": {
    ".*": "<rootDir>/test/jest-preprocessor.js"
  },
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js",
    "json",
    "svg",
    "png",
    "gif"
  ],
  "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js",
  "testEnvironment": "node",
  "testRegex": "(/__tests__/.*|\\.tests?)\\.(ts|tsx)$",
  "roots": [
    "<rootDir>/src"
  ],
  "testResultsProcessor": "jest-teamcity-reporter",
  "coverageDirectory": "<rootDir>/build/coverage/",
  "coverageReporters": [
    "text-summary",
    "teamcity",
    "html",
    "json"
  ]
}

running with jest --config test/jest-config.json --forceExit --coverage

I can confirm having exactly the same problem when upgrading from Jest 19 to Jest 20.
I'm using macOS 10.12.4, but for my team members using Windows, the "Validation Error" reporting the path which can't be resolved isn't displayed.

I added "rootDir": "../" to my jest config (my jest config is one level deeper than my project root.  Works great now ... however I'm not sure if Jest is supposed to find my project root (for example through the package.json location) automatically, if I don't specify rootDir.

Awesome, thanks @bhouser! Adding a "rootDir" config fixed things for me.

"rootDir" will not work for monorepo's where the rootDir changes based on which packages are being tested. Adding --rootDir flag to the jest command is a work around we use.

@redonkulus for that use "roots" instead. "rootDir" is, for now, just for reporters to show proper path and for providing the project root (from where you run the command).

This is documented behavior (#4726)

For anyone arriving here because of issues running tests in a monorepo: I came across this when I was trying to run tests from the root of a lerna monorepo using the --rootDir command line option. For some reason unlike in other commands such as tslint, in jest the working directory is the lerna root (which does happen to have a package.json).
My workaround was taking advantage of the fact that the location of jest.config.js takes priority; by placing a jest.config.js in each of the modules but not in the monorepo root, the tests run as expected. Any jest configurations common to all modules go in the lerna root's package.json now.

For anyone arriving here because of issues running tests in a monorepo: I came across this when I was trying to run tests from the root of a lerna monorepo using the --rootDir command line option. For some reason unlike in other commands such as tslint, in jest the working directory is the lerna root (which does happen to have a package.json).
My workaround was taking advantage of the fact that the location of jest.config.js takes priority; by placing a jest.config.js in each of the modules but not in the monorepo root, the tests run as expected. Jest configurations now have to go in this file, as configs in package.json are not merged. Jest configurations common to all modules will be a problem for the future, for the time being.

For shared Jest configuration, a base config file somewhere in the root is a good option. You can even export a function there that accepts the root dir of the subproject and sets it as the rootDir. Each project then has a jest.config.js with only:
module.exports = require('../../config/jest/base.config.js')(__dirname);

For shared Jest configuration, a base config file somewhere in the root is a good option. You can even export a function there that accepts the root dir of the subproject and sets it as the rootDir. Each project then has a jest.config.js with only:
module.exports = require('../../config/jest/base.config.js')(__dirname);

Just to let you know I was researching for hours to find this answer. Very helpful, thanks!
Maybe worth a dedicated/prominent section in the docs - since it's quite a common case to do multi-root and currently takes a lot of research to find the answer.

Maybe worth a dedicated/prominent section in the docs - since it's quite a common case to do multi-root and currently takes a lot of research to find the answer.

Happy to accept a PR for this! :)


Update @yamada-ui/table accessibility

Description
his issue aims to address accessibility deficiencies in our table component as per W3C guidelines.
The component currently does not meet the accessibility standards outlined in the W3C documentation.
The goal is to ensure the component is accessible to all users, including those using assistive technologies.
Ensure that all unchecked items in this checklist should be addressed.
WAI-ARIA Roles, States, and Properties

[ ] If there is an element in the user interface that serves as a label for the table, aria-labelledby is set on the table element with a value that refers to the labelling element. Otherwise, a label is specified for the table element using aria-label.
[ ] If the table has a caption or description, aria-describedby is set on the table element with a value referring to the element containing the description.
[x] If the table contains sortable columns or rows, aria-sort is set to an appropriate value on the header cell element for the sorted column or row as described in the Grid and Table Properties Practice.
[x] If there are conditions where some rows or columns are hidden or not present in the DOM, e.g., there are widgets on the page for hiding rows or columns, the following properties are applied as described in the Grid and Table Properties Practice.

[x] aria-colcount or aria-rowcount is set to the total number of columns or rows, respectively.
[x] aria-colindex or aria-rowindex is set to the position of a cell within a row or column, respectively.

[ ] If the table includes cells that span multiple rows or multiple columns, then aria-rowspan or aria-colspan is applied as described in the Grid and Table Properties Practice.

Problem Statement/Justification
none
Proposed Solution or API
No response
Alternatives
none
Are you willing to participate in implementing this feature and create a pull request include the implementation?
None
Additional Information
No response

I'll try it.

@nakayan5
Was the role unnecessary?

@setodeve
I think it is unnecessary because of the implicit roll.


Create relation 'blockers' to find who is blocking me

This should be the inverse of the blocks the same as following/followers are inverse of each other.

This should be the inverse of the blocks the same as following/followers are inverse of each other.

Hi @weiserma, I created an PR for creating blockers relation.

perhaps you can add an info field so you can pass a reason for friendship or a block.

send_follow_request_to?(obj, reason='')
block(obj, reason='')

I see value to use this data for 1) follow to decide to accept/reject and 2) admin can decide if the block reason should have further consequences.

Hey @weiserma, thanks for writing this up. I think this feature is beyond the scope of this gem.
You can create an extension for this feature if you want. 👌🏻


[BUG] failed to register Get route for /:path pattern: insertion failed due to conflict with previously registered route: //',

Is there an existing issue for this?

[X] I have searched the existing issues

What version of workers-rs are you using?
0.0.17
What version of wrangler are you using?
3.3.0
Describe the bug
Unable to create such routing
    Router::new()
        .get("/abc/:path", |_req, ctx| {
            Response::ok("Hello world")
        })
        .get("/:path", |_req, ctx| {
            Response::ok("Hello world2")
        })
        .run(req, env).await

error:
panicked at 'failed to register Get route for /:path pattern: insertion failed due to conflict with previously registered route: //', /home/gytis/.local/share/cargo/registry/src/index.crates.io-6f17d22bba15001f/worker-0.0.17/src/router.rs:327:21

Steps To Reproduce
Running code specified above

This would be a very helpful update, the path conflict error is preventing us from easily implementing an important feature for our product. If there is any help i can provide to get this through I am more than wiling!

I think I'll just ping a bunch of committers and let's see what happens
@zebp @xtuc @zebp @mendess @kflansburg @dsmyda @KianNH @FlareLine @aseure @TonyGiorgio @will118 @irvinebroque @cjpatton @SebastiaanYN @a1ecbr0wn
Sorry for the ping

any updates? would love to see this update coming too


Running the notebooks

@kalmarek here are some things in noticed when running the notebooks.

[ ] In Simply laced diagrams it says "A jupyter server may then be launched within the directory Chevalley_replication ...". The directory Chevalley_replication is presumably the old name of the project and no longer exists?
[ ] In Simply laced diagrams in cell [24] and somewhere in the other notebooks: Under "Solving the problem numerically" I get "WARNING: could not import SCS_MKL_jll.MKL_jll into SCS" but the optimization still succeeds, so this probably doesn't mater.

Everything else worked as expected!

@RearrangedLetters thanks for running those;
the first issue is fixed by #4;
the second is upstream problem at the moment: https://github.com/jump-dev/SCS.jl/issues/278


[BUG]  Missing and incomplete Metadata

Describe the bug
When reading metadata from a file (in my case, a TIFF file), some metadata is missing (most GPS related info), and some is incomplete (some metadata that is Matrix, or 2D/3D vectors/points/tuples), only reading the first element.
To Reproduce
Steps to reproduce the behavior:

Run iinfo -a -v on the image file
Compare output to exiftool

Expected behavior
Full multi-element metadata values to be present, and output the missing metadata such as GPS.
Evidence
In particular, note the difference in output between iinfo and exiftool for the "AlignMatrix", "AlignXYDeg", "VignettingCenter", and "VignettingPolynomial" fields.  The "PerspectiveDistortion" key does seem to be correctly read in both iinfo and exiftool.
Output of exiftool (note, there is some filesystem related info that exiftool slaps on the output that I wouldn't expect OIIO to recreate.  Also, only one subimage's metadata is pasted for brevity):
ExifTool Version Number         : 12.14
File Name                       : IMG_0157.tif
Directory                       : /mnt/storage/EnSpec/DATA_Projects/PanelLocTestData/2020-07-19_17-23-11/multiband
File Size                       : 23 MiB
File Modification Date/Time     : 2018:08:01 01:55:22-05:00
File Access Date/Time           : 2021:02:14 17:33:46-06:00
File Inode Change Date/Time     : 2021:02:12 16:48:16-06:00
File Permissions                : rwxr--r--
File Type                       : TIFF
File Type Extension             : tif
MIME Type                       : image/tiff
Exif Byte Order                 : Little-endian (Intel, II)
Image Width                     : 1904
Image Height                    : 1428
Bits Per Sample                 : 12
Compression                     : Uncompressed
Photometric Interpretation      : BlackIsZero
Orientation                     : Horizontal (normal)
Samples Per Pixel               : 1
Rows Per Strip                  : 1428
X Resolution                    : 238
Y Resolution                    : 238
Planar Configuration            : Chunky
Resolution Unit                 : inches
Above Ground Altitude           : 111.612001
Flight Unique ID                : 2020-07-19_17-23-11
GPSXY Accuracy                  : 0.660000
GPSZ Accuracy                   : 1.017000
Image Unique ID                 : 5010
Is Normalized                   : 0
Model Type                      : perspective
Perspective Distortion          : -0.117,0.179,-0.045,0.000,0.000
Perspective Focal Length        : 7.800
Perspective Focal Length Units  : mm
Pitch                           : 0.000000
Principal Point                 : 3.263,2.471
Rig Camera Index                : 0
Rig Name                        : Sentera-6x
Rig Relatives                   : 0.000,0.000,0.000
Roll                            : 0.000000
Yaw                             : 90.000000
Band Name                       : Blue
Band Sensitivity                : 0.555
Central Wavelength              : 475
Sun Sensor                      : 16290.876
Wavelength FWHM                 : 30
Align Enabled                   : 1
Session                         : 2020-07-19_17-23-11
Vignetting Enabled              : 1
Align Matrix                    : 0.999999, 0.001538, 77.199890, -0.001538, 0.999999, 53.255005, 0.000000, 0.000000, 1.000000
Align XY Deg                    : 78.300, 51.800, -0.088
Vignetting Center               : 1024.00, 768.00
Vignetting Polynomial           : 0, 0, 6.5e-10
Fill Order                      : Normal
Make                            : Sentera
Camera Model Name               : 21214-01_3.2MP-GS-0001
Strip Offsets                   : 18972672
Strip Byte Counts               : 4078368
Software                        : 1.3.2
Modify Date                     : 2020:07:19 17:36:28
Exposure Time                   : 1/830
F Number                        : 1.8
ISO                             : 193
Exif Version                    : 0230
Date/Time Original              : 2020:07:19 17:36:28
Create Date                     : 2020:07:19 17:36:28
Aperture Value                  : 1.8
Metering Mode                   : Average
Focal Length                    : 8.0 mm
Image Number                    : 157
Sub Sec Time                    : 125538
Sub Sec Time Original           : 125538
Sub Sec Time Digitized          : 125538
Flashpix Version                : 0100
Focal Plane X Resolution        : 2898.5504
Focal Plane Y Resolution        : 2898.5504
Focal Plane Resolution Unit     : cm
Exposure Mode                   : Auto
Scene Capture Type              : Standard
GPS Version ID                  : <IP_ADDRESS>
GPS Latitude Ref                : North
GPS Longitude Ref               : West
GPS Altitude Ref                : Above Sea Level
GPS Time Stamp                  : 17:36:28.125438
GPS Satellites                  : 26
GPS Measure Mode                : 3-Dimensional Measurement
GPS Dilution Of Precision       : 1.05
GPS Map Datum                   : EGM96
GPS Processing Method           : 3D
GPS Date Stamp                  : 2020:07:19
GPS Differential                : No Correction
GPS Horizontal Positioning Error: 0.66 m
Serial Number                   : 047
Lens Model                      : 8.00mm-0005_0024
Aperture                        : 1.8
Image Size                      : 1904x1428
Lens ID                         : 8.00mm-0005_0024
Megapixels                      : 2.7
Scale Factor To 35 mm Equivalent: 5.3
Shutter Speed                   : 1/830
Create Date                     : 2020:07:19 17:36:28.125538
Date/Time Original              : 2020:07:19 17:36:28.125538
Modify Date                     : 2020:07:19 17:36:28.125538
GPS Altitude                    : 473.7 m Above Sea Level
GPS Date/Time                   : 2020:07:19 17:36:28.125438Z
GPS Latitude                    : 42 deg 53' 41.20" N
GPS Longitude                   : 89 deg 43' 7.64" W
Circle Of Confusion             : 0.006 mm
Field Of View                   : 46.2 deg
Focal Length                    : 8.0 mm (35 mm equivalent: 42.2 mm)
GPS Position                    : 42 deg 53' 41.20" N, 89 deg 43' 7.64" W
Hyperfocal Distance             : 6.24 m
Light Value                     : 10.4

Output of iinfo:
    5 subimages: 1904x1428 [u12], 1904x1428 [u12], 1904x1428 [u12], 1904x1428 [u12], 1904x1428 [u12]
 subimage  0: 1904 x 1428, 1 channel, uint12 tiff
    channel list: Y
    compression: "none"
    DateTime: "2020:07:19 17:36:28"
    ExposureTime: 0.001409
    FNumber: 1.8
    Make: "Sentera"
    Model: "21214-01_3.2MP-GS-0001"
    Orientation: 1 (normal)
    PixelAspectRatio: 1
    planarconfig: "contig"
    ResolutionUnit: "in"
    Software: "1.3.2"
    XResolution: 238
    YResolution: 238
    Camera:AboveGroundAltitude: "111.612001"
    Camera:BandName: "Blue"
    Camera:BandSensitivity: "0.555"
    Camera:CentralWavelength: "475"
    Camera:FlightUniqueID: "2020-07-19_17-23-11"
    Camera:GPSXYAccuracy: "0.660000"
    Camera:GPSZAccuracy: "1.017000"
    Camera:ImageUniqueID: "5010"
    Camera:IsNormalized: "0"
    Camera:ModelType: "perspective"
    Camera:PerspectiveDistortion: "-0.117,0.179,-0.045,0.000,0.000"
    Camera:PerspectiveFocalLength: "7.800"
    Camera:PerspectiveFocalLengthUnits: "mm"
    Camera:Pitch: "0.000000"
    Camera:PrincipalPoint: "3.263,2.471"
    Camera:RigCameraIndex: "0"
    Camera:RigName: "Sentera-6x"
    Camera:RigRelatives: "0.000,0.000,0.000"
    Camera:Roll: "0.000000"
    Camera:SunSensor: "16290.876"
    Camera:WavelengthFWHM: "30"
    Camera:Yaw: "90.000000"
    Exif:ApertureValue: 1.69599 (f/1.8)
    Exif:BodySerialNumber: "047"
    Exif:DateTimeDigitized: "2020:07:19 17:36:28"
    Exif:DateTimeOriginal: "2020:07:19 17:36:28"
    Exif:ExposureMode: 0 (auto)
    Exif:FocalLength: 8 (8 mm)
    Exif:FocalPlaneResolutionUnit: 3 (cm)
    Exif:FocalPlaneXResolution: 2898.55
    Exif:FocalPlaneYResolution: 2898.55
    Exif:LensModel: "8.00mm-0005_0020"
    Exif:MeteringMode: 1 (average)
    Exif:SceneCaptureType: 0 (standard)
    Exif:SubsecTime: "125436"
    Exif:SubsecTimeDigitized: "125436"
    Exif:SubsecTimeOriginal: "125436"
    oiio:BitsPerSample: 12
    oiio:ColorSpace: "sRGB"
    Sentera:AlignEnabled: "1"
    Sentera:AlignMatrix: "1.000000"
    Sentera:AlignXYDeg: "-0.088"
    Sentera:Session: "2020-07-19_17-23-11"
    Sentera:VignettingCenter: "768.00"
    Sentera:VignettingEnabled: "1"
    Sentera:VignettingPolynomial: "6.5e-10"
    tiff:Compression: 1
    tiff:PhotometricInterpretation: 1
    tiff:PlanarConfiguration: 1
    tiff:RowsPerStrip: 2
 subimage  1: 1904 x 1428, 1 channel, uint12 tiff
    channel list: Y
    compression: "none"
    DateTime: "2020:07:19 17:36:28"
    ExposureTime: 0.001484
    FNumber: 1.8
    Make: "Sentera"
    Model: "21214-01_3.2MP-GS-0001"
    Orientation: 1 (normal)
    PixelAspectRatio: 1
    planarconfig: "contig"
    ResolutionUnit: "in"
    Software: "1.3.2"
    XResolution: 238
    YResolution: 238
    Camera:AboveGroundAltitude: "111.612001"
    Camera:BandName: "Green"
    Camera:BandSensitivity: "0.598"
    Camera:CentralWavelength: "550"
    Camera:FlightUniqueID: "2020-07-19_17-23-11"
    Camera:GPSXYAccuracy: "0.660000"
    Camera:GPSZAccuracy: "1.017000"
    Camera:ImageUniqueID: "5010"
    Camera:IsNormalized: "0"
    Camera:ModelType: "perspective"
    Camera:PerspectiveDistortion: "-0.117,0.179,-0.045,0.000,0.000"
    Camera:PerspectiveFocalLength: "7.800"
    Camera:PerspectiveFocalLengthUnits: "mm"
    Camera:Pitch: "0.000000"
    Camera:PrincipalPoint: "3.375,2.459"
    Camera:RigCameraIndex: "1"
    Camera:RigName: "Sentera-6x"
    Camera:RigRelatives: "0.000,0.000,0.000"
    Camera:Roll: "0.000000"
    Camera:SunSensor: "22948.891"
    Camera:WavelengthFWHM: "20"
    Camera:Yaw: "90.000000"
    Exif:ApertureValue: 1.69599 (f/1.8)
    Exif:BodySerialNumber: "047"
    Exif:DateTimeDigitized: "2020:07:19 17:36:28"
    Exif:DateTimeOriginal: "2020:07:19 17:36:28"
    Exif:ExposureMode: 0 (auto)
    Exif:FocalLength: 8 (8 mm)
    Exif:FocalPlaneResolutionUnit: 3 (cm)
    Exif:FocalPlaneXResolution: 2898.55
    Exif:FocalPlaneYResolution: 2898.55
    Exif:LensModel: "8.00mm-0005_0021"
    Exif:MeteringMode: 1 (average)
    Exif:SceneCaptureType: 0 (standard)
    Exif:SubsecTime: "125399"
    Exif:SubsecTimeDigitized: "125399"
    Exif:SubsecTimeOriginal: "125399"
    oiio:BitsPerSample: 12
    oiio:ColorSpace: "sRGB"
    Sentera:AlignEnabled: "1"
    Sentera:AlignMatrix: "1.000000"
    Sentera:AlignXYDeg: "0.303"
    Sentera:Session: "2020-07-19_17-23-11"
    Sentera:VignettingCenter: "768.00"
    Sentera:VignettingEnabled: "1"
    Sentera:VignettingPolynomial: "6.5e-10"
    tiff:Compression: 1
    tiff:PhotometricInterpretation: 1
    tiff:PlanarConfiguration: 1
    tiff:RowsPerStrip: 2
 subimage  2: 1904 x 1428, 1 channel, uint12 tiff
    channel list: Y
    compression: "none"
    DateTime: "2020:07:19 17:36:28"
    ExposureTime: 0.000902
    FNumber: 1.8
    Make: "Sentera"
    Model: "21214-01_3.2MP-GS-0001"
    Orientation: 1 (normal)
    PixelAspectRatio: 1
    planarconfig: "contig"
    ResolutionUnit: "in"
    Software: "1.3.2"
    XResolution: 238
    YResolution: 238
    Camera:AboveGroundAltitude: "111.612001"
    Camera:BandName: "Red"
    Camera:BandSensitivity: "0.693"
    Camera:CentralWavelength: "670"
    Camera:FlightUniqueID: "2020-07-19_17-23-11"
    Camera:GPSXYAccuracy: "0.660000"
    Camera:GPSZAccuracy: "1.017000"
    Camera:ImageUniqueID: "5010"
    Camera:IsNormalized: "0"
    Camera:ModelType: "perspective"
    Camera:PerspectiveDistortion: "-0.117,0.179,-0.045,0.000,0.000"
    Camera:PerspectiveFocalLength: "7.800"
    Camera:PerspectiveFocalLengthUnits: "mm"
    Camera:Pitch: "0.000000"
    Camera:PrincipalPoint: "3.245,2.443"
    Camera:RigCameraIndex: "2"
    Camera:RigName: "Sentera-6x"
    Camera:RigRelatives: "0.000,0.000,0.000"
    Camera:Roll: "0.000000"
    Camera:SunSensor: "14802.615"
    Camera:WavelengthFWHM: "30"
    Camera:Yaw: "90.000000"
    Exif:ApertureValue: 1.69599 (f/1.8)
    Exif:BodySerialNumber: "047"
    Exif:DateTimeDigitized: "2020:07:19 17:36:28"
    Exif:DateTimeOriginal: "2020:07:19 17:36:28"
    Exif:ExposureMode: 0 (auto)
    Exif:FocalLength: 8 (8 mm)
    Exif:FocalPlaneResolutionUnit: 3 (cm)
    Exif:FocalPlaneXResolution: 2898.55
    Exif:FocalPlaneYResolution: 2898.55
    Exif:LensModel: "8.00mm-0005_0022"
    Exif:MeteringMode: 1 (average)
    Exif:SceneCaptureType: 0 (standard)
    Exif:SubsecTime: "125690"
    Exif:SubsecTimeDigitized: "125690"
    Exif:SubsecTimeOriginal: "125690"
    oiio:BitsPerSample: 12
    oiio:ColorSpace: "sRGB"
    Sentera:AlignEnabled: "1"
    Sentera:AlignMatrix: "1.000000"
    Sentera:AlignXYDeg: "0.010"
    Sentera:Session: "2020-07-19_17-23-11"
    Sentera:VignettingCenter: "768.00"
    Sentera:VignettingEnabled: "1"
    Sentera:VignettingPolynomial: "6.5e-10"
    tiff:Compression: 1
    tiff:PhotometricInterpretation: 1
    tiff:PlanarConfiguration: 1
    tiff:RowsPerStrip: 2
 subimage  3: 1904 x 1428, 1 channel, uint12 tiff
    channel list: Y
    compression: "none"
    DateTime: "2020:07:19 17:36:28"
    ExposureTime: 0.001308
    FNumber: 1.8
    Make: "Sentera"
    Model: "21214-01_3.2MP-GS-0001"
    Orientation: 1 (normal)
    PixelAspectRatio: 1
    planarconfig: "contig"
    ResolutionUnit: "in"
    Software: "1.3.2"
    XResolution: 238
    YResolution: 238
    Camera:AboveGroundAltitude: "111.612001"
    Camera:BandName: "RedEdge"
    Camera:BandSensitivity: "0.370"
    Camera:CentralWavelength: "715"
    Camera:FlightUniqueID: "2020-07-19_17-23-11"
    Camera:GPSXYAccuracy: "0.660000"
    Camera:GPSZAccuracy: "1.017000"
    Camera:ImageUniqueID: "5010"
    Camera:IsNormalized: "0"
    Camera:ModelType: "perspective"
    Camera:PerspectiveDistortion: "-0.117,0.179,-0.045,0.000,0.000"
    Camera:PerspectiveFocalLength: "7.800"
    Camera:PerspectiveFocalLengthUnits: "mm"
    Camera:Pitch: "0.000000"
    Camera:PrincipalPoint: "3.305,2.460"
    Camera:RigCameraIndex: "3"
    Camera:RigName: "Sentera-6x"
    Camera:RigRelatives: "0.000,0.000,0.000"
    Camera:Roll: "0.000000"
    Camera:SunSensor: "12760.552"
    Camera:WavelengthFWHM: "10"
    Camera:Yaw: "90.000000"
    Exif:ApertureValue: 1.69599 (f/1.8)
    Exif:BodySerialNumber: "047"
    Exif:DateTimeDigitized: "2020:07:19 17:36:28"
    Exif:DateTimeOriginal: "2020:07:19 17:36:28"
    Exif:ExposureMode: 0 (auto)
    Exif:FocalLength: 8 (8 mm)
    Exif:FocalPlaneResolutionUnit: 3 (cm)
    Exif:FocalPlaneXResolution: 2898.55
    Exif:FocalPlaneYResolution: 2898.55
    Exif:LensModel: "8.00mm-0005_0023"
    Exif:MeteringMode: 1 (average)
    Exif:SceneCaptureType: 0 (standard)
    Exif:SubsecTime: "125488"
    Exif:SubsecTimeDigitized: "125488"
    Exif:SubsecTimeOriginal: "125488"
    oiio:BitsPerSample: 12
    oiio:ColorSpace: "sRGB"
    Sentera:AlignEnabled: "1"
    Sentera:AlignMatrix: "1.000000"
    Sentera:AlignXYDeg: "-0.234"
    Sentera:Session: "2020-07-19_17-23-11"
    Sentera:VignettingCenter: "768.00"
    Sentera:VignettingEnabled: "1"
    Sentera:VignettingPolynomial: "6.5e-10"
    tiff:Compression: 1
    tiff:PhotometricInterpretation: 1
    tiff:PlanarConfiguration: 1
    tiff:RowsPerStrip: 2
 subimage  4: 1904 x 1428, 1 channel, uint12 tiff
    channel list: Y
    compression: "none"
    DateTime: "2020:07:19 17:36:28"
    ExposureTime: 0.001205
    FNumber: 1.8
    Make: "Sentera"
    Model: "21214-01_3.2MP-GS-0001"
    Orientation: 1 (normal)
    PixelAspectRatio: 1
    planarconfig: "contig"
    ResolutionUnit: "in"
    Software: "1.3.2"
    XResolution: 238
    YResolution: 238
    Camera:AboveGroundAltitude: "111.612001"
    Camera:BandName: "NIR"
    Camera:BandSensitivity: "0.246"
    Camera:CentralWavelength: "840"
    Camera:FlightUniqueID: "2020-07-19_17-23-11"
    Camera:GPSXYAccuracy: "0.660000"
    Camera:GPSZAccuracy: "1.017000"
    Camera:ImageUniqueID: "5010"
    Camera:IsNormalized: "0"
    Camera:ModelType: "perspective"
    Camera:PerspectiveDistortion: "-0.117,0.179,-0.045,0.000,0.000"
    Camera:PerspectiveFocalLength: "7.800"
    Camera:PerspectiveFocalLengthUnits: "mm"
    Camera:Pitch: "0.000000"
    Camera:PrincipalPoint: "3.231,2.481"
    Camera:RigCameraIndex: "4"
    Camera:RigName: "Sentera-6x"
    Camera:RigRelatives: "0.000,0.000,0.000"
    Camera:Roll: "0.000000"
    Camera:SunSensor: "7326.333"
    Camera:WavelengthFWHM: "20"
    Camera:Yaw: "90.000000"
    Exif:ApertureValue: 1.69599 (f/1.8)
    Exif:BodySerialNumber: "047"
    Exif:DateTimeDigitized: "2020:07:19 17:36:28"
    Exif:DateTimeOriginal: "2020:07:19 17:36:28"
    Exif:ExposureMode: 0 (auto)
    Exif:FocalLength: 8 (8 mm)
    Exif:FocalPlaneResolutionUnit: 3 (cm)
    Exif:FocalPlaneXResolution: 2898.55
    Exif:FocalPlaneYResolution: 2898.55
    Exif:LensModel: "8.00mm-0005_0024"
    Exif:MeteringMode: 1 (average)
    Exif:SceneCaptureType: 0 (standard)
    Exif:SubsecTime: "125538"
    Exif:SubsecTimeDigitized: "125538"
    Exif:SubsecTimeOriginal: "125538"
    oiio:BitsPerSample: 12
    oiio:ColorSpace: "sRGB"
    Sentera:AlignEnabled: "1"
    Sentera:AlignMatrix: "1.000000"
    Sentera:AlignXYDeg: "0.010"
    Sentera:Session: "2020-07-19_17-23-11"
    Sentera:VignettingCenter: "768.00"
    Sentera:VignettingEnabled: "1"
    Sentera:VignettingPolynomial: "6.5e-10"
    tiff:Compression: 1
    tiff:PhotometricInterpretation: 1
    tiff:PlanarConfiguration: 1
    tiff:RowsPerStrip: 2

Note: I cannot publicly post the TIFF file.
Platform information:

OIIO branch/version: 2.2.11
OS: Pop!_OS 20.04 LTS
C++ compiler: 9.3.0
LIBTIFF Version 4.1.0
Any non-default build flags when you build OIIO:

IF YOU ALREADY HAVE A CODE FIX: There is no need to file a separate issue,
please just go straight to making a pull request.

I'm not sure how to address this without the example file.
Can you send it to me personally (just not post publicly)?
Is it just the image content you can't post? Can you create another image that contains the same metadata, but all black pixels, and post that?

Sending you the file privately would work.  What email address should I send it to?

<EMAIL_ADDRESS>is fine

Sent it, hopefully it went through okay as the file is a little big for email (~24MB)
Cheers

I see what's happening. When parsing XMP data in the header, it's not turning sequences/lists into arrays, it's just recording one value. Working on a fix.

Fix coming. Now reports as:
Sentera:AlignEnabled: 1
Sentera:AlignMatrix: 0.999999, 0.001538, 77.1999, -0.001538, 0.999999, 53.255, 0, 0, 1
Sentera:AlignXYDeg: 78.3, 51.8, -0.088
Sentera:Session: "2020-07-19_17-23-11"
Sentera:VignettingCenter: 1024, 768
Sentera:VignettingEnabled: 1
Sentera:VignettingPolynomial: 0, 0, 6.5e-10

#2865

Huzzah!  Thanks!
Ahh, the joys of parsing XML...
Although this comes to mind as well in terms of EXIF,XMP, etc... https://xkcd.com/927/

Fixed by #2865


Namespace conflicts

I have a namespace conflict issue when using your library. My namespace for my project has a ".Blazor." in it and yours starts with Blazor.Components.
When this issue is closed it shouldn't be an issue https://github.com/dotnet/aspnetcore/issues/13090
I was expecting your library to be Majorsoft.Blazor.Components which would also resolve the issue.
Any suggestions for a workaround?
Thanks, your library is providing some very key components that are missing from even some of the larger commercial component libraries!

Thanks for contacting me. Yes I want to ship very feature reach high quality Blazor components. More to be come...
It is an interesting issue. I have not encountered it so far. Could you give me some code example? Also not sure how are you adding @using-s to your project?
Meanwhile you can try out these, might work:

Try to add namespace using to _Imports.razor or your <component>.razor might one work.
Components can have "code behind" file. Just create a C# class with the name of <component>.razor.cs. This file should work as standard C# class. So you can try use using alias. However not 100% sure.
Last option is to create a new "Blazor Class Library" without the name ".Blazor." in it. Use my components in that new project and reference it into you Blazor App.

About the naming convention you are right. I have started to work on a this project with the current name. By the time I wanted to upload packages to Nuget.org realized "Blazor" name is taken. So I needed to "prefix" packages. I was thinking to rename all the projects and fix namespaces, etc. but seemed to much time which I wanted to spend on Features and Quality.

Thanks for responding :)
I think wrapping it in a class library is the best solution at this point.
The _Imports.razor still has the same issue and the issue is with the Component element in the markup so the code behind doesn't help.
I created the following project with a name where the issue occurs. Each of the three pages has examples of things I have tried. You will notice they all produce build errors.
https://github.com/fargs/NamespaceConflictExample.Blazor
Hope that helps. When I get the project wrapped I'll let you know if that works.
Thanks!

Hi @fargs
Checked your example code. Yes it has build error. It is an unfortunate Blazor bug. I  have reported quite a few bugs to Microsoft. Hope they fix it soon. At some point I might also find some time to align Namespaces with Package names.
Meanwhile you can do what I suggested. Create a Razor Class Library for 3rd party components (or just your components). Do not put "Blazor" into this project name. Wrap around my components or just use them in as Blazor suggests it. Create all your pages as components and reference this new 3rd party Library to your app. It works.
Updated code: NamespaceConflictExample.Blazor.zip

#https://github.com/dotnet/aspnetcore/issues/13090

Hi @fargs,
Just merged the "mega renaming" branch 😄 it will bring the first breaking change to my components. Which is consolidating namespaces with package names. So when next version is released all Components must be used with "@using Majorsoft.Blazor.*".
I will try to publish new version 1.2 with other new components by end of this year.

Hey @majorimi,
That's awesome, thanks! I ended up forking your repo and included it in my project as a git submodule. I did the same rename refactor to Majorsoft.Blazor for the debounce component which was the main one I was after. I was going to offer to do that work for you but the holidays took over. Very happy to remove my fork and git submodule and use your package directly now! Happy new year!

Hey @majorimi,
That's awesome, thanks! I ended up forking your repo and included it in my project as a git submodule. I did the same rename refactor to Majorsoft.Blazor for the debounce component which was the main one I was after. I was going to offer to do that work for you but the holidays took over. Very happy to remove my fork and git submodule and use your package directly now! Happy new year!

Hi @fargs,
Yes unfortunately holidays were delaying me as well. So rename is still not published. I'm still trying to finishing up a new component. Will be done soon and released.
Also trying to find the best way to announce breaking change. Hope others won't be suffering and getting angry because of the build errors...
Thanks. Happy new year for you as well!

Hi @fargs,
Yes unfortunately holidays were delaying me as well. So rename is still not published. I'm still trying to finishing up a new component. Will be done soon and released.
Also trying to find the best way to announce breaking change. Hope others won't be suffering and getting angry because of the build errors...
Thanks. Happy new year for you as well!

Ok v1.2.0 was released today with your request in it...

Ok v1.2.0 was released today with your request in it...

I just removed my submodules and included the latest version as a nuget package reference and works like a charm. Thanks!!

I just removed my submodules and included the latest version as a nuget package reference and works like a charm. Thanks!!

Hi @fargs,
Sounds good. Hope it will unblock other projects also. So thanks for the bug report.
If you happy with the result please endorse the project with with ⭐ and watch. Since I need 100+ star to become an "important" project. (yes Github is also about likes now...)

Hi @fargs,
Sounds good. Hope it will unblock other projects also. So thanks for the bug report.
If you happy with the result please endorse the project with with ⭐ and watch. Since I need 100+ star to become an "important" project. (yes Github is also about likes now...)