download_magic.py

This doesn't work with any files downloaded from the MagIC database these days - nor does the version called by pmag_gui.   here is our favorite, the Lawrence et al McMurdo contribution.
magic_contribution_16436.txt
I get this error:
skipping....
WARNING:  problem in file with line:
McMurdo	mc229	DSC_0196D.JPG	Outcrop	MC229 sample detail	McMurdo Volcanics: paleomagnetic sampling :Fang Ridge	2006-12-27T00:00:00Z	Hubert StaudigeThis study
for all the lines.  why?

I’ll check on this.

On Jul 9, 2018, at 3:08 PM, Lisa Tauxe<EMAIL_ADDRESS>wrote:
This doesn't work with any files downloaded from the MagIC database these days - nor does the version called by pmag_gui. here is our favorite, the Lawrence et al McMurdo contribution.
magic_contribution_16436.txt https://github.com/PmagPy/PmagPy/files/2178171/magic_contribution_16436.txt
I get this error:
skipping....
WARNING: problem in file with line:
McMurdo	mc229	DSC_0196D.JPG	Outcrop	MC229 sample detail	McMurdo Volcanics: paleomagnetic sampling :Fang Ridge	2006-12-27T00:00:00Z	Hubert StaudigeThis study
for all the lines. why?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGIiGiwvympDypFsv4BXgvHzo8bgR6ks5uE9RTgaJpZM4VIdlZ.

It seems to work on all of our old MagIC files, including 3.0 files.  So perhaps there has been some change to the formatting?  I will look more in depth today if I can.

On Jul 9, 2018, at 3:09 PM, Lisa Tauxe<EMAIL_ADDRESS>wrote:
Assigned #386 https://github.com/PmagPy/PmagPy/issues/386 to @moonshoes87 https://github.com/moonshoes87.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#event-1724228588, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGInqdwIJvj81UptKzL2fOPB72tIMvks5uE9SdgaJpZM4VIdlZ.

it does work on some downloaded files, but not this one (and maybe some others).
lisa

On Jul 9, 2018, at 3:19 PM, Lori J<EMAIL_ADDRESS>wrote:
It seems to work on all of our old MagIC files, including 3.0 files. So perhaps there has been some change to the formatting? I will look more in depth today if I can.

On Jul 9, 2018, at 3:09 PM, Lisa Tauxe<EMAIL_ADDRESS>wrote:
Assigned #386 https://github.com/PmagPy/PmagPy/issues/386 to @moonshoes87 https://github.com/moonshoes87.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#event-1724228588, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGInqdwIJvj81UptKzL2fOPB72tIMvks5uE9SdgaJpZM4VIdlZ.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#issuecomment-403638431, or mute the thread https://github.com/notifications/unsubscribe-auth/AAKrDcVuZu5NbVeudhxGb8V2dKSnS5cZks5uE9bsgaJpZM4VIdlZ.

Looks like there is an extra tab on the front of the file.
Another problem is that the measurements rows come without extra tabs, so they are the “wrong” length.
Solutions:  I can strip away the leading tab if one is present.  And, I can pad the short rows with the appropriate number of empty strings.  Does that seem ok?
I’m not sure why this issue is coming up now and not earlier.  Perhaps the MagIC format changed, and tabs are no longer on the ends of rows if there is no more text?

On Jul 9, 2018, at 3:19 PM, Lori Jonestrask<EMAIL_ADDRESS>wrote:
It seems to work on all of our old MagIC files, including 3.0 files.  So perhaps there has been some change to the formatting?  I will look more in depth today if I can.

On Jul 9, 2018, at 3:09 PM, Lisa Tauxe<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Assigned #386 https://github.com/PmagPy/PmagPy/issues/386 to @moonshoes87 https://github.com/moonshoes87.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#event-1724228588, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGInqdwIJvj81UptKzL2fOPB72tIMvks5uE9SdgaJpZM4VIdlZ.

yeah why don’t we do that - i didn’t know there was a terminal tab at the end of these MagIC files and should MagIC fix all these errors when it processes the data for download?
lisa

On Jul 9, 2018, at 4:46 PM, Lori J<EMAIL_ADDRESS>wrote:
Looks like there is an extra tab on the front of the file.
Another problem is that the measurements rows come without extra tabs, so they are the “wrong” length.
Solutions: I can strip away the leading tab if one is present. And, I can pad the short rows with the appropriate number of empty strings. Does that seem ok?
I’m not sure why this issue is coming up now and not earlier. Perhaps the MagIC format changed, and tabs are no longer on the ends of rows if there is no more text?

On Jul 9, 2018, at 3:19 PM, Lori Jonestrask<EMAIL_ADDRESS>wrote:
It seems to work on all of our old MagIC files, including 3.0 files. So perhaps there has been some change to the formatting? I will look more in depth today if I can.

On Jul 9, 2018, at 3:09 PM, Lisa Tauxe<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Assigned #386 https://github.com/PmagPy/PmagPy/issues/386 to @moonshoes87 https://github.com/moonshoes87.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#event-1724228588, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGInqdwIJvj81UptKzL2fOPB72tIMvks5uE9SdgaJpZM4VIdlZ.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#issuecomment-403654145, or mute the thread https://github.com/notifications/unsubscribe-auth/AAKrDfsKssDPglMD46wuQgt_7xfZcAs_ks5uE-tGgaJpZM4VIdlZ.

I’m not sure.  What download_magic expects is output formatted like this:
col1 col2 col3
val1\t\t
instead of
col1 col2 col3
val1
with no tabs at the end of the row.  It’s not really a big deal, as long as we’re expecting it.

On Jul 9, 2018, at 5:35 PM, Lisa Tauxe<EMAIL_ADDRESS>wrote:
yeah why don’t we do that - i didn’t know there was a terminal tab at the end of these MagIC files and should MagIC fix all these errors when it processes the data for download?
lisa

On Jul 9, 2018, at 4:46 PM, Lori J<EMAIL_ADDRESS>wrote:
Looks like there is an extra tab on the front of the file.
Another problem is that the measurements rows come without extra tabs, so they are the “wrong” length.
Solutions: I can strip away the leading tab if one is present. And, I can pad the short rows with the appropriate number of empty strings. Does that seem ok?
I’m not sure why this issue is coming up now and not earlier. Perhaps the MagIC format changed, and tabs are no longer on the ends of rows if there is no more text?

On Jul 9, 2018, at 3:19 PM, Lori Jonestrask<EMAIL_ADDRESS>wrote:
It seems to work on all of our old MagIC files, including 3.0 files. So perhaps there has been some change to the formatting? I will look more in depth today if I can.

On Jul 9, 2018, at 3:09 PM, Lisa Tauxe<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Assigned #386 https://github.com/PmagPy/PmagPy/issues/386 to @moonshoes87 https://github.com/moonshoes87.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#event-1724228588, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGInqdwIJvj81UptKzL2fOPB72tIMvks5uE9SdgaJpZM4VIdlZ.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#issuecomment-403654145, or mute the thread https://github.com/notifications/unsubscribe-auth/AAKrDfsKssDPglMD46wuQgt_7xfZcAs_ks5uE-tGgaJpZM4VIdlZ.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#issuecomment-403661839, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGIi-2B6TNwfk2PD8czF3xOtkkD84Jks5uE_bBgaJpZM4VIdlZ.

@ltauxe, I put in a fix, you can have a look and see if it resolves everything as expected.

Ah, yes, that's possible that the measurement rows are being written without trailing tabs. I'm not sure if we ever defined the "correct" behavior for MagIC text files with empty columns at the end, but it's probably good that PmagPy can handle both cases (with and without trailing tabs). It's also possible that other tables could be written this way if only some of the rows have values in the last column, but I think that scenario is less likely than with measurements.

That makes sense.  I have fixed it so that errors should be thrown only if the number of values in a row is greater than the number of headers.

On Jul 10, 2018, at 11:11 AM, Rupert<EMAIL_ADDRESS>wrote:
Ah, yes, that's possible that the measurement rows are being written without trailing tabs. I'm not sure if we ever defined the "correct" behavior for MagIC text files with empty columns at the end, but it's probably good that PmagPy can handle both cases (with and without trailing tabs). It's also possible that other tables could be written this way if only some of the rows have values in the last column, but I think that scenario is less likely than with measurements.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/PmagPy/PmagPy/issues/386#issuecomment-403916305, or mute the thread https://github.com/notifications/unsubscribe-auth/ABwGIgJT3YFWVlVJ8XS90jUGO9h5UEVXks5uFO47gaJpZM4VIdlZ.


refactor(docs): rename file name to be the same as class name, etc

Proposed changes:

Rename file name to be consistent with class name
Use stateless component whenever possible
Rename class. For example, rename ButtonButtonExample to ButtonExampleButton and ButtonBasicExample to ButtonExampleBasic
Use index.js whenever it is possible

Yes! Thank you very much.  This has been on my bucket list.  Note the List PR, #311 handles number 4 for the List examples. So we should wait for that PR to be merged before updating the List examples.
Lastly, the other goal is to allow the code snippets to be live edited and have the example update.  This may affect how we name things as well.  I'll start a trial of that right now and see what I find.  Either way, having consistent class/filenames will make any refactors far more sane.  So we can move forward on this immediately.

@levithomason I will start to work on this in the next few days.

Updated, I'm able to handle the live example code editing with any export name.  So no issues or limitations there.

I'm renamed doc files to this naming pattern in #551, LGTM :+1:
I think we need create dedicated section for shorthand examples in docs:

Types
Content
Shorhands

I think we need create dedicated section for shorthand examples in docs:

I agree this should be standardized.  I'm not sure what order/pattern is most optimal.
Mix Shorthand In
Some examples show shorthand immediately after the regular version:

Separate Shorthand
Some example have a section for Shorthand:

I think I lean toward mixing them together, showing shorthand use immediately after showing the regular use.  Shorthand props are the power and most likely use of all components IMO.  I'm worried that if we separate them in their own section, it will have more chance of getting looked over or seeming like an after thought.  I want the examples to be pervasive.  Open to other ideas as well.

I think we need make global documention cleanup that will standardize filenames and shorthand usage. In latest PRs I started on it.

Elements

[ ] Button
[ ] Container
[ ] Divider
[ ] Flag
[ ] Header
[ ] Icon
[ ] Image
[ ] Input
[ ] #576 Label
[ ] #551 List
[ ] Loader
[ ] Rail
[ ] Segment
[ ] Step

Collections

[ ] Breadcrumb
[ ] Form
[ ] Grid
[ ] Menu
[ ] Message
[ ] Table

Views

[ ] Card
[ ] Feed
[ ] Item
[ ] Statistic

Modules

[ ] Accordion
[ ] Checkbox
[ ] Dropdown
[ ] Modal
[ ] Progress
[ ] Rating
[ ] Search

Addons

[ ] Confirm
[ ] Radio
[ ] Select
[ ] Text Area

Great, I've started the Feed updates #575 and updated the task list.

Here's the final spec on what I think we should do:

Show shorthand use immediately after each sub component example.

Add Props to shorthand filenames: FeedExampleEvent.js FeedExampleEventProps.js

Add a description to all shorthand ComponentExample's
// FeedExampleImageLabel
description='An event can contain an image label'
// FeedExampleImageLabelProps
description='You can also configure an image label via props'

Split example to keep the files as short as possible. It is hard to view code for long examples.  Let's try to keep them ~30 LOC or less.
When possible, return an expression instead of adding a function body/return statement

const FeedExampleEvent = () => (
  // ...
)

Instead of:
const FeedExampleEvent = () => {
  return (
    // ...
  )
}

I also realize you cannot link to examples without titles, since the anchor links are to titles only.  It makes it difficult to share specific examples.  When you want to share an example without a title, you must share the "main" example link which has a title.  This is confusing because you would like to direct someone's attention to a sub example (no title), but the docs scroll to the primary example and open the code editor.
I'm not sure how to solve this yet, but I would like to have a link for every example.  Not just the ones with titles.  Two thoughts:

Require a title on ever example, meaning all examples would have permalinks
Generate a link for every example and add a link button next to the show code/show html buttons that gives a permalink:

First PR #587

I've updated TODO-list, we're almost there :smile_cat: Thanks, @dpkwhan

Awesome, thanks @layershifter!  That is a big help.

Item and Statistic were merged, looks like we're all done here 🎉 Massive thanks to @dpkwhan for sticking with this all the way through!


Waiting for CSRs created

vela cluster join k8s.kubeconfig -t ocm  --name wowjoy-test
Hub cluster all set, continue registration.
Successfully prepared registration config.
Registration operator successfully deployed.
Registration agent successfully deployed.
⠦ Waiting for CSRs created (kubectl get csr -l open-cluster-management.io/cluster-name=wowjoy-test)
The task keeps getting stuck，the managed cluster version is 1.24+

?????

[root@localhost ~]# vela cluster join ise2-k3s.config -t ocm --name ise2-k3s
maxprocs.go:47: maxprocs: Leaving GOMAXPROCS=8: CPU quota undefined
Hub cluster all set, continue registration.
Successfully prepared registration config.
Registration operator successfully deployed.
Registration agent successfully deployed.
⠙ Waiting for CSRs created (kubectl get csr -l open-cluster-management.io/cluster-name=ise2-k3s)

k3s 1.26.15


ng generate page-object

Bug Report or Feature Request (mark with an x)
- [ ] bug report -> please search issues before submitting
- [x] feature request

Desired functionality.

ng generate page-object
Generate page-object based on templates or components for e2e testing. Any plans to create such a feature?

No plans currently. Will label as a feature request to be considered. It's probably the kind of thing that will be an addon, once the addon system is in.

We have a tool that can generate Protractor page objects for AngularJS and Angular applications. You can check it out here:
pageobject.io
https://github.com/pageobject-io
We would be happy to integrate it with the CLI as an addon.

This is generally being tracked in https://github.com/angular/angular-cli/issues/2618.


exercises(allergies): implement

Erik made #226, but I was already most of the way towards this. I was going to leave this exercise until after the other exercise PRs were merged, but let's do it earlier.
@ErikSchierboom Sorry, it'd be harder to suggest changes to the other PR. Can we work on top of this one?
Compared to #226, this PR:

Returns an EnumSet, not an ArrayList. This is probably an improvement, because an ArrayList doesn't model a set: it can contain the same value more than once, and the list ordering is meaningful.
Includes the final two tests. In #226 the penultimate test is unimplemented, but has no corresponding include = false :)
Uses methods, not un-namespaced functions.
Has consistent names for the eggs tests.
In the stub, does not specify enum(u8) or specify the individual enum values.
In the stub/example, doesn't have a long line.

I don't have a strong opinion about the namespaced functions. If we use them, there might be a better name than in. But I don't think in is that bad.

Diff vs #226
config.json
         "difficulty": 1
       },
       {
-        "uuid": "547282a5-e97f-4277-8983-7ff9ceccf701",
+        "uuid": "4c13a4fb-d673-4a2c-8e70-54173f52d98c",
         "slug": "allergies",
         "name": "Allergies",
         "practices": [
-          "allocators",
           "bitwise-operations",
-          "conditionals",
-          "control-flow",
-          "enums",
-          "functions",
-          "importing"
+          "enums"
         ],
         "prerequisites": [
-          "allocators",
           "bitwise-operations",
-          "conditionals",
-          "control-flow",
-          "enums",
-          "functions",
-          "importing"
+          "enums"
         ],
         "difficulty": 1
       },

exercises/practice/allergies/.meta/config.json
 {
   "authors": [
-    "erikschierboom"
+    "ee7"
   ],
   "files": {
     "solution": [

exercises/practice/allergies/.meta/example.zig
 const std = @import("std");
-const mem = std.mem;
-const enums = std.enums;

-pub const Allergen = enum(u8) { eggs = 0b00000001, peanuts = 0b00000010, shellfish = 0b00000100, strawberries = 0b00001000, tomatoes = 0b00010000, chocolate = 0b00100000, pollen = 0b01000000, cats = 0b10000000 };
+pub const Allergen = enum(u8) {
+    const Self = @This();

-pub fn isAllergicTo(allergies: u8, allergen: Allergen) bool {
-    return allergies & @enumToInt(allergen) != 0;
-}
+    eggs = 1,
+    peanuts = 2,
+    shellfish = 4,
+    strawberries = 8,
+    tomatoes = 16,
+    chocolate = 32,
+    pollen = 64,
+    cats = 128,

-pub fn list(allocator: mem.Allocator, allergies: u8) mem.Allocator.Error![]const Allergen {
-    var allergens = std.ArrayList(Allergen).init(allocator);
-    defer allergens.deinit();
-
-    for (enums.values(Allergen)) |allergen| {
-        if (isAllergicTo(allergies, allergen))
-            try allergens.append(allergen);
+    pub fn in(allergen: Self, score: u8) bool {
+        return score & @enumToInt(allergen) != 0;
     }

-    return allergens.toOwnedSlice();
-}
+    pub fn list(score: u64) std.EnumSet(Self) {
+        const len = @typeInfo(Self).Enum.fields.len;
+        const tag_type = @typeInfo(Self).Enum.tag_type;
+        const bits = @bitCast(std.bit_set.IntegerBitSet(len), @truncate(tag_type, score));
+        return std.EnumSet(Self){ .bits = bits };
+    }
+};

exercises/practice/allergies/.meta/tests.toml
description = "list when: -> no allergen score parts"

 [93c2df3e-4f55-4fed-8116-7513092819cd]
 description = "list when: -> no allergen score parts without highest valid score"
-include = false

exercises/practice/allergies/allergies.zig
-const mem = @import("std").mem;
+const std = @import("std")
+const EnumSet = std.EnumSet;

-pub const Allergies = enum(u8) { eggs = 0b00000001, peanuts = 0b00000010, shellfish = 0b00000100, strawberries = 0b00001000, tomatoes = 0b00010000, chocolate = 0b00100000, pollen = 0b01000000, cats = 0b10000000 };
+pub const Allergen = enum {
+    eggs,
+    peanuts,
+    shellfish,
+    strawberries,
+    tomatoes,
+    chocolate,
+    pollen,
+    cats,

-pub fn isAllergicTo(allergies: u8, allergen: Allergen) bool {
-    _ = allergies;
-    _ = allergen;
-    @compileError("please implement the isAllergicTo function");
-}
+    pub fn in(allergen: Allergen, score: u8) bool {
+        _ = allergen;
+        _ = score;
+        @compileError("please implement the in function");
+    }

-pub fn list(allocator: mem.Allocator, allergies: u8) mem.Allocator.Error![]const Allergen {
-    _ = allocator;
-    _ = allergies;
-    @compileError("please implement the list function");
-}
+    pub fn list(score: u64) EnumSet(Allergen) {
+        _ = score;
+        @compileError("please implement the list function");
+    }
+};

exercises/practice/allergies/test_allergies.zig
 const testing = std.testing;

 const allergies = @import("allergies.zig");
+const Allergen = allergies.Allergen;

-test "not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.eggs));
+test "eggs: not allergic to anything" {
+    try testing.expect(!Allergen.eggs.in(0));
 }

-test "allergic only to eggs" {
-    try testing.expect(allergies.isAllergicTo(1, allergies.Allergen.eggs));
+test "eggs: allergic only to eggs" {
+    try testing.expect(Allergen.eggs.in(1));
 }

-test "allergic to eggs and something else" {
-    try testing.expect(allergies.isAllergicTo(3, allergies.Allergen.eggs));
+test "eggs: allergic to eggs and something else" {
+    try testing.expect(Allergen.eggs.in(3));
 }

-test "allergic to something, but not eggs" {
-    try testing.expect(!allergies.isAllergicTo(2, allergies.Allergen.eggs));
+test "eggs: allergic to something, but not eggs" {
+    try testing.expect(!Allergen.eggs.in(2));
 }

-test "allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.eggs));
+test "eggs: allergic to everything" {
+    try testing.expect(Allergen.eggs.in(255));
 }

-test "peanuts allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.peanuts));
+test "peanuts: not allergic to anything" {
+    try testing.expect(!Allergen.peanuts.in(0));
 }

-test "peanuts allergy - allergic only to peanuts" {
-    try testing.expect(allergies.isAllergicTo(2, allergies.Allergen.peanuts));
+test "peanuts: allergic only to peanuts" {
+    try testing.expect(Allergen.peanuts.in(2));
 }

-test "peanuts allergy - allergic to peanuts and something else" {
-    try testing.expect(allergies.isAllergicTo(7, allergies.Allergen.peanuts));
+test "peanuts: allergic to peanuts and something else" {
+    try testing.expect(Allergen.peanuts.in(7));
 }

-test "peanuts allergy - allergic to something, but not peanuts" {
-    try testing.expect(!allergies.isAllergicTo(5, allergies.Allergen.peanuts));
+test "peanuts: allergic to something, but not peanuts" {
+    try testing.expect(!Allergen.peanuts.in(5));
 }

-test "peanuts allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.peanuts));
+test "peanuts: allergic to everything" {
+    try testing.expect(Allergen.peanuts.in(255));
 }

-test "shellfish allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.shellfish));
+test "shellfish: not allergic to anything" {
+    try testing.expect(!Allergen.shellfish.in(0));
 }

-test "shellfish allergy - allergic only to shellfish" {
-    try testing.expect(allergies.isAllergicTo(4, allergies.Allergen.shellfish));
+test "shellfish: allergic only to shellfish" {
+    try testing.expect(Allergen.shellfish.in(4));
 }

-test "shellfish allergy - allergic to shellfish and something else" {
-    try testing.expect(allergies.isAllergicTo(14, allergies.Allergen.shellfish));
+test "shellfish: allergic to shellfish and something else" {
+    try testing.expect(Allergen.shellfish.in(14));
 }

-test "shellfish allergy - allergic to something, but not shellfish" {
-    try testing.expect(!allergies.isAllergicTo(10, allergies.Allergen.shellfish));
+test "shellfish: allergic to something, but not shellfish" {
+    try testing.expect(!Allergen.shellfish.in(10));
 }

-test "shellfish allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.shellfish));
+test "shellfish: allergic to everything" {
+    try testing.expect(Allergen.shellfish.in(255));
 }

-test "strawberries allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.strawberries));
+test "strawberries: not allergic to anything" {
+    try testing.expect(!Allergen.strawberries.in(0));
 }

-test "strawberries allergy - allergic only to strawberries" {
-    try testing.expect(allergies.isAllergicTo(8, allergies.Allergen.strawberries));
+test "strawberries: allergic only to strawberries" {
+    try testing.expect(Allergen.strawberries.in(8));
 }

-test "strawberries allergy - allergic to strawberries and something else" {
-    try testing.expect(allergies.isAllergicTo(28, allergies.Allergen.strawberries));
+test "strawberries: allergic to strawberries and something else" {
+    try testing.expect(Allergen.strawberries.in(28));
 }

-test "strawberries allergy - allergic to something, but not strawberries" {
-    try testing.expect(!allergies.isAllergicTo(20, allergies.Allergen.strawberries));
+test "strawberries: allergic to something, but not strawberries" {
+    try testing.expect(!Allergen.strawberries.in(20));
 }

-test "strawberries allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.strawberries));
+test "strawberries: allergic to everything" {
+    try testing.expect(Allergen.strawberries.in(255));
 }

-test "tomatoes allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.tomatoes));
+test "tomatoes: not allergic to anything" {
+    try testing.expect(!Allergen.tomatoes.in(0));
 }

-test "tomatoes allergy - allergic only to tomatoes" {
-    try testing.expect(allergies.isAllergicTo(16, allergies.Allergen.tomatoes));
+test "tomatoes: allergic only to tomatoes" {
+    try testing.expect(Allergen.tomatoes.in(16));
 }

-test "tomatoes allergy - allergic to tomatoes and something else" {
-    try testing.expect(allergies.isAllergicTo(56, allergies.Allergen.tomatoes));
+test "tomatoes: allergic to tomatoes and something else" {
+    try testing.expect(Allergen.tomatoes.in(56));
 }

-test "tomatoes allergy - allergic to something, but not tomatoes" {
-    try testing.expect(!allergies.isAllergicTo(40, allergies.Allergen.tomatoes));
+test "tomatoes: allergic to something, but not tomatoes" {
+    try testing.expect(!Allergen.tomatoes.in(40));
 }

-test "tomatoes allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.tomatoes));
+test "tomatoes: allergic to everything" {
+    try testing.expect(Allergen.tomatoes.in(255));
 }

-test "chocolate allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.chocolate));
+test "chocolate: not allergic to anything" {
+    try testing.expect(!Allergen.chocolate.in(0));
 }

-test "chocolate allergy - allergic only to chocolate" {
-    try testing.expect(allergies.isAllergicTo(32, allergies.Allergen.chocolate));
+test "chocolate: allergic only to chocolate" {
+    try testing.expect(Allergen.chocolate.in(32));
 }

-test "chocolate allergy - allergic to chocolate and something else" {
-    try testing.expect(allergies.isAllergicTo(112, allergies.Allergen.chocolate));
+test "chocolate: allergic to chocolate and something else" {
+    try testing.expect(Allergen.chocolate.in(112));
 }

-test "chocolate allergy - allergic to something, but not chocolate" {
-    try testing.expect(!allergies.isAllergicTo(80, allergies.Allergen.chocolate));
+test "chocolate: allergic to something, but not chocolate" {
+    try testing.expect(!Allergen.chocolate.in(80));
 }

-test "chocolate allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.chocolate));
+test "chocolate: allergic to everything" {
+    try testing.expect(Allergen.chocolate.in(255));
 }

-test "pollen allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.pollen));
+test "pollen: not allergic to anything" {
+    try testing.expect(!Allergen.pollen.in(0));
 }

-test "pollen allergy - allergic only to pollen" {
-    try testing.expect(allergies.isAllergicTo(64, allergies.Allergen.pollen));
+test "pollen: allergic only to pollen" {
+    try testing.expect(Allergen.pollen.in(64));
 }

-test "pollen allergy - allergic to pollen and something else" {
-    try testing.expect(allergies.isAllergicTo(224, allergies.Allergen.pollen));
+test "pollen: allergic to pollen and something else" {
+    try testing.expect(Allergen.pollen.in(224));
 }

-test "pollen allergy - allergic to something, but not pollen" {
-    try testing.expect(!allergies.isAllergicTo(160, allergies.Allergen.pollen));
+test "pollen: allergic to something, but not pollen" {
+    try testing.expect(!Allergen.pollen.in(160));
 }

-test "pollen allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.pollen));
+test "pollen: allergic to everything" {
+    try testing.expect(Allergen.pollen.in(255));
 }

-test "cats allergy - not allergic to anything" {
-    try testing.expect(!allergies.isAllergicTo(0, allergies.Allergen.cats));
+test "cats: not allergic to anything" {
+    try testing.expect(!Allergen.cats.in(0));
 }

-test "cats allergy - allergic only to cats" {
-    try testing.expect(allergies.isAllergicTo(128, allergies.Allergen.cats));
+test "cats: allergic only to cats" {
+    try testing.expect(Allergen.cats.in(128));
 }

-test "cats allergy - allergic to cats and something else" {
-    try testing.expect(allergies.isAllergicTo(192, allergies.Allergen.cats));
+test "cats: allergic to cats and something else" {
+    try testing.expect(Allergen.cats.in(192));
 }

-test "cats allergy - allergic to something, but not cats" {
-    try testing.expect(!allergies.isAllergicTo(64, allergies.Allergen.cats));
+test "cats: allergic to something, but not cats" {
+    try testing.expect(!Allergen.cats.in(64));
 }

-test "cats allergy - allergic to everything" {
-    try testing.expect(allergies.isAllergicTo(255, allergies.Allergen.cats));
+test "cats: allergic to everything" {
+    try testing.expect(Allergen.cats.in(255));
 }

-test "list - no allergies" {
-    const expected = &[_]allergies.Allergen{};
-    const actual = try allergies.list(testing.allocator, 0);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: no allergies" {
+    const expected_count: usize = 0;
+    const actual = Allergen.list(0);
+    try testing.expectEqual(expected_count, actual.count());
 }

-test "list - just eggs" {
-    const expected = &[_]allergies.Allergen{.eggs};
-    const actual = try allergies.list(testing.allocator, 1);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: just eggs" {
+    const expected_count: usize = 1;
+    const actual = Allergen.list(1);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
 }

-test "list - just peanuts" {
-    const expected = &[_]allergies.Allergen{.peanuts};
-    const actual = try allergies.list(testing.allocator, 2);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: just peanuts" {
+    const expected_count: usize = 1;
+    const actual = Allergen.list(2);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.peanuts));
 }

-test "list - just strawberries" {
-    const expected = &[_]allergies.Allergen{.strawberries};
-    const actual = try allergies.list(testing.allocator, 8);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: just strawberries" {
+    const expected_count: usize = 1;
+    const actual = Allergen.list(8);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.strawberries));
 }

-test "list - eggs and peanuts" {
-    const expected = &[_]allergies.Allergen{ .eggs, .peanuts };
-    const actual = try allergies.list(testing.allocator, 3);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: eggs and peanuts" {
+    const expected_count: usize = 2;
+    const actual = Allergen.list(3);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
+    try testing.expect(actual.contains(.peanuts));
 }

-test "list - more than eggs but not peanuts" {
-    const expected = &[_]allergies.Allergen{ .eggs, .shellfish };
-    const actual = try allergies.list(testing.allocator, 5);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: more than eggs but not peanuts" {
+    const expected_count: usize = 2;
+    const actual = Allergen.list(5);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
+    try testing.expect(actual.contains(.shellfish));
 }

-test "list - lots of stuff" {
-    const expected = &[_]allergies.Allergen{ .strawberries, .tomatoes, .chocolate, .pollen, .cats };
-    const actual = try allergies.list(testing.allocator, 248);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: lots of stuff" {
+    const expected_count: usize = 5;
+    const actual = Allergen.list(248);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.strawberries));
+    try testing.expect(actual.contains(.tomatoes));
+    try testing.expect(actual.contains(.chocolate));
+    try testing.expect(actual.contains(.pollen));
+    try testing.expect(actual.contains(.cats));
 }

-test "list - everything" {
-    const expected = &[_]allergies.Allergen{ .eggs, .peanuts, .shellfish, .strawberries, .tomatoes, .chocolate, .pollen, .cats };
-    const actual = try allergies.list(testing.allocator, 255);
-    defer testing.allocator.free(actual);
-    try testing.expectEqualSlices(allergies.Allergen, expected, actual);
+test "list: everything" {
+    const expected_count: usize = 8;
+    const actual = Allergen.list(255);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
+    try testing.expect(actual.contains(.peanuts));
+    try testing.expect(actual.contains(.shellfish));
+    try testing.expect(actual.contains(.strawberries));
+    try testing.expect(actual.contains(.tomatoes));
+    try testing.expect(actual.contains(.chocolate));
+    try testing.expect(actual.contains(.pollen));
+    try testing.expect(actual.contains(.cats));
+}
+
+test "list: no allergen score parts" {
+    const expected_count: usize = 7;
+    const actual = Allergen.list(509);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
+    try testing.expect(actual.contains(.shellfish));
+    try testing.expect(actual.contains(.strawberries));
+    try testing.expect(actual.contains(.tomatoes));
+    try testing.expect(actual.contains(.chocolate));
+    try testing.expect(actual.contains(.pollen));
+    try testing.expect(actual.contains(.cats));
+}
+
+test "list: no allergen score parts without highest valid score" {
+    const expected_count: usize = 1;
+    const actual = Allergen.list(257);
+    try testing.expectEqual(expected_count, actual.count());
+    try testing.expect(actual.contains(.eggs));
 }

I did


feat: add mohaa game image

This PR adds a new image to be used for the Medal of Honor: Allied Assault egg
i thought ill create a new image since it depends on an 32 bit library that is most likely not be useful for any other game

Why is this needed? I see not really, that something changed

i had to add lib32stdc++6 libstdc++5:i386  to get the server to run

i think you can add the libs to base image and there is no need for an own image

i added the libs to the base image and also changed the egg to the base image
https://github.com/parkervcp/eggs/pull/1352

@Th3Dilli The base image is multiarch and lib32stdc++6  doesn't exist on ARM64. Please create a new PR with a separate image to add it.
Remember to add dpkg --add-architecture i386 since it's missing from this one, which is why also building it failed on installing the 32-bit package libstdc++5:i386


Use async read/write for attach

We now use async IO for attach as well as setting up the channels to read and write from them.
Refers to https://github.com/containers/conmon-rs/issues/287

Had to rebase

This tweak to the reader helps... trying it out over here.


feature/blueconicRtdProvider

Thanks for improving the documentation 😃
Please give a short description and check the matching checkboxes to help us review this as quick as possible.
🏷 Type of documentation

[ ] new bid adapter
[ ] update bid adapter
[X] new feature
[ ] text edit only (wording, typos)
[ ] bugfix (code examples)
[ ] new examples

📋 Checklist

[x] Related pull requests in prebid.js or server are linked
[x] For new adapters check submitting your adapter docs

Prebid server pull request link

Hey @muuki88
Can you please tell me when this PR is expected to merge and release?


Metalsmith and Filenames, What can we do to improve them?

I just wanted to create a metalsmith-core discussion after we talked in https://github.com/segmentio/metalsmith-collections/pull/9. So, with that said..
The Problem
Filename mutations are hard to track, and hard to reference. The most common use case i run into is files linking to themselves, or other files. A file object found in the files object has no clue what it's own filename is. So templates that want to render that file, possibly with links to itself or other similar files, run into issues.
This problem becomes more prevalent with plugins like metalsmith-collections(). A collection is a list of files, and because these files are broken away from the files object, there is a large disconnect between the file data and the filename of that file.
The core of the issue is that an object, as it seems to me, is a poor storage format for a series of files. We can create plugins to store the filename within the file data, but when the key of the files inevitably mutates, there is no longer any validity to file.filename. You can set a spec, which requires updates to both to be changed in tandem, but then you have to wonder why even bother with the key at all?
Solution?
The two most obvious solutions are..

Store a filename value in each file's metadata, and have plugins update that when they change the filename. This is suboptimal for multiple reasons (mild incompatability with current plugins, error prone due to sync requirements, etc)
Another solution would be to replace the object with an array. While this would cleanly solve the syncing issue above, it also is a massive change to the core design to this library, and severely breaks all plugins.. i think it's a safe assumption that we're stuck with the file Object for now.

Any thoughts? Hopefully there is a sane solution i'm not thinking of.

@unstoppablecarl That sounds like an interesting solution, if we just spliced that quick filler function between every middleware function it would solve the issue and make a sort of read-only file.path property.
I'd be down to try that out if anyone wanted to submit a PR with tests and docs.

Looking back on the idea of adding this to metalsmith core months later I am not sure it should be added. I think by having metalsmith core add any properties you are loosing some of the simplicity that makes it so great.
Pros:

When developing a plugin it will be very convenient to be able to assume that .path is the file object's path without having to create a mechanism yourself. (although as you can see in the code I posted above it isn't that complicated to do)

Cons:

Probably should not add functionality that runs after every plugin to assign data plugins may or may not need.
There is not an implicit way communicate that the path property is intended to be read only.
Users would likely think that changing the value of the path property would change the file name.
The problem of file objects not knowing their key should probably not be magically abstracted away.
Plugin developers would need to know and remember to update the path property when changing file names (if their plugin used that property, I could see myself making this mistake and not be able to easily figure out why things were not going as expected).

As I said in my rant I think the file object keys should only be the only place that file object's path is maintained.
I thing a better solution to this problem would be more guides and documentation about how to handle this problem when developing plugins.

I think something simple that might helps is to add the original filename. Some plugins might want it)
I am doing a better watcher (metalsmith-watch is very limited) and I need to udpate collections by hand since this plugins works with simple array (in order to avoid duplicate). Having something like file._originalFilename or similar will helps me a lot to prevent duplicate.

File names can change though. Look at the permalinks plugin.

I think a filename property would be a good solution. Several templating engines require it when using includes and extends, so it's already a standard of sorts.
But maybe it doesn't have to be added to core since there's https://github.com/MoOx/metalsmith-filenames. Would allow things to stay modular.

I have indeed a problem about it.
This is my code: https://github.com/kud/diary/blob/feat.multilanguage-2/tasks/markup-en.js and this is my structure: https://github.com/kud/diary/tree/feat.multilanguage-2/src
The result is everything which uses collections plugin are located to dist/en but everything which does not use collections plugins are in dist/en/posts/en.
I've tried to change the path of the files via something like:
var updatePaths = function(files, metalsmith, done){
    for(var key in files){
        files[key].path = key;
    }
    done();
};

but it didn't work.
Any clue?

Here's a couple of plugin definitions that might help:
/**
 * Adds source filename to file like front matter
 */
var original_filename = function (files, metalsmith, done) {
    Object.keys(files).forEach(function (file) {
        files[file].original_filename = file;
    });
    done();
};

or if you wanted to track the changes, this would initialise a metadata object with the source filenames.
/**
 * Adds filename tracking object to metadata
 */
var filename_tracking = function (files, metalsmith, done) {
    var metadata = metalsmith.metadata();
    var file_list = [];
    Object.keys(files).forEach(function (file) {

        file_list.push({source_file: file});
    });

    metadata.filetracking = file_list;

    done();
};

Like @ismay and @unstoppablecarl have said, it doesn't seem like core needs to be changed for people to work in this way if they want to.
I use collections to group my files and either use the original filename (not path) or a slug with permalinks to put things in the right place for the build.

I'd like to suggest the following idea:
Before Metalsmith starts processing the chain, it creates a deep copy of all original data, use Object.defineProperty to set writable to false and puts them into something like an "originalState"  property (including all files, metadata etc...).
e.g. for plugins accessible on this way:
    .use(function(files, metalsmith, done) {
        console.log(metalsmith.originalState);
        done();
    })

Going back to the solutions in the original post, being able to use native Array.prototype methods would be really powerful for creating more testable and declarative plugins with less for in noise
I realise that this would break most of the current plugins, but it would be easy to mitigate, providing a mutation plugin in order to continue using plugins that are not yet converted. We could even provide an additional .use method (.useLegacy perhaps) that would mutate into and out of the object style into a new array setup.

@MrDeclare I do not think that should be built in. It would be easy enough for any plugins that needed it to implement it themselves. Making your own middleware that implemented this would be simple enough.
@mildfuzz I do not think an array is appropriate for a list of objects indexed by unique file path.
see my previous commment https://github.com/metalsmith/metalsmith/issues/58#issuecomment-72870449

What about a metalsmith: … metadata key?
Underneath that, you could add the filename or anything else necessary for Metalsmith’s processing pipeline.  I can’t imagine any accidental name collisions if everything like this is grouped under a key with the same name as the tool used to build the site.
(Aside: I’m ambivalent about both sides of this issue.  I just thought I’d offer the above suggestion as a compromise.)

“These aren’t the droids files you’re looking for…“
Now that I’ve had some time to get to know Metalsmith better, I don’t think the core needs to be modified.  I think this is actually documentation problem—not a problem with the way Metalsmith handles files.
Let’s Educate!
Something like the following needs to be displayed prominently on the website or README:

Each plugin accepts the following arguments (files, metalsmith, done).
The files object is where Metalsmith plugins do their smithing.
It looks something like this:
{
    'current/filename.html': {
        'filename': 'src/original/filename.md',
        // various other properties
        ...,
        ...
}

So each plugin gets both the current and the original filename.  That’s all the information necessary to do any filename manipulation imaginable.
A quick example
I just wrote a custom plugin to modify the current filename myself.  Here it is:
/**
 *  This Metalsmith plugin removes a prefix from each file's current state.
 *
 *  Its original purpose was to keep all site content grouped together
 *  in a directory, but “shift up” those files by one directory.
 *
 *  This is performed by simply removing the prefix from the file’s
 *  current name.
 */
const elevateContents = (PREFIX = '_content/', DEBUG = false) => {

    if (DEBUG === true) {
        console.log('PREFIX = ' + PREFIX);
        console.log('DEBUG = ' + DEBUG);
    }

    const pluginFunction = (files, metalsmith, done) => {
        for (let key in files) {
            if (key.startsWith(PREFIX)) {
                let newKey = key.replace(PREFIX, '');
                files[newKey] = files[key]; // set new “current filename” to the same file value
                delete files[key]; // delete original key, now that it lives under `newKey`
            }
        }
        done();
    }

    return pluginFunction;
}

@Zearin Yep, that's correct.
One minor correction though: that 'filename' key containing the "original" filename actually doesn't get created by Metalsmith. You can, however, easily add it with a plugin if needed.

One minor correction though: that 'filename' key containing the "original" filename actually doesn't get created by Metalsmith. You can, however, easily add it with a plugin if needed.

…Oh!  Oops.  :-/
I’m definitely seeing that property, but I guess it’s being created by one of the plugins that I’m already using.  I should have thought to check if that was the case!
Thanks for the correction.

(Edited my earlier post with a note reflecting @Ajedi32’s correction.  Hopefully that will prevent my earlier post from misleading future readers who might be skimming the thread without looking closely.)

Right now metalsmith-markdown plugin changes the file name key from .md to destination .html. Is this what is expected of plugins? I read @unstoppablecarl's conventions post above, and I didn't quite understand all of it with respect to what metalsmith-markdown is doing by modifying the metadata file name keys.

@hollowdoor It's valid for plugins to change the filename or extension if it's part of what the plugin does and is apparent to the consumer of that plugin. The documentation for metalsmith-markdown should be more explicit that the file extension will change. It would be good to do a PR for that.

@hollowdoor I'm confused. What part of @unstoppablecarl's list of conventions above do you think metalsmith-markdown is breaking? There's nothing in that list of conventions that says plugins can't move files around or rename them.

@hollowdoor I'm confused. What part of @unstoppablecarl's list of conventions above do you think metalsmith-markdown is breaking? There's nothing in that list of conventions that says plugins shouldn't move files around or rename them.

Not as written by @unstoppablecarl, no.
If I am reading people’s concerns correctly, I think part of the concern is the very simplicity and flexibility that makes Metalsmith so awesome.
When people first try out Metalsmith, they could be coming from many different previous experiences.  They might not have used a static site generator before at all.  Or perhaps they have used a popular one, but ran up against some limitations that caused them to look elsewhere.  One popular example is  Jekyll.  Another is DocPad.  (Which is what I used for a time, before becoming frustrated with it and searching around till I found Metalsmith!)

Both Jekyll and DocPad allow plugins.
In Jekyll, plugins are described as falling into one of five categories: Generators, Converters, Commands, Tags, and Hooks.
In DocPad, plugins are described as one of the following: Renderers, Helpers, Deployers, and Admin Interfaces.
Finally, both Jekyll and DocPad have documentation dedicated to teaching users about understanding, using, and authoring plugins.  This documentation, as well as giving the reader categories of plugins, give the reader something to latch onto as they read.  These things ground the user.

But if you go to http://metalsmith.io and read down the page, plugins are introduced in the middle of explaining how Metalsmith works.  There’s nothing technically wrong with that, but it seems somewhat roundabout compared with the documentation mentioned above.
By offering no categories—not even with a big disclaimer like, “These are not strict categories! They’re just for convenience, and a plugins can do just about anything…”—and no page dedicated to the topic of plugins (there aren’t even any navigation links on http://metalsmith.io ! 😡), whenever someone new to Metalsmith is excited about the tool, but wants some direction, they are forced to scroll through a long page with no clearly defined section on plugins.
This adds a lot of friction to the process.

This is a documentation problem.  Metalsmith is doing all the right things in terms of its design—now its documentation needs the same loving attention!

@Zearin Exactly this is my first time ever using a static site builder. Also my first time making a plugin (yet to be published) for one. For the most part my experience with Metalsmith has been wonderful. That I can read javascript probably helps. ;)
@woodyrew That's true about the doc updates. I saw the behavior, and wondered what is the suggested usage. As far as I'm concerned -- in my ignorance -- anything can be a convention  because I'm not the one deciding all this. :)
@Ajedi32 I'm not really concerned with what the conventions allow by omission. I was wondering what the going opinion is on the behavior of changing names. I guess I got my answer. Sorry. I think I didn't word my first comment very well. Also notice I said "I didn't quite understand". This could just be me not being very smart.

Came across this thread while trying to solve a filename problem I am facing.
I have a source file (named: my-file.hbs) that, through some handlebar plugins, is getting transformed to my-file.html in the output folder. But I am facing challenge on how to get this transformed name my-file.html from the metadata? The path property in the collections is showing the original name my-file.hbs, not the final name. The metadata debug shows as below:
articles:
  metalsmith:metadata    [ { title: 'Unfinished article',
  metalsmith:metadata        draft: false,
  metalsmith:metadata        collection: [Array],
  metalsmith:metadata        comments: true,
  metalsmith:metadata        contents: <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0d 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 ... >,
  metalsmith:metadata        mode: '0666',
  metalsmith:metadata        stats: [Object],
  metalsmith:metadata        path: 'my-file.hbs',
  metalsmith:metadata        next: [Object],
  metalsmith:metadata        rootPath: '',
  metalsmith:metadata        paths: [Object] },

  metalsmith:files   'my-file.html':
  metalsmith:files    { title: 'Unfinished article',
  metalsmith:files      draft: false,
  metalsmith:files      collection: [ 'articles' ],
  metalsmith:files      comments: true,
                    ...
  metalsmith:files      path: 'my-file.hbs',
  metalsmith:files      next:

I am creating a blog index file that points to all the other htmls files, something like below, but have no clue on to get the final path of the file.
	{{#each articles }}

{{ title }}

	{{/each}}

Right now, it is generating ... which is incorrect, since it should be my-file.html.
Is there anyway we can access the final filename from the metadata, so that we can use it as vairable for href above?

@KrishnaPG One possible solution would be to write another plugin to set the path property on all the files in that directory before passing it to handlebars.


How can the fps be when input image is 416*416?

No description provided.

Not tested, if you are interested, you can test it


tow-boot: Decrease memory set aside for bitmap

This fixes the issue where the logo wouldn't show on the Raspberry Pi family of hardware.
It seems asking for ~9MiB through malloc is too much?

Found the reason.

https://source.denx.de/u-boot/u-boot/-/blob/v2021.04/Kconfig#L211-217
https://source.denx.de/u-boot/u-boot/-/blob/v2021.04/include/configs/rpi.h#L57
https://source.denx.de/u-boot/u-boot/-/blob/v2021.04/include/configs/sunxi-common.h#L141-142
https://source.denx.de/u-boot/u-boot/-/blob/v2021.04/include/configs/meson64.h#L35

Basically the Raspberry Pi family of hardware uses a tiny amount of space for malloc (4MiB). This probably is fine and by design due to the considerations listed beforehand. The early models with 256MiB of RAM, in which a chunk is reserved for the videocore chip.
We probably can and should look into fulfilling the TODO, and conditionally apply different sizes depending on the target Raspberry Pi. Though we might also just want to increase it outright?
TODO

[ ] Re-do by increasing CONFIG_SYS_MALLOC_LEN


Remove extra reporting in RSpec3

@clintkelly
Let's remove the reporting patch first to unblock us to RSpec 3. We can investigate how to add it back later.

this is meant for airbnb/rspec-gc-control :/

If you want to add a flag/option to make this configurable, I'd be happy to merge it.  I can deal with the style annoyances from Hound so don't worry about formatting conventions.

Thanks a lot!
We are in the process of upgrading our test suite to use RSpec 3 instead of RSpec 2. Originally, I was going to hack together some solution for this to work with RSpec 3 but had limited success. For now, I'm removing this gem in our test suite to unblock the upgrade, but I'd love to revisit and help add support for RSpec and add it back to our test suite.

/me nods
If I can find some time I'll try and revisit it myself but I may benefit from you nudging me when your schedule permits.


List available projects by name instead of asking for an ID

I am following getting started instructions here. The third step is:

Set the ID of the project in your profile.

When the command prompts you, enter your project ID.

I do not get this prompt - I am only prompted for public and private API keys.
I tried with and without ~/.config/mongocli.toml                existing, same behavior.

Hi @p-mongo what version of mongocli are you using (mongocli --version), this was added to v0.5.0

I was using 0.2.0 it seems because make install did not install the binary in a usable location.
Master does prompt for project id, but what am I supposed to enter there? A list of existing projects would perhaps be helpful.

a list of existing projects has always been on my wish list since the first alpha but has always been left on the cutting floor, we'll see if we can address this for our next set of milestones

Edited title to match what we want to implement as original issue is a non issue


added support for custom "See all" close buttons

It was useful for me to have a unique button and button layout for the dismissal of the thumbnail view

LGTM 👍 Thanks @miex0r for contributing 👌

removed the extra line.
NP @zfoltin - glad to help. love the plugin so far.
another PR i may put in next week will be configuration around the thumbnail collection view cell cards. It would be cool to customize the style of those (custom shadows,margins,etc).

👍 looking forward to the next PR :) There is a lot that could be improved on the thumbnails view


[AVM Question/Feedback]: Customize deployment history workflow

Check for previous/existing GitHub issues

[X] I have checked for previous/existing GitHub issues

Description
In the ALZ sub-vending pattern module, we need to have this workflow to run on a custom management group as it generates lots of deployments.

@Azure/avm-core-team-technical-bicep folks, when you have a chance, please take a look. Thanks!

We can certainly do that via a runtime parameter.
I'd be curious though @jtracey93, how did you handle the mgmt-group deployment limit in ALZ-Bicep?


Can't Bypass Self Signed Certificate on Xamarin.IOS

Is there a way to bypass problems with connecting to a server using a self-signed certificate?
Version

[ ] nuget version = <IP_ADDRESS>
[ ] sample

            Xamarin.Auth.OAuth2Authenticator authenticator = new Xamarin.Auth.OAuth2Authenticator(
                clientId: _clientId,
                scope: "",
                authorizeUrl: authorizeUri,
                redirectUrl: callbackUri)
            { ShowErrors = true };

            authenticator.AllowCancel = true;
            authenticator.Completed += Completed;
            authenticator.Error += Error;

            if (viewController is UINavigationController navController)
                viewController = navController.ViewControllers.Last();
            AppDelegate.AppWindow.BeginInvokeOnMainThread(() =>
            viewController.PresentViewController(authenticator.GetUI(), true, null));

Steps to reproduce

Connect to a server URL using a self-signed certificate and the above code snippet
After presenting the view controller, the error event is fired with a message similar to "The server you are connecting to is invalid..."
Embedded web view is closed

Expected behaviour
Be able to bypass/trust the self signed certificate; on Android this works fine without adding extra code.
Actual behaviour
No option to bypass/trust the self signed certificate.
Comments
I tried using ServicePointManager.ServerCertificateValidationCallback but it does not work. Our app has its own HttpClient and handler for pinning self signed certificates, but I noticed that in the Request class it is using its own HttpClient. If I override this class, I'm not sure where/how the OAuth2Authenticator will utilize my derived instance of Request/OAuth2Request.

It looks like the WkWebView should have a didReceiveAuthenticationChallenge handler... :P

I modified the source code to add this in the WkWebViewNavigationDelegate (I defaulted to using WkWebViews)
            public override void DidReceiveAuthenticationChallenge(WKWebView webView, NSUrlAuthenticationChallenge challenge,  Action<NSUrlSessionAuthChallengeDisposition, NSUrlCredential> completionHandler)
            {
                completionHandler(
                NSUrlSessionAuthChallengeDisposition.UseCredential,
                NSUrlCredential.FromTrust(challenge.ProtectionSpace.ServerSecTrust));

                return;
            }

I'm able to bypass the certificate error and the OAuth dialog shows, but after successfully logging in the app crashes. Let me know if you would like a stack trace.

Is there a particular reason you're using a self signed certificate?  This is generally considered a bad practice.  Perhaps consider using something like letsencrypt to get a trusted signed cert?
Supporting self signed certificates is not currently on our roadmap, sorry.

What about testing Redth?


Please stop removing terminal text during build

Bug Report
When running docz dev, all my terminal text gets deleted. Even warnings and intermediate errors thrown by docz get removed.
To Reproduce
Run docz dev
Expected behavior
Running docz should not delete terminal text and should not hide errors or intermediate warnings during build.
Environment

OS: OSX Mojave 10.14.2
Node/npm version: [e.g. Node 11/npm 6.5.0]

Also, while building the production bundle, terminal environments that don't support removing of text (like a build pipeline) end up logging hundreds (a couple thousand?) lines of output

Can docz support an environment variable to open or close console text? I just cannot locate errors because docz hides all errors.

Fixed, will have a new option called clearConsole that you can use to disable the default console clear on Docz :)


"migration guide" link in release notes is broken.

In the release notes for 0.17, there is a link for the migration guide, and that link returns a 404 error page.

Thanks for reporting; we were having trouble with DNS, I think this is now resolved.


Feature request: OAuth header support/integration

Is your feature request related to a problem? Please describe.
A number of APIs and services are protected using OAuth these days, and it would be great to integrate an OAuth-specific header builder (similar to Postman) to enable easy testing of OAuth-protected resources.
Describe the solution you'd like
A header "builder" to construct an OAuth Authorization header.
Describe alternatives you've considered
None so far.
Additional context
This is a list of the authentication schemes that Postman supports - for a free tool, OAuth in particular would be very useful.

Hi there,
Thanks for opening the issue. OAuth is something really important to many workloads and is indeed a high priority thing to be implemented.
@liyasthomas @jamesgeorge007 @NBTX @athul @izerozlu
Anyone willing to pick this issue up ? I am a bit in a handful with getting native wrapper going.

@benjaminhowarth1 isn't this how OAuth is sent in a request?
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

OAuth does use some standard URL parameters though....
We can look into those ?

I can do that.


Incorrect multiline enum parsing

Bug Report

🔎 Search Terms

multiline enum
line break enum
enum parsing

🕗 Version & Regression Information
I don't think this is a regression.
⏯ Playground Link
Playground link with relevant code
💻 Code

enum
E
{
  foo,
  bar
}

enum
F {
  foo,
  bar
}

🙁 Actual behavior
These declarations are parsed as valid enum declarations.
🙂 Expected behavior
enum declarations containing a line break between the enum keyword and the identifier should be parsed as multiple expressions.
- EnumDeclaration
+ ExpressionStatement: Identifier: enum
+ ExpressionStatement: Identifier: E
+ Block

Linked issues
babel/babel#12773, babel/babel#12776
/cc @armano2 @JLHwung @nicolo-ribaudo

I don't think that this is a bug: enum is a reserved word (and not a valid identifier), so there is no ambiguity allowing a line terminator.

Correct, this is working as intended.


Matrix on Vector multiplication

There is operator but no algorithm behind it

It's not a bug.
It uses another operator overload (array * matrix).
So those tests should be checked out for errors!


Tweak the main page

Goal
Discuss with your peers what you would like the homepage to show! It can be a good opportunity to tweak the app colors/layout etc.
As in #9, keep it simple (no big images, external assets, etc)
This can be an ongoing issue while you all keep implementing things.

Hi everyone, I would like to propose three tweaks, two tweaks on the home page itself, and one on the nav (this would be a bit more involved).

remove the existing 2 boxes for chain explorations information
add the builders list of avatars/initials and link them to the pages created in the issue #9 by individual builders
add builders page list and put it on the navigation, this would involve: creating a page of builders list (and linking them to each existing one), then adjust the navigation bar to link to this page

The two items on the home page might be able to be done in one issue/PR, and the builders list page would be separate issue/PR.
This would be the rough design of the points above:

I would appreciate any comment and if they are good, I would be happy to make issues for them that anyone can take and if it is okay I would like to take a stab at creating the page and adjusting the nav 😁

Oops my bad just saw the issue #4 this should be part of the point I mentioned above, and I believe @rohan-ahire06 is working on the issue?

Yes, I’m actively working on this issue at the moment. I also have a suggestion regarding the homepage that could add a fun and interactive element.
Vending Machine Concept
Proposal:
How about we introduce a virtual vending machine on the homepage? The idea is simple: users can make bids, and whoever places the highest bid will have their account featured on the homepage. This feature would then link directly to the builder’s detail page.
Not only does this add an exciting, gamified aspect to the site, but it also gives users an opportunity to showcase their work. Plus, you can even feature yourself on the homepage—it’s a win-win and a lot of fun!

@indralukmana

Agreed
Do we want all the builders immediately on the homepage? I'm just worried it will look cluttered
Agreed. NavBar item labeled 'Builders' that links to a list like you mentioned in item 2? Then, the avatars/initials would be on this page and would each link to the individual's profile page?

@rohan-ahire06
Love the idea of a gamified aspect for the site. I'm not sure I fully understand the bidding concept though. When I saw 'vending machine' I thought maybe a button that randomly selects a builder and provides their avatar and links (like those kids toy dispensers at the grocery store that give a random toy in a little ball). Would love to hear more about your proposed idea

@rohan-ahire06
That's a cool idea! Adding a gamified aspect to the project sounds fun. However, I'm a bit hesitant about implementing an extensive smart contract for this, especially since we're working on the OP mainnet. A bidding system with real money might not be something everyone wants to engage with 😆.
Maybe we can achieve the gamified feature aspect using a more benign approach. My idea is to combine on-chain and off-chain data, which could then be weighted into a scoring system. This could include:

Off-chain: GitHub activity (comments, discussions, PRs, emoji reactions, etc.)
On-chain: Smart contract check-ins
On-chain: Wallet history
Off-chain: Telegram channel activity
Other: Any other data that could be useful

We can compile this data and feed it into a scoring system. Based on your proposal, we could create a leaderboard, and those who rank highly could be featured on the homepage.

The pro is that this would foster engagement and activity across the GitHub repo and beyond. The con is that I’m not sure how simple or complex this would be to implement—some parts might not be feasible due to API constraints or might require hacks or leveraging undocumented APIs.

@RafaelCaso
For point 3 already worked on by @rohan-ahire06 in issue #4. For point 2 depends on how many builders that has checkedin and submit their PR for the personal page, around 20 persons should be okay, what we are showing should not be too much detail there, can be just small blocky avatar + short wallet address of builders, a more detailed one can be done in the builder list and the individual detail in each builder personal page.

FYI: There are around 12 persons in the batch.


_numberSymbol missing in Globalize.js, but required by Date.js

As the title states: _numberSymbol missing in Globalize.js, but required by Date.js

number.js should be defined before date.js


Sqlrecoverable 4.4.x

implemented try-with-resources, implemented removeAbandoned properties, fixed a bug in closeAllConnections.

This last change:

try-with-resources.
Java7 style multi-catch exceptions.
Implemented generic type parameters to remove code duplication while providing type safety and enable the use of interfaces rather than cast conversions,
Implemented parameterized methods "close" rather than the closeStatement, closeResultSet , closeConnection; though the last method it is still visible since it is a public method, but it calls the new close method. (Recommend deprecating these going forward).
Committed unit tests for DatabaseUtils

@Lorren Thanks a bunch for taking time to send the PR! Please make sure you squash all your commits into a single commit when you send the PR for review. During the review process you may merge conflicts in multiple conflicts. And after everything is finalized you need to rebase onto the master branch in a single commit.
Please find my feedback in-line code.


Internet Explorer - DOMException Invalid State

During the first ajax request after adding a utfGrid layer to a map, Internet Explorer (v11.0.9600) throws a DOMException: InvalidStateError.
I believe the problem is due to setting request.timeout after request.send() has already been called (ref: https://github.com/danzel/Leaflet.utfgrid/commit/c58e15a3782629a9824f485a717fac9ab4c31145?diff=unified#diff-9c205830311c365520ac7b1989ab3d3bR296).
The dist/leaflet.utfgrid.js from the parent commit (https://github.com/danzel/Leaflet.utfgrid/commit/f82bf1b0f4e70e50bc4412800030eff9575b90eb) works as expected in IE.

@sambernet ^^ You did this change I think, could you take a look please?

unfortunately I was moved away from the project and don't have access to a testbed at the moment. If someone can make a plunkr showcasing the problem I'll sure have a shot at it. At least I have access to IE11 :-)
Be aware that this might take some time, though, as I'm now on another project with an extremely tight roadmap. No christmas holidays whatsoever...


update malaria prevalence

update malaria prevalence
Description

Category: artifact
JIRA issue: MIC-4467
Research reference: prevalence_calculated

Changes and notes
Calculate prevalence using incidence*duration.
Verification and Testing
Made artifact.

just checking, is there an RT pull request (or somewhere otherwise documented) that we're not going to use just incidence * duration for early neonates, instead of ( incidence + duration) / 2 ?

You can find it in this table https://vivarium-research.readthedocs.io/en/latest/models/causes/malaria/index.html?highlight=malaria#id10
prevalence_calculated
For early neonatal age group: (birth_prevalence_I + (incidence_rate_c345 * duration_c345))/2. For all other age groups: incidence_rate_c345 * duration_c345
From: patricktnast @.>
Sent: Thursday, August 31, 2023 2:55 PM
To: ihmeuw/vivarium_gates_nutrition_optimization_child @.>
Cc: Subscribed @.***>
Subject: Re: [ihmeuw/vivarium_gates_nutrition_optimization_child] update malaria prevalence (PR #30)
just checking, is there an RT pull request (or somewhere otherwise documented) that we're not going to use just incidence * duration for early neonates, instead of ( incidence + duration) / 2 ?
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/ihmeuw/vivarium_gates_nutrition_optimization_child/pull/30*issuecomment-1701834046__;Iw!!K-Hz7m0Vt54!nY54pb0ZvAkbbp0ynbQIRKqHtyH3vz_9XV0Nbeore8J1SktkmNLLzXASZjqx3WCEC28HZySGymTegJkE7TT0$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/AAAMQJGFOJNSQVX36LBGM5DXYEB2BANCNFSM6AAAAAA4GTTQGQ__;!!K-Hz7m0Vt54!nY54pb0ZvAkbbp0ynbQIRKqHtyH3vz_9XV0Nbeore8J1SktkmNLLzXASZjqx3WCEC28HZySGymTegCmmX0H4$.
You are receiving this because you are subscribed to this thread.Message ID<EMAIL_ADDRESS>

Ah, I misread this slightly--I thought that this was removing the different calculation for ENN and was just going to make everything incidence * duration. I forgot that load_prevalence_from_incidence_and_duration also does the correction for the ENN age bin.


Seeding new repository

🎉 New feature
New package implementation of https://github.com/gazebosim/gz-sim/pull/1582
Summary
This pull request is regarding my GSoC project, which you can visit here. The idea is to create an ignition subcommand that can create a template ignition package based on the user's demands.
Test it
Build this repo with its dependencies and run ign pkg_create --help to see various options.
Checklist

[x] Signed all commits for DCO
[ ] Added tests
[ ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

I have included paths in the config file as requested.


Feature/add public access in postgresql

Description of your changes
Add support to PublicNetworkAccess field in PostgreSQLServer only.
This implementation is initially for internal use within Stone. For this reason that there is only an implementation for PostgreSQL and not MySQL. The burden of this is that the field is available in MySQL due to the structure of the types and is completely ignored in the MySQLServer CRD.
Fixes https://github.com/crossplane/provider-azure/issues/240

Fixes #
I have:

[x] Read and followed Crossplane's contribution process.
[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested

Unit tests
Manually tested

Disclaimer
Before to test see https://github.com/stone-payments/provider-azure/pull/3 talk about a bug that affect this change.

LGTM, thank you @G5Olivieri!


Kerberos Authentication with SSH

I'd like to be able to SSH to a server with Kerberos(gssapi) authentication. Searching github and the internet this is something that many in the enterprise/corporate environments would appreciate. Not sure why https://github.com/microsoft/vscode-remote-release/issues/250 was closed. A valid reason was not given. At the very least make a modification so the plink workaround works again.

It is just not practical for us to do this. I don't know what the comment about plink is referring to, if someone can give me more details I can try to give support for that.

The plink work around is posted here

Do you know why it broke? What options are not supported?


soloSearchText() doesn't work correctly.

From<EMAIL_ADDRESS>on July 19, 2013 01:59:44
I'm having a problem with searchText() function used with Robotium.
I'm searching for this string:
<string name="provisioning_wizard_title_2">Service Activation Wizard (Step 2)
I defined it in string xml, and I'm searching it this way:
Activity act=solo.getCurrentActivity();
String string = solo.getString(act.getResources().getIdentifier(stringId, "string", act.getPackageName()));
It fails when I call
assertTrue(solo.searchText(provisioning_wizard_title_2));
and it fails also if i call:
assertTrue(solo.searchText("Service Activation Wizard (Step 2)"));
even if that is the string I'm seeing in the focused screen activity.
The strange thing is that it works if I use the same string without last character:
assertTrue(solo.searchText("Service Activation Wizard (Step 2"));
and it works if I use
assertTrue(solo.searchText(string.substring(0, string.length()-1)));
I hope someone could help me.
Sorry for my english!
Thank you.
Original issue: http://code.google.com/p/robotium/issues/detail?id=489

From<EMAIL_ADDRESS>on July 19, 2013 03:59:41
Due to regex support in searchText() some characters will trigger it. Use Pattern.quote(string) example: Pattern.qoute("provisioning_wizard_title_2")
Status: Invalid
Owner<EMAIL_ADDRESS>

From<EMAIL_ADDRESS>on July 19, 2013 05:16:22
Thanks! It works!!! :)

From<EMAIL_ADDRESS>on July 22, 2013 08:47:16
I'm having the same problem with this string:
<string name="terms_and_conditions_title">Terms & Conditions

From<EMAIL_ADDRESS>on July 23, 2013 01:54:23
Does searchText("Terms") work?

From<EMAIL_ADDRESS>on July 23, 2013 01:59:45
Thank for answering.
Yes It works with that string but now it's not working with another string:
<string name="end_wizard_text">
Service activation wizard is almost complete. Press 'Done' button to
activate MDP Client.
</string>
I'm calling it from Robium test class as follow:
Activity act=solo.getCurrentActivity();
String s =
solo.getString(act.getResources().getIdentifier("end_wizard_text",
"string", act.getPackageName()));
return Pattern.quote(s);
assertTrue("End activation screen expected.",
solo.searchText(Pattern.quote(s)));
But it never fails; If i test this on a different layout it
solo.searchText() keeps on returning true even if I don't have that text on
the screen.
Thank you!
Flavio Capaccio - (+39)<PHONE_NUMBER>

From<EMAIL_ADDRESS>on July 23, 2013 02:02:23
Then you need to use public boolean searchText(String text, boolean onlyVisible) as the view is still there but hidden. Setting onlyVisible to true will only search for visible views. Please see the javadoc for more information. https://code.google.com/p/robotium/wiki/RobotiumAPIDocumentation

What if i want to search for an exact string?
For example, i have a label with text "Invite", when i perform searchText("Invite"), it returns true.
If i change the label to "Invites", the searchText("Invite") still returns true. What can i do to the method return false in this case?

All the search and waitFor methods support regular expression. You can use regular expression for your purpose.


Add artwork description to Viewing Room artworks view

Missed this in the spec till now! This PR grabs the artwork description if one exists and puts it below the artwork in the list view.

@mdole - It's super confusing, but I'm 99.9% sure that you want additionalInformation here instead of description. Description is an admin only blurb field. additional information is entered by partner.
Sorry for the late note here. Just now catching up on the emails after Friday:)

Ooo good catch @oxaudo, thank you! I'll confirm + make that change today


Assets unavailable on hempcoin.org

The original hcwin32.exe is the only asset available on the hempcoin.org website.
I'm sure there are THC interested parties that have written THC off because the available asset fails to open the wallet.

Hello, all recent releases are available on Github.
https://github.com/hempcoin-project/THC/releases


Fix tile add menu.

Coverage decreased (-0.07%) to 50.952% when pulling 770823f3bac1083e2d2b6ffabeb548f2cc10d1b5 on fix-tile-add into 3480e92c02fb4a7a7e67b762b35fe701fb3dd706 on master.


m6g instances are now available

https://aws.amazon.com/ec2/pricing/on-demand/ lists m6g instances. Super cheap!

I think they are all available on the website already so this could be closed.

Thanks for the reminder.


fx2 uvc firmware does not enumerate

A number of users have reported seeing the following using fxload. The same firmware images are successful when using libFPGALink. @ajitmathew and @shenki have experienced the same symptoms.
[ 4082.081760] usb 3-1: new high-speed USB device number 5 using xhci_hcd
[ 4082.099278] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64
[ 4082.099289] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
[ 4082.101581] usb 3-1: string descriptor 0 read error: -32
[ 4082.101595] usb 3-1: New USB device found, idVendor=1443, idProduct=0007
[ 4082.101601] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4333.753510] usb 3-1: USB disconnect, device number 5
[ 5288.065190] usb 3-1: new high-speed USB device number 6 using xhci_hcd
[ 5288.082848] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64
[ 5288.082859] usb 3-1: config 1 interface 0 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
[ 5288.085585] usb 3-1: string descriptor 0 read error: -32
[ 5288.085601] usb 3-1: New USB device found, idVendor=1443, idProduct=0007
[ 5288.085607] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6689.993968] usb 3-1: USB disconnect, device number 6
[ 6691.756616] usb 3-1: new full-speed USB device number 7 using xhci_hcd
[ 6691.759252] usb 3-1: Device not responding to set address.
[ 6691.963036] usb 3-1: Device not responding to set address.
[ 6692.164121] usb 3-1: device not accepting address 7, error -71
[ 6692.275953] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[ 6692.278503] usb 3-1: Device not responding to set address.
[ 6692.482280] usb 3-1: Device not responding to set address.
[ 6692.683371] usb 3-1: device not accepting address 8, error -71
[ 6692.795242] usb 3-1: new full-speed USB device number 9 using xhci_hcd
[ 6692.797829] usb 3-1: Device not responding to set address.
[ 6693.001626] usb 3-1: Device not responding to set address.
[ 6693.202716] usb 3-1: device not accepting address 9, error -71

Closing this as the HDMI2USB-jahanzeb-firmware is no longer under development.
All active development is now on the HDMI2USB-misoc-firmware which supports both the Atlys and Opsis boards and has loads of other new features!


Refactor follow.py to use Protocol.receive

...probably? Specifically FollowCallback and UnfollowCallback.

done in afc2511e62d565bacb1762dccf47c40907d2b4af


Grafana rbac, deployment ingress etc.

I don't know how we should manage cluster vs namespace mode from a kubebuilder point of view.
I will merge this PR now since I need it for other things and I think this is a good start.
In general we need to start playing around with the operator without running it through the Makefile.
I started writing e2e tests and that was when I found this issue.


GSAGH-454-Change-unit-of-Moment-per-Length-to-kNm-m-etc

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

Comparison is base (7918f68) 13.91% compared to head (2750a57) 13.73%.

:exclamation: Current head 2750a57 differs from pull request most recent head c617f67. Consider uploading reports for the commit c617f67 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #14      +/-   ##
==========================================
- Coverage   13.91%   13.73%   -0.18%
==========================================
  Files         639      639
  Lines      117938   117938
  Branches        0     4954    +4954
==========================================
- Hits        16408    16199     -209
+ Misses     101530   101527       -3
- Partials        0      212     +212

Flag
Coverage Δ

numberExtensions
32.13% <ø> (-0.05%)
:arrow_down:

serialization
8.74% <ø> (-0.07%)
:arrow_down:

unittests
75.83% <ø> (-8.78%)
:arrow_down:

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@tim-lyon @RaviKumarGubbala Hi both, I added MomentPerLength to OasysUnits since the lack of this unit was confusing our using and myself regularly. The magic numbers for the conversion to imperial units need thorough checking!

@tim-lyon @RaviKumarGubbala Hi both, I added MomentPerLength to OasysUnits since the lack of this unit was confusing our users and myself regularly. The magic numbers for the conversion to imperial units need thorough checking!

I added additional tests and derived those "magic numbers" from existing constants of other tests.


Remove empty test iteration file for mock startup.

Reduce strangeness factor, addresses #1082 . Test only.

Codecov diff is mixed up, shows results for another pull request...


AzureKeyVault fails with 'endpoints_resolution_error'

Question, Bug, or Feature?
Type: Bug
Enter Task Name: AzureKeyVault
Environment

Agent - Private, running under Azure DevOps
OS: RHEL 8.6
Version: 2.214.2

Issue Description
Secrets downloading takes 30+ sec to complete with the following error:
"Could not fetch access token for Azure. Status code: endpoints_resolution_error, status message: Error: could not resolve endpoints. Please check network and try again. Detail: ClientConfigurationError: untrusted_authority: The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter."
Update - 18 Dec 2022
I've managed to mitigate the error by removing the HTTP proxy and going directly to the internet to download the secrets. So whatever change has been done to the AzureKeyVault to download secrets, it doesn't take into consideration that the secrets download can be done from behind a proxy. And yeah, we set all the proxy environment variables; they're just being ignored.

I am seeing this issue as well. When trying to do a recent deployment we received an error during Download Secrets step which uses AzureKeyVaultV2 task. We noticed there was recent version downloaded 1.214.2 which seems to introduce the error. I am running azure devops agent on windows server 2019 with proxy configured.
Initialize Job Step:

Error during Download Secret step that occurs about 30 seconds later:

@jtterry2856 - Are you running on Self Hosted Agent ?
I got this error only when i am running on Self Hosted Agent with proxy enabled

@RaviChandraMadipadiga yes I am running self hosted agent

We're experiencing the same issue since the 14th. Self hosted agent (ver 2.193.0) using a proxy.
Could not fetch access token for Azure. Status code: endpoints_resolution_error, status message: Error: could not resolve endpoints. Please check network and try again. Detail: ClientConfigurationError: untrusted_authority: The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.

It seems to be related to the AzureKeyVault task 2.214.2. When we use the previous version (2.211.1), deployments succeed again.
However, I am not aware of an elegant way of forcing the agent to use a specific version for this task, since it is automatically selected because of a linked variable group, linked to the keyvault. Anyone?

@edohussl - Yes , i tried now changing the version to 1* in Azure Key Vault task and it succeeded but whereas with the Azure key vault variable group it is auto picking the version to latest as 1.214.3 as so the issue is occurring. Do we have any feasibility to change the version of the task to pick for key vault variable group ?

@RaviChandraMadipadiga Nope, you can't select the minor plugin version in the release pipeline. You can do that in the YAML pipeline, but YAML pipelines don't support the Deployment Groups. You can use Environments for YAML pipelines, but those don't support sharing of the VMs - as you can't have the same VM in multiple Enviornments... 'Consistency' wasn't apparently a key concern on mind of whoever design this entire thing. Maybe Jenkins isn't that bad after all... If we're blocked for too long I'll be making the case for CloudBees....

We have the same problem and we are not able to deactivate the proxy.
Is there a possibility to set max version of a task for the agent setup?

We are not able to enable direct internet access on our VMs. However, we did implement a workaround (it's more like hack though) to ensure the agent uses an older version of the AzureKeyVault task. We simply copied over the files from the old version (2.211.1) to the new version (2.214.2) in the 'work_tasks\AzureKeyVault...' folder.
I do think this is an issue that has to be fixed in the task or agent. How do we get this under the attention of Microsoft?

For me it works again! It seems that the task has been updated to 2.214.3 and now it runs smoothly.

@kwasiak - Seems like they have updated the task version now to 214.3 and it's working fine now.
Thank you for raising this issue in GitHub by seeing my question in community forum.it really helped all of us .

Works for me as well when I tested pipeline today. New version 1.214.3 was downloaded and "download secrets" step completed successfully.

Same here, works with 2.214.3. Although, it is strange that I see version 2.214.3 reported and other see 1.214.3 reported.

Thanks @ all,
the new AzureKeyVault task 1.214.3 works for us too.

the new AzureKeyVault task 1.215.0 have the same error again...

It is happening again with the newly installed AzureKeyVault task 2.215.0.

correct, just got an update from our DevOps team... I really need to start thinking about Jenkins....

I was troubleshooting a network/proxy related issue (407) regarding the AzureKeyVault task, but during the troubleshooting yesterday, I ran into the "endpoints_resolution_error". I came across this issue here and indeed what happened is that they pushed a new version of this task (2.215.0) yesterday, in which it is broken again ("endpoints_resolution_error"). However, a few hours later they pushed 2.215.1 and that one seems to be working fine again.

I faced the same problem with delete item in adf task. it may relate...
In my case solved by add prerequisite task to set HTTP_PROXY env to the session.
steps:

powershell: 'Write-Host "##vso[task.setvariable variable=HTTP_PROXY;]http://{proxy_host}:{port}"'


Add annotation for setting own enum values

Until now, the possible enum values are taken from the names of the components of a constant transformed to camel case.
Now, we want to allow setting own enum values by using a new annoation.
In a first step, I extended the ABAP Doc Parser so that the new annotation $enumValue 'value'  can be used.

@huber-nicolas @albertmink  What do you think about the new annotation $enumValue ? Any suggestions for improvement?

Is this a different way of providing the ENUM values than here ?
I don't know exactly how to use this feature. The unit test tells me something, but I cannot translate the information into JSON Schema ;(

It is an extension. You still provide the constant like this.
But the components of the constant can now be annotated with $enumValue 'newEnumValue'
Then, not the name of the component transformed to camel case is used as enum value but newEnumValue.
See this issue as reference

Now I remember. The name of the annotation enumValue is good. The JSON Schema does have enum, enumTitles and enumDescriptions. So adding an enumValue as ABAP annotation is fine.


serviceProvisioningErrors does not support $filter

The serviceProvisioningErrors property, according to the group resource type (beta) documentation:
"Errors published by a federated service describing a non-transient, service-specific error regarding the properties or link from a group object.
Supports $filter (eq, not, for isResolved and serviceInstance)."
However, it seems that it doesn't support filter.
Two examples with $count=true and with the ConsistencyLevel header = eventual:
Request: "GET https://graph.microsoft.com/beta/groups?$filter=serviceProvisioningErrors/any(x: x/isResolved eq false)&$count=true"
Response:
{
"error": {
"code": "Request_UnsupportedQuery",
"message": "Unsupported query.",
}
}
Request: "GET https://graph.microsoft.com/beta/groups?$filter=not(serviceProvisioningErrors/any(x: x/isResolved eq true))&$count=true"
Response:
{
"error": {
"code": "Request_UnsupportedQuery",
"message": "Unsupported query.",
}
}
Furthermore, the serviceProvisioningErrors property is not in the "Advanced query capabilities on Microsoft Entra ID objects" documentation page: https://learn.microsoft.com/en-us/graph/aad-advanced-queries?tabs=http
(related to this issue https://github.com/microsoftgraph/microsoft-graph-docs-contrib/issues/8789)

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

ID: 47d54936-0289-3e4c-0a34-1d01b4919db2
Version Independent ID: 953200ad-c9af-a80d-7bc2-836a25ddc273
Content: group resource type - Microsoft Graph beta
Content Source: api-reference/beta/resources/group.md
Product: groups
Technology: microsoft-graph
GitHub Login: @Jordanndahl
Microsoft Alias: MSGraphDocsVteam

Raised a PR to remove the reference.


Feature/frontend UI

Consistent (mostly) UI, check it out!

Uh oh. seems like you also committed node_modules. That's usually a bad idea since node_modules is usually very large and has lots of files. It's sort of like committing a virtual environment in python.

I think that, when the user joins a room, it should be redirected to another page, rather than dynamically changing the UI. This could come in handy when we have multiple rooms so that the user can just share the link to it.

Hm... how would that work though? We're not using fastapi to build webpages, just serve them, so when we build the frontend there is no way for it to know the dynamic content right?

As I don't think we're using this branch anymore, I'm closing the PR.


Release v1.4.0

#71  👈
main

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

Join @bg451 and the rest of your teammates on  Graphite


Added attachment style options

Fixes #2232
Changelog Entry
Fix #2232. Added attachment style options, by @stevkan in PR #2410
Description
Provides the ability to apply separate styling options for attachments (cards) and activities sent from the bot. Addresses attachment background and text color, attachment border styling, and nub border styling.
Specific Changes
Updated defaultStyleOptions.js:

Included style options for attachments.
Altered 'bot' property names to include "FromBot". For example, changed bubbleBackground to bubbleFromBotBackground.

Updated adaptiveCardHostConfig.js:

Included backgroundColor in containerStyles styles.
Set some containerStyles values to null. Otherwise, values compile as inline CSS requiring !important to be appended to style options in order to override.

As default values are providedd via the defaultStyleOptions.js, including null values should not have an effect.

Propagated property name changes across project files.

[ ] Testing Added
Unable to test due to PowerShell/Docker issues. Will require another to perform testing.

Ping on this PR, how's it going @stevkan?
(@CoHealer for FYI)

Closing due to inactivity. Feel free to resume discussion on #2232


it does not work in react native

I have this error when trying to use this module in my react native package
Unable to resolve module path from /node_modules/mime-types/index.js: MOdule does not exist in the module map

this make it work: https://github.com/Liroo/react-native-mime-types/commit/60696d08c507828485909da3973937ff0316d7da

@Liroo do u think it is worth send a PR to this package?

Maybe it's worth it to keep my git hub, but I will do some test if my own fork is compatible with the original repository :) 🚀

Hello, I rarely write NodeJS/npm code these days so am not up on the current practices.  I have never written anything requiring React so do not know that is requires.  Sorry for my ignorance.  This package was written back when NodeJS was young Ryan Dahl was still very much involved.
From your description I would guess that React is looking for index.js exclusively to know what to pull in to its system.  You could try symbolically linking mimetype.js (or renaming) to index.js and see if that works.

The fact is there is no path module on react-native, I recode a basic path.extname for compatibility

Sounds good. Feel free to send a pull request, if this is something that will help others. All the best Robert


[imgtool] Add big endian support

Add big endian support to imgtool so that it can be used on big endian targets.
Signed-off-by: Mark Schulte<EMAIL_ADDRESS>

What target will this generate images for?

Cortex-m4 targets, at the very least, can be switched into a "big endian" mode:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/I1835.html
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/I1835.html
In my particular use case, I'm using a cortex-r4 processor that is booted by default into big endian mode.


Custom ingress backends

https://kubernetes.io/docs/concepts/services-networking/ingress/#resource-backend

Should be implemented after https://github.com/cdk8s-team/cdk8s-plus/pull/432 is merged since it requires knowledge about the kind and apiGroup of a Resource, which this PR adds.


[PowerShell 7.1.0] regression in using module statement with relative paths

Steps to reproduce
md builders
"using module ./builders/foo.psm1`nfoo" > ./builders/foo.ps1
'function foo {"Hello"}' > ./builders/foo.psm1
./builders/foo.ps1

Expected behavior

PS /home/alex> ./builders/foo.ps1
Hello

Actual behavior

The module path '/home/alex/builders/builders/foo.psm1' contains duplicate builders entry.
PS /home/alex> ./builders/foo.ps1
./builders/foo.ps1: The specified module '/home/alex/builders/builders/foo.psm1' was not loaded because no valid module file was found in any module directory.

Environment data

PS /home/alex> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

PS /home/alex> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.1.0
PSEdition                      Core
GitCommitId                    7.1.0
OS                             Linux 4.4.0-17763-Microsoft #1432-Microsoft Mon Aug 18 18:18:00 PST 2020
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

PS. https://github.com/PowerShell/PowerShell/issues/7424

@al-cheb Thanks for reporting the regression! Want to pull a fix?

@iSazonov, Looks like it's a breaking change and not the bug - #7424
Before PowerShell Core 7.1,  the path is resolved relative to the current shell location. Now, the path resolves  relative to the current script.
I think  the documentation should be update to describe new behavior.

Ah, I see you run a root folder.
@al-cheb Please open new issue in https://github.com/MicrosoftDocs/PowerShell-Docs