Centralize logging system for WM

Impact of the new feature
Uniform, centralized logging system can bring many benefits to data operations, debugging, and monitoring of various WM services, components, workflows, etc.
Is your feature request related to a problem? Please describe.
At the moment we have de-centralized, non-overlapping logging solutions, like LogDB, file logs within WMAgents, Component logs for WM services, etc., which is very tedious to navigate and require different access patterns. From end-user point of view, e.g. data-ops, it is very cumbersome to navigate and find specific information about different topics.
Describe the solution you'd like
We may adopt CMS Monitoring system based on CERN brokers (AMQ) and MONIT backend using Elastic/OpenSearch and HDFS for storing semi-structured (JSON) documents. Each log entry can be represented as JSON document and injected to central service, similar to WMArchvie, which can proxy it to MONIT backend. Here is detailed plan for such system:

Logs can be represented as JSON document, i.e. we may have uniform logging format, e.g. {"service": SERVICE_NAME, "message": MESSAGE, "code": CODE, "timestamp": UNIX_TIME, "application": APPLICATION}
Request MONIT topics, e.g. WMLogs, within MONIT AMQ brokers and two backend streams ElasticSearch and HDFS areas. The former can use short retention policy, e.g. 1 month, the latter can hold logs up to 13 months.
Setup CMSAMQProxy (generalization of WMArchive) service on CMSWEB to be a proxy between clients and MONIT infrastructure; we already have its deployment for CMSWEB k8s infrastructure, docker and k8s manifest
Logs can be injected from distributed on and off-site locations in a similar fashion as we inject monitoring information, e.g. WMArchive. We can either use WMArchive code base to injects logs (JSON docs) or develop stand-along Logger class to use instead of python logger. If latter, it can log to either file based sink or to HTTP CMSWEB AMQ proxy or both.
Gradually patch various WM systems, services to inject new logs into MONIT
Logs in Elastic/OpenSearch can be viewed in browser, they can be queried and sliced using elastic search QueryLanguage, e.g. we may have predefined queries for different use-case, e.g. how to search for workflow evolution, or find specific error code, etc.
Logs can be used for additional monitoring purposes, e.g. watch workflow progress.
It is possible to have subscription channels where someone or application can subscribe to MONIT (kafka) topics, similar to what we have with Rucio traces

Describe alternatives you've considered
Do nothing and use existing system
Additional context
To implement this solution we may required the following:

perform evaluation of total log volume

log volume per individual service/application
rate of injection

discuss and establish log structure (see above proposal)
setup CMSAMQProxy and perform integration with MONIT

identify number of replicas for CMSAMQProxy based on evaluated log volume and injection rates
setup MONIT topic and retention policies
perform integration between WM application/service and CMSAMQProxy and MONIT

patch existing services to either use new injectors or class which will handle logging injection
manage authentication, current one is based on X509 if we'll setup CMSAMQProxy on CMSWEB and later should be adopted token based authentication

The migration can be done gradually without disruption of existing logging solutions, and even we may try individual service/application to start with and verify whole workflow. If successful, start gradually adding new services/applications.
Some training may be required for end-users to get use to Elastic/OpenSearch queries. Additional CLI interface can be developed too via proxy access to MONIT.

@vkuznet  @amaltaro I want to make one really important remark, which we should always keep in our heads while working on that.

Many of these logs contain sensitive information. And we must pay attention and invest additional effort for this information to be blurred before uploading the contents to a public repository!

@todor-ivanov , the MONIT infrastructure has "public" (open to CERN network) and pure "private" (open to restricted list) channels. The former is where we store our Monitoring metrics/records, while latter where our kubernetes log entries go and it has restricted access. We don't need to hide anything as the content will be restricted within CERN network, i.e. it does not have public internet access, it will be only visible to CMS, and if we want it will only visible to a specific e-groups, users.


(Fix): Change naming to be inline with kubernetes naming

The abbreviation used for ReadOnlyMany (ROM) and ReadWriteMany (RWM) in the code are not inline with the naming used by Kubernetes. It is best to adhere to the standard naming convention, which is ROX and RWX for ReadOnlyMany and ReadWriteMany respectively.
https://kubernetes.io/docs/concepts/storage/persistent-volumes/

/cc @StefanoFioravanzo


Access additional properties not defined the SDK?

I recently purchased an "AI Ultra 2-in-1 Robot Self-Empty XL" model RV2610WA.  It has a mop attachment as well as the self emptying bin.  There are several properties I'd like to be able to access, specifically through Home Assistant but I haven't been able to do so without modifying the SharkIQ SDK to include them.  I modified the SDK to expose the properties but these get lost when installing HA upgrades.
Is it possible to access these additional properties without modifying the HA Integrated SharkIQ SDK?  For example, I'd like to include WaterTankInstalled, Water_Tank_Empty, Charging_Status, CleanComplete, Evacuate_Resume and possibly others.
Here's a full is of what's returned from the cloud when I dump the full properties:
[
  "Ack_Response",
  "AreasToClean_V2",
  "Areas_To_Clean",
  "Battery_Capacity",
  "Battery_Serial_Num",
  "Build_Factory",
  "CRCount",
  "CRVote",
  "Charging_Status",
  "CleanComplete",
  "CleanRoomCommand",
  "Cleaning_Statistics",
  "ContinueClean",
  "DND_Time_Control",
  "DND_Time_Setting",
  "Default_Floor",
  "Default_Flow_Mode",
  "Default_Power_Mode",
  "Default_Wet_Power_Mode",
  "DeleteMaps",
  "DeviceTopicKey",
  "Device_Model_Number",
  "Device_Serial_Num",
  "DockedStatus",
  "EnableViperTunnel",
  "Enable_JSON_Data_Log",
  "Enable_RT_Log",
  "Enable_RT_Map",
  "Error_Code",
  "Evacuate_Resume",
  "Evacuating",
  "Exec_Command",
  "Exec_Response",
  "ExploreStatus",
  "Extended_Error_Code",
  "FanJetControl",
  "FanJetSetting",
  "Find_Device",
  "Flow_Mode",
  "HardwareConfigNav",
  "HardwareConfigSCM",
  "JSON_Data_Log",
  "LocalizationStatus",
  "LowLightMission",
  "Main_PCB_BL_Version",
  "Main_PCB_FW_Version",
  "Main_PCB_HW_Version",
  "MapReviewStatus",
  "MissionComplete",
  "Mobile_App_Room_Definition",
  "Module_Debug",
  "Module_debug",
  "Nav_Module_App_Version",
  "Nav_Module_BL_Version",
  "Nav_Module_FW_Version",
  "Nav_Module_HW_Version",
  "OTA_FW_VERSION",
  "OTA_Progress",
  "Operating_Mode",
  "Operational_Error_Log",
  "PMLock",
  "PMLocked",
  "PMVote",
  "PbFloor_Confidence",
  "Persistent_Floor_1",
  "Persistent_Floor_2",
  "Persistent_Floor_3",
  "Power_Mode",
  "Quiet_Time",
  "RSSI",
  "RTMapPeriod",
  "RTMapSendUntil",
  "Recharge_Resume",
  "Recharge_Resume_V2",
  "RechargingToResume",
  "RecommendRandR",
  "ReplaceBattery",
  "ReportPeriodDock",
  "ReportPeriodUndocked",
  "ResetRunTimeCumulative",
  "Reset_Factory_Defaults",
  "Reset_WiFi",
  "Robot_Firmware_Version",
  "Robot_Language_Control",
  "Robot_Language_Setting",
  "Robot_Room_List",
  "Robot_Volume_Control",
  "Robot_Volume_Setting",
  "Room_Definition",
  "RunTimeCumulative",
  "RunTimeCycle",
  "SCM_Error_Log",
  "SCM_FW_Version",
  "Send_Error_Logs",
  "Send_Map_Data",
  "SpecialCleanMode",
  "System_Error_Log",
  "Template_Version",
  "UBD_Version",
  "User_Information",
  "Visual_Floor_1",
  "Visual_Floor_2",
  "Visual_Floor_3",
  "VoiceVersion",
  "WaterTankInstalled",
  "Water_Tank_Empty",
  "WiFiModuleSerialNumber",
  "WiFi_FW_Version",
  "WiFi_HW_Version",
  "Zones"
]

@KHouse75 were you modifying the code in this repo?  Or the code for the Shark Integration in HA?
Reason I ask is we have a few pending PRs on the HA repo.  One of them is bumping the version of this repo.  So if the changes were on the code in this repo we could roll this into that PR in HA for the next release.
If you could make your changes and submit a PR (to whichever repo it affects) that would be more straight forward than us trying to reverse engineer and get it working with a robot we don't have.
I'll expedite reviews for any PRs you submit.

My python skill are lacking.  I'm really only doing basic changes to expose properties as attributes for HA entities so I can create automations to take action based on those.  I tested with the code in this repo and also sharkiq.py from the python package in HA.  In both, I just added the additional properties that my robot has under the following
@enum.unique
class Properties(enum.Enum):

I then created a custom component using the HA sharkiq repo code and modified it to add the additional properties as attributes for my vacuum under extra_state_attributes.  I then just pulled the modified SharkIQ SDK under the custom component and modified the code to point to it instead of the python package in HA.
I'm not familiar enough with python or the inner working of HA to know how to do much more.


Error encountered when running the app

I've just got the below error about the version of Werkzeug when running flask run:

If you guys encounter the same error, please try following the steps below by which I've managed to resolve the error:

Deactivate your current environment:
deactivate

Remove the virtual environment folder:
rm -rf venv

Create a new virtual environment and reinstall dependencies:
python -m venv venv
source venv/bin/activate  # Use venv\Scripts\activate on Windows
pip install -r requirements.txt

Feel free to discuss if any issue.  Thanks.

I had the same issues too, it seems like the issue may be to do with incompability due to different versions of flask and werkzeug. It seems like werkzeug has deprecated the url_decode command in its latest version, which is what's causing the import error. Please see these links for more information:
https://werkzeug.palletsprojects.com/en/3.0.x/changes/#version-3-0-1
https://github.com/pallets/werkzeug/issues/2600
Rolling back to older versions of flask and werkzeug fixed the issue for me, and I've changed the requirements.txt file in my pull request above. We may need to have a look at our current code and packages to decide whether:

We should use the older Flask and werkzeug packages, and make sure it doesn't affect any of our current code.
Use newer versions of Flask and werkzeug, and refactor our current code to remove deprecated functions.

Thanks Trieu.  This issue has been solved in Issue #6.  Everyone can run the app now.


Broadcast Intent listeners should be distinct from the intent handlers

Invoking "VIEW text/plain" should cause the document to be opened.
Broadcasting "VIEW text/plain" notifies that the document was opened.
Currently, broadcasting "VIEW text/plain" will invoke all the handlers, meaning that if 10 apps are registered to handle the intent, the system.api will gleefully open 10 windows showing the same document.

Documentation covers broadcasts current functionality (invoke all). Documentation changes (Developer guides) will be needed as well.


[Bug]: iOS onMapIdle fires multiple times at once

Mapbox Implementation
Mapbox
Mapbox Version
10.7.0
Platform
iOS
@rnmapbox/maps version
10.0.7
Standalone component to reproduce
import React, { useEffect, useState, useRef } from 'react';
import MapboxGL from '@rnmapbox/maps';

export default function MapScreen() {
  const [markers, setMarkers] = useState([]);
  const [mapRegion, setMapRegion] = useState([0, 0]);
  const [featuresInView, setFeaturesInView] = useState(null);

  const mapRef = useRef();

  useEffect(() => {
    setMarkers([
      {
        type: 'Feature',
        id: '1',
        properties: {},
        geometry: {
          type: 'Point',
          coordinates: [-74.00597, 40.71427],
        }
      },
      {
        type: 'Feature',
        id: '2',
        properties: {},
        geometry: {
          type: 'Point',
          coordinates: [-74.00697, 40.71527],
        }
      }
    ]);
  }, []);

  return (
    <MapboxGL.MapView
      ref={mapRef}
      onMapIdle={(data) => {
        console.log('on map idle fired');
        setMapRegion(data.properties.center);

        setFeaturesInView(null);
        mapRef.current?.queryRenderedFeaturesInRect([], null, ['vehicles-layer'])
          .then((data) => {
            const features = data.features.map(feature => feature.properties.status);
            setFeaturesInView(features);
          })
          .catch((error) => console.warn('Unable to set features in view.', error));
      }}
      style={{ flex: 1 }}
    >
      <MapboxGL.ShapeSource
        id="vehicles"
        shape={{
          type: 'FeatureCollection',
          features: markers
        }}
      >
        <MapboxGL.SymbolLayer
          id="vehicles-layer"
          sourceID="vehicles-layer"
          style={{
            iconAllowOverlap: true,
            iconSize: 0.15,
            iconAnchor: 'bottom',
            visibility: 'visible',
          }}
        />
      </MapboxGL.ShapeSource>
    </MapboxGL.MapView>
  );
}

Observed behavior and steps to reproduce
I am using the queryRenderedFeaturesInRect() function everytime the map moves to display the markers in view to the user on a seperate view. When that function is present however, the onMapIdle() callback will fire 1-5+ times - it's pretty random.
https://github.com/rnmapbox/maps/assets/63693881/1dba0c41-2723-428e-8886-a891d6b87f89
Expected behavior
The onMapIdle() callback should only fire once. This is what it does when the queryRenderedFeaturesInRect() function isn't present.
Notes / preliminary analysis
No response
Additional links and references
No response

I managed to come up with a workaround which isn't perfect, but it should do the job for now until this is fixed. This requires the map center being stored in a state variable.
<MapboxGL.MapView
  onMapIdle={(data) => {
    const { center } = data.properties;

    if (mapRegion[0] == center[0] && mapRegion[1] == center[1]) return;
    setMapRegion(center);

    // other functions
  }}
/>

@W1MMER I wasn't able to reproduce with the supplied code:

Used this code, but map idle only fired once.
import React, { useEffect, useState, useRef } from 'react';
import MapboxGL from '@rnmapbox/maps';

export default function MapScreen() {
  const [markers, setMarkers] = useState([]);
  const [mapRegion, setMapRegion] = useState([0, 0]);
  const [featuresInView, setFeaturesInView] = useState(null);

  const mapRef = useRef();

  useEffect(() => {
    setMarkers([
      {
        type: 'Feature',
        id: '1',
        properties: {},
        geometry: {
          type: 'Point',
          coordinates: [-74.00597, 40.71427],
        }
      },
      {
        type: 'Feature',
        id: '2',
        properties: {},
        geometry: {
          type: 'Point',
          coordinates: [-74.00697, 40.71527],
        }
      }
    ]);
  }, []);

  return (
    <MapboxGL.MapView
      ref={mapRef}
      onMapIdle={(data) => {
        console.log('on map idle fired');
        setMapRegion(data.properties.center);

        setFeaturesInView(null);
        mapRef.current?.queryRenderedFeaturesInRect([], null, ['vehicles-layer'])
          .then((data) => {
            const features = data.features.map(feature => feature.properties.status);
            setFeaturesInView(features);
          })
          .catch((error) => console.warn('Unable to set features in view.', error));
      }}
      style={{ flex: 1 }}
    >
      <MapboxGL.Camera
        zoomLevel={16}
        centerCoordinate={[-74.00597, 40.71427]}
      />
      <MapboxGL.ShapeSource
        id="vehicles"
        shape={{
          type: 'FeatureCollection',
          features: markers
        }}
      >
        <MapboxGL.SymbolLayer
          id="vehicles-layer"
          sourceID="vehicles-layer"
          style={{
            iconAllowOverlap: true,
            iconSize: 0.15,
            iconAnchor: 'bottom',
            visibility: 'visible',
          }}
        />
      </MapboxGL.ShapeSource>
    </MapboxGL.MapView>
  );
}

Hey @mfazekas, I found after I made this issue that this bug only occurred when you use a function inside of the onMapIdle callback. When it's not present; it works as intended.

@W1MMER I'm closing this then, as I cannot repro based on the provided example


Replace api.test with metatests

Currently api.test duplicates the functionality of metatests.

@JuliaGerasymenko feel free to contact me if you need any help.

Closed in https://github.com/metarhia/impress/pull/868


Netstandard support

Hi @kevingosse
As you know ClrMd start work on netstandard2.0 port (at least master branch already can be builded as nestandard2.0), but your package use net452, why you not support netstandard2.0?

No reason really, I just didn't take the time :)
Fixed.


bedtools coverage with -sorted flag

The command in line 40 of the https://github.com/chrisquince/STRONG/blob/master/SnakeNest/Binning.snake script should be changed from:
shell:   "bedtools coverage -a {input.bed} -b {input.sample} -mean > {output} 2>{log} "
to
shell:   "bedtools coverage -a {input.bed} -b {input.sample} -mean -sorted > {output} 2>{log} "
which would heavily reduce memory requirements.

Or, if that's not possible, to run samples sequentially instead of in parallel to avoid the pipeline to crash due to memory limits


How to import pre-populated database

I don't need to store any data, I just need to load data that is already known before the app is even started.
How do I pre-populate the Hive database? This should not be done at runtime. The database should be stored encrypted in binary format in the assets folder and should be imported at runtime with all the data already present.
Thanks!

I also need pre-stored date from hive DB


Migration Error to v2 [Prisma]

Getting Error while migrating
You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

┌─────────────────────────────────────────────────────────┐
│  Update available 4.11.0 -> 4.12.0                      │
│  Run the following to update                            │
│    yarn add --dev prisma@latest                         │
│    yarn add @prisma/client@latest                       │
└─────────────────────────────────────────────────────────┘
$ node scripts/check-db.js
✓ DATABASE_URL is defined.
✓ Database connection successful.
✗
Invalid `prisma.$queryRaw()` invocation:

Raw query failed. Code: `42601`. Message: `db error: ERROR: syntax error at or near "versi
on"`
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: "check-db" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.```

Even after upgrading the prismaClient and prisma, still showing the same error.

I had the same error when I used 1. running inside the Umami folder, running the migration standalone is working fine for me. (PostgreSQL)

How does one migrate if running in Docker?

Before the associated PR merge, adding the environment variable SKIP_DB_CHECK=1 worked for me.


Text layout issues

http://hearthstonelabs.com/cards#lang=deDE;cost=10;set=OG;detail=OG_133
Reference screenshot in-game:

Similar issue with Y'Shaarj:

Hm, the N'Zoth text looks fine for me on hs-labs. I am pretty sure this is due to the body font used. I need to investigate some more.

Going to make this the master bug for text layout issues.
The Caverns Below:
https://art.hearthstonejson.com/v1/render/latest/enUS/256x/UNG_067.png

Awaken the Makers:
https://art.hearthstonejson.com/v1/render/latest/enUS/256x/UNG_940.png

Open the Waygate:
https://art.hearthstonejson.com/v1/render/latest/enUS/256x/UNG_028.png

The Marsh Queen:
https://art.hearthstonejson.com/v1/render/latest/enUS/256x/UNG_920.png

Gadgetzan Jouster:
https://art.hearthstonejson.com/v1/render/latest/enUS/256x/AT_133.png


Feature request: Named Return Values

Consider the following code:
// sum :: (nums: ..i32) -> i32 {
sum :: (nums: ..i32) -> total: i32 {
    // total: i32 = 0;
    for num in nums {
        total += num;
    }
    return total;
}

Having available Named Return Values already defines the return value at the procedure definition so there is no need to retype nor instantiate it in the procedure body.

This has been completed in #131!


@hellyeah's clubs for the week

See #244 for full details.
Check off each club once the requirements in #244 are met. These are
@hellyeah's clubs:

[x] Elizabeth High School
[x] Project Cipher
[ ] Columbia Secondary School
[ ] College Park High School

Raw notes from call w/ Jevin
Hosted first formal workshop meeting yesterday
Did a custom-version of jon’s portfolio workshops
—added a bit more stuff to it for more depth
—sound, background image, space for projects
http://nguyenbrian.github.io/john-cenas-personal-website/
http://qureshiomar.github.io/snoopdoggs-website/
Did it in pairs
—worked really well with this one
—bounced questions off
—at the beginning they weren’t asking questions
—we had to facilitate
—do you know where your partners at
—what are you doing right now?
—are you added anything extra
Super effective: walk around and ask them every once in a while: tell us what your partner’s doing right now.
Getting over the hump of what your partner’s doing
Steps we went through were on C9
—modified his using C9 instead of JSBin
https://docs.google.com/document/d/1jCkOlEbgu_mCJDYCEdBk-rUSqTicHQy8YutEJ5MM6mY/edit?usp=sharing
One of the quotations i put was the wrong way
—when they asked their partner what they were doing, almost everyone realized they were stuck on the same problem (our error) and that jumpstarted conversation and connection
We had a bit more time
—had 2 hours and a bit
—finished 1 hr and 50 minutes
—everyone finished at different intervals bc they had different experience
When you finished, people didn’t just close their laptop and leave
—they kept wanting to add more to their websites
—we gave them a lot of freedom
Optimal meeting: when you say meeting is over, you can’t even kick people out the door
Pre-meeting
We made the whole workshop
—jowl pointed out things he thought could be better
—i went through it and made my own website
—tested it with his older brother (who’s inexperienced)
—they made it more thorough and in-depth
we let people know the meeting was going to happen on sunday the wednesday before
—helped coordinate the carpools
—we have a slack #rides
got some feedback: 4 responses
—filled it out in the form — got like 5 responses — waiting on 10ish more
—pair
—start faster — we chilled at the beginning
—easy to follow workshop — explained every step out — gifs and everything
—environment was really friendly
Everyone had finished the workshop at the end
—some people had to go right after bc they wanted to continue to add things instead of filling out feedback
—messaged them personally on slack an hour ago
—following up with them
People trickled in
—we had a pool table there
—had music on in the background
—we didn’t want people to start and then have people come in
—we are a bit more organized: know who’s coming
—had a party day before where people got to know each others names
—if people can’t make it, they msg us on slack
Names is the most important thing
—when you ask someone’s name when they walk in
—being able to call people by their names emphasizes that you actually care
—hits a lot of people by surprise when you call someone by their name bc people just expect you to forget their name
—brings level of uncomfortability way way way down
—ask people’s name right away
—15 people is easy if you just try
Music led into the mood a lot
—even while people are coding
—we have a spotify playlist that anyone can add music to
We were going through the workshop at the same time they were
—my computer was hooked up to the projector
—when I would get ahead, I’d leave my site up and walk around
Don’t hover over people; phrasing of questions is important
—because I was doing it too, I could ask: “i used this color. what background color did you use for your thing” instead of “what are you doing right now”
—creates more of a conversation
—asking from the perspective of you doing it too
As you’re going through the workshop, keep it personal too. Don’t just ask about workshop. it’s ok to have some conversation while they are doing their workshop, especially if you ask personal things, maybe things they’ve mentioned before.
What’s the biggest thing you’ll do differently?
—starting a bit quicker in the beginning
—make sure we have everything setup
—intro of the workshop could be done better
——went through it too quickly: should’ve talked more in-depth about workshop
——transitioning them into the workshop by doing the first step with them: importance of googling
People are afraid to be harsh/mean
When we give out feedback, maybe mention that we want you to be mean. Intent of feedback is for us to get better. We’re not going to get mad at you; we’re going to be happy bc we want to improve, want to get better.
Attendance: 13/18
—want 18
—20 would be cap
City itself has picked up on what we’re doing
—want to host workshops at libraries
—with more people
—people who came to first meeting are going to help run those workshops

Amy had her meeting -- it went well.
Going to ask if she can hop on a call tomorrow after school to recap it with me.
Still waiting on a response from Abby. Might try email tomorrow.

Did not complete this issue.
Abby responded. I will jump on a call with her this week.
Texted Vene and emailed Vene/Ilisha. No response.

Amy: https://github.com/hackedu/hackedu/pull/446
Jevin: https://github.com/hackedu/hackedu/pull/445


chore(remix-dev): log when using future flags that have been removed or stablized

given the following future config:
  future: {
    unstable_dev: true,
    v2_errorBoundary: true,
    v2_meta: true,
    v2_normalizeFormMethod: true,
    v2_routeConvention: true,
  },

Closes: #

[ ] Docs
[ ] Tests

Testing Strategy:

@mcansh I guess this PR is obsolete now?
CC/ @brophdawg11

Oh snap, I totally forgot about this.  I still like this while remix.config.js is a JS file and not a TS file since there's no warning about flags that are now useless.  I'm going to cherry-pick the relevant commits into a new PR against dev and confirm with the team.

Closing in favor of https://github.com/remix-run/remix/pull/7048


Environment variables when deploying to production / Fetching Contentful data from client or server

I asked a version of this question on spectrum but didn't get a response.
I've been using Next to port a react project that requires SSR it's been going smoothly until I attempted to deploy the app to Google App Engine (GAE). I need to fetch data from Contentful which requires an API key which can't be exposed. Currently I'm using a custom express server but all Contentful API calls are made client side. I'm using the example webpack config to load my environment variables from a .env file during development which works just fine. For deploying a production build I added my environment variable to the app.yaml as instructed by GAEs docs. The app deploys successful and it starts to load when I open it but then I get an error in reference to my Contentful API key.
I'm using the env to setup my Contentful client used fetch my Contentful data via getInitialProps in my next.js pages as shown in the learn Next docs:
Contentful Client
import { createClient } from 'contentful';

const API_SPACE_ID = process.env.CONTENTFUL_SPACE_ID;
const API_TOKEN = process.env.NODE_ENV !== 'production' ? process.env.CONTENTFUL_API_PREVIEW_TOKEN : process.env.CONTENTFUL_API_TOKEN;
const HOST = process.env.NODE_ENV !== 'production' ? process.env.CONTENTFUL_API_PREVIEW_URL : process.env.CONTENTFUL_API_BASE_URL;

const contentfulClient = createClient({
  space: API_SPACE_ID,
  accessToken: API_TOKEN,
  host: HOST,
});

export default contentfulClient;

Contentful API Call:
import contentfulClient from './contentfulClient';

const getContentByType = async contentType => {
  return contentfulClient
    .getEntries({
      content_type: contentType,
    })
    .then(response => {
      return response.items;
    });
};

Questions:

Should I fetch data from Contentful using getInitialProps on the client or should I setup an API on the server and call that from the client?
If fetching the data on the client side is ok, how do I set the environment variables and do so without exposing them?

Thanks so much for the awesome framework.

Afaik the contenful access token does not need to be kept secret if the content is public. You should keep it out of the source code tho, I suggest using nextjs’ config feature.
If you have private content, you’ll need to create an api endpoint/server, where you keep your key secret, and communicate with that endpoint instead of contentful.
Source: https://www.contentfulcommunity.com/t/should-i-keep-access-tokens-secret/457

I've been using Next to port a react project that requires SSR
need to fetch data from Contentful which requires an API key which can't be exposed.

Doesn't this mean that you already ran into the same issue with the React project you initially built before moving to Next 🤔
Anyway, @jonespen's suggestions are great, just to throw in a few extra links:
This is the runtime configuration feature he's talking about: https://github.com/zeit/next.js#exposing-configuration-to-the-server--client-side
The suggestion to set up a custom endpoint/microservice is probably a good idea if you don't want to do requests to contentful directly for security reasons. It also could be interesting to do that if you're considering to combine multiple data sources or move to another CMS provider in the future.

As this answers both questions I'll close this issue.

Linked to this issue here: https://spectrum.chat/?t=e0cfdcc6-d394-4f73-97bd-35ab71bfa9d3


Do You Have An Archive of The Windows 10 SDK?

Hi. I'm interested in using your package for a project but the link you have for the SDK is down, as is the rest of the thalmiclabs website. Do you have an archive I can download for the SDK?

It's right there at the top of the README ;-)

[Oct 15, 2018] Thalmic Labs have announced the discontinuation of the Myo
armband. Software that used to be accessible on the Thalmic downloads page
can be found on the GitHub releases page.


check if the pathway description is in the RDF

and does it have a Literal data matching something like "HTML string"?

Question came up after looking at an example ttl for WP554 (attached as txt). It's got

DataNodes
Labels
Shapes
Interactions
Publications

But that's it. No description.
WP554.txt

The wp RDF of the same pathway (attached as txt) has this curious chunk:
<http://identifiers.org/wikipathways/WP554_r105430>
        a                      skos:Collection , wp:Pathway ;
        dc:identifier          <http://identifiers.org/wikipathways/WP554> ;
        dc:source              "WikiPathways"^^xsd:string ;
        dc:title               "ACE Inhibitor Pathway"@en ;
        dcterms:description    "" ;
        dcterms:identifier     "WP554"^^xsd:string ;
        dcterms:references     <http://identifiers.org/pubmed/17464936> ;
        wp:isAbout             <http://rdf.wikipathways.org/Pathway/WP554_r105430> ;
        wp:ontologyTag         <http://purl.obolibrary.org/obo/PW_0000245> , <http://vocabularies.wikipathways.org/wp#Curation:AnalysisCollection> , <http://purl.obolibrary.org/obo/PW_0001228> ;
        wp:organism            <http://purl.obolibrary.org/obo/NCBITaxon_9606> ;
        wp:organismName        "Homo sapiens"^^xsd:string ;
        wp:pathwayOntologyTag  <http://purl.obolibrary.org/obo/PW_0001228> , <http://purl.obolibrary.org/obo/PW_0000245> ;
        foaf:page              <http://www.wikipathways.org/instance/WP554_r105430> .

Note the description field. Maybe it's supposed to go there, but something in the pipeline broke?
WP554-wp.txt

And Andra just shared this query against the WikiPathways endpoint that returns descriptions for each pathway!?  So it must be in there somewhere...
https://paws-public.wmflabs.org/paws-public/User:Andrawaag/Wikipathways_email_scribles.ipynb
prefix dcterms:	<http://purl.org/dc/terms/>
SELECT ?item ?description WHERE {
   ?item wdt:P2410 ?wpid ;
         wdt:P2888 ?wpiri .
  SERVICE <http://sparql.wikipathways.org/> {
      ?version dc:identifier ?wpiri ;
               dcterms:description ?description .
    }
}

Ok. Mystery solved. The descriptions are there in the wp RDF. I just happened to check WP554 which is blank due to a recent change to the description that must be causing GPML2RDF to choke. I'll report that as a new bug.  But this can be closed: descriptions ARE in the RDF.


Update several quickstarts with HTTPS guidance.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/includes/file-get-started-excel-angular.md
:white_check_mark:Succeeded

docs/includes/file-get-started-excel-jquery.md
:white_check_mark:Succeeded

docs/includes/file-get-started-excel-react.md
:white_check_mark:Succeeded

docs/includes/file-get-started-powerpoint.md
:white_check_mark:Succeeded

docs/includes/file-get-started-project.md
:white_check_mark:Succeeded

docs/overview/office-add-ins.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Missing space in bugbot blurb for beta uplift

BugBot's comment here had a missing space between sentences: approval.Also,
    If yes, please nominate the patch for beta approval.Also, don't [...]

Probably we need to update some string in the bugbot code to include a space between those sentences.

Daniel, thank you for reporting this! It should be fixed by #2195.


Nova 4.1 added a dark mode toggle - this package only uses system setting

Nova: 4.1
Package: 3.0.1
Laravel: 9.7

We end up with the multiselect showing the incorrect them if someone selects either 'Light' or 'Dark' and their system setting is set to the opposite.
Scenario 1:
System setting: Dark
Nova setting: Light

Scenario 2:
System setting: Light
Nova setting: Dark

Heya! Thanks for the report. It's now been fixed in major release 4.0. The release 4.0 also brings with us a namespace change from OptimistDigital to Outl1ne. Please follow the upgrade directions here: https://github.com/outl1ne/nova-multiselect-field/releases/tag/4.0.0
Thanks!


test

test

Hi @zhaiyanqing6!
Thanks for wanting to contribute to Bootstrap by sending this pull request!
Unfortunately, your pull request seems to have some problems:

The title of this pull request strongly suggests that you were using Bootstrap to test out Git or GitHub, rather than proposing a legitimate change. If that's accurate, please DON'T do that again! Instead, use your own personal repositories to experiment with how to use Git or GitHub. Using the repos of public projects (such as Bootstrap) for such experiments wastes the time of those projects' maintainers and is thus considered rude.
The CNAME file should never be modified.
Changes must be made to the original Sass or Less source code file(s), not just the compiled CSS file(s).
Changes must be made to the original JS source code file(s), not just the generated concatenated JS file(s).

You'll need to fix these mistakes and revise your pull request before we can proceed further.
Once you've fixed these problems, you can either ask the maintainers to re-open this pull request, or you can create a new pull request.
Thanks!
(Please note that this is a fully automated comment.)

Please do not use public repository to learn git


finishing leaflet and map setup

couple of changes to handlebars file and map.js

just a couple of typos so I'm merging without approval


Make phone-number exercise compatible with the json schema

Related to #625.

Looks Great!  Thanks @tejasbubane


fix Method repr()

While debugging I came across lines like:
- Comparator: <bound method null.__eq__ of test>

Kept me on the wrong trail for a bit. Turns out org.python.types.Type objects on org.python.types.Methods don't have a __name__ registered. This change uses org.python.types.Type's repr method, resulting in logs like:
- Comparator: <bound method <class 'str'>.__eq__ of test>

Any idea why compilation failed in the CI?

@eliasdorneles Ah, yes -- those failures have since been fixed in https://github.com/pybee/voc/pull/836. I'm not sure how to retrigger the build?

@patiences gotcha! So, if you synchronize the branch of this PR with master (either with merge or rebase), it will incorporate those changes and trigger a new build.


Cmd/ctrl-left to go up a graph level

plugins need a way to report errors to the core so they can be displayed and then they need to be bubbled up to root

Closing and opening #234


Train.py Problems

Hey,
I downloaded dataset and change dataset directory in mvtech.py but when i run python3 train.py -p 3 it returns
train_normal_image = torch.stack([T(load_images(j,i)) for j in train_path_images.keys() for i in train_path_images[j]])
AttributeError: 'NoneType' object has no attribute 'keys'
this one. How can i solve that problem.

The folders of all the different classes (hazelnut etc.) must be situated in the same directory. If the folder where all the different class folders are situated is called "mvtec_dataset" (as an example) you must set the dataset directory in mvtech.py to the "mvtec_dataset" folder and not the "hazelnut" folder directly.


Add support for Centos7/8 and Amazonlinux2

To get this to work I had to make two changes

Instead of using lsb_release to identify which Linux we are running I parse the /etc/os-release file. This file is more likely to be available.
I don't use ask swiftenv-api.fuller.li to get the URL for the swift release. The swift team have a standard naming scheme for swift releases so you should need to create a new entry for each new release of swift.

@adam-fowler let me know if you need any help, I'm happy to work on the PR just don't want to step on your toes :).

@adam-fowler let me know if you need any help, I'm happy to work on the PR just don't want to step on your toes :).

I think I'm good at the moment. Fixed the first two issues. I'm making dinner just now will probably look at the others tomorrow.

One last thing to do add support for aarch64

That's aarch64 dealt with. Frustratingly aarch64 archives have "usr" as a root folder so had to catch that

Is it necessary to check for local cached URLs seeing as we don't use the server anymore to generate URLs?
If it isn't necessary can we delete https://github.com/kylef/swiftenv/blob/4bdf2a556e61946514879f1b13621a8707488ae0/libexec/swiftenv-install#L375-L381
This also brings up the question, is the option --list even valid anymore? And is it worthwhile keeping the folder share/swiftenv-install?

Is it necessary to check for local cached URLs seeing as we don't use the server anymore to generate URLs?

Yeah this can go now. The contents of share/swiftenv-install can be removed along with the cached version generation logic in Makefile.

Yeah this can go now. The contents of share/swiftenv-install can be removed along with the cached version generation logic in Makefile.
Removing share/swiftenv-install will affect the --list option. Possibly remove that in another PR, along with the option, which is obviously a breaking change.

@kylef This project has made setting up Swift on Linux so much easier. I know the SSWG(Swift Server Working Group) are looking to do something similar for all non-Darwin platforms. Your work on swiftenv means your experience could be of great use. Would you be interested in being involved in this?


preprocessing.DummyEncoder.transform() gives confusing error message with unexpected columns

When DummyEncoder encounters a dataframe with different columns than the fit() encountered, the error message prints self.columns. If no columns value was passed to init this reports an error message like:

ValueError: Columns of 'X' do not match the training columns. Got Index([.......], dtype='object'), expected None

If instead the error printed self.columns_, which appears to be set from the dataframe passed to fit() it would make the error much more clear.
Personally, I've added something like this to our local codebase

expected = set(self.columns_)
got = set(X.columns)

raise ValueError(
f"Columns of 'X' do not match the training columns.\n"
f"X is missing: {expected - got or 'No columns missing'}. "
f"X has but these were not expected: {got - expected or 'No unexpected columns'}."
)

Which makes it clear where the columns differ from expected. I'm more than happy to submit a PR for this, but have never contributed to open source before so this may take me more time than should be necessary for such a small error.
I'm also unsure if the library has a way to handle a more general input validation across transformers, or if that is even within the scope of dask-ml.

Thanks. I think that's correct, we should be using self.columns_ instead of self.columns.
If you are interested in making a fix, http://ml.dask.org/contributing.html has instructions for getting started. Otherwise, I'll try to get to it next week.

I'm also unsure if the library has a way to handle a more general input validation across transformers, or if that is even within the scope of dask-ml.

Could you explain that a bit more? Generally, estimators just do whatever validation is required for their own correctness (checking shapes, missing data, etc.).

Thanks for getting back!
By validation I mean that ensuring the columns passed to transform() have the same name and dtype given during fit() (or at least compatible dtype, say int8 vs int32 or something). We recently ran into a bit of an issue where we did pd.read_sql(...) and the query returned the proper columns / names, but one of the inferred dtypes was unexpected since the column in the DB was NULL / dtype unspecified (I think it inferred to string).
After writing I'm unsure this falls under the scope of the library, but It's something I'm probably gonna have to implement for work anyway.

By validation I mean that ensuring the columns passed to transform() have the same name and dtype given during fit()

We typically follow scikit-learn here, which I believe will attempt to coerce things (so the int8 vs int32 wouldn't matter).
DummyEncoder is a bit special since it's dataframe-only.
For those looking to contribute, I think the relevant change is on https://github.com/dask/dask-ml/blob/cc4837c2c2101f9302cac38354b55754263cd1f3/dask_ml/preprocessing/data.py#L635. That and tests.

Closed by #610


Non-Regularized OTPlanSampler: Duplicate and Missing Entries

Hi, I’ve been experimenting with the OTPlanSampler for the batchOT and SF2M methods, but I encountered some results using the non-regularized OT plan sampler that I can’t understand.
For example, my very simple code is as follows:
batch_size = 6
x0 = sample_8gaussians(batch_size)
x1 = sample_moons(batch_size)

ot_sampler = OTPlanSampler(method="exact")
x0__,x1__  = ot_sampler.sample_plan(x0, x1)
print( x0, x0__ )

And the input tensor is:
tensor([[ 2.2023, -2.9085],
        [ 3.7234,  4.4048],
        [ 2.9529, -3.4727],
        [-2.7239, -3.5034],
        [-3.2309,  4.0971],
        [ 4.9099,  0.5921]])

While the output is:
tensor([[ 3.7234,  4.4048],
        [ 2.9529, -3.4727],
        [-2.7239, -3.5034],
        [ 2.2023, -2.9085],
        [ 2.9529, -3.4727],
        [-3.2309,  4.0971]])

As you can see, one of the entries in x0__ is repeated. I would naively assume that when using the exact method without any regularization, every single x0 point would be matched to every single x1 point. However, in this case, the point [4.9099, 0.5921] is missing from the sampled plan.
Am I missing something about how this should work?

Hi!
Our ot_sampler.sample_plan literally samples the plan in all cases (with repeats). This was originally done for simplicity (as the same sampler can also be used for regularized plans). However you are correct. In the exact case, you can skip this step. I think this is probably worth implementing this.
--Alex

Hmm, okay I am not sure if I understand what is going on. I will educate myself better on how the sampling plan is derived and try implementing a 1 to 1 plan with no repeated pairs.
Thanks for now! I will close the issue when I understand the problem better and come with a solution.

I guess it’s working wonderfully now.
Using your script, every single point of x0 and x1 is now connected as (the right has fewer connections because some are repeated). See the code and validation plot below:
import os

import matplotlib.pyplot as plt
import torch
import torchsde
from torchdyn.core import NeuralODE
from tqdm import tqdm

from torchcfm.conditional_flow_matching import *
from torchcfm.models import MLP
from torchcfm.utils import sample_8gaussians, sample_moons, torch_wrapper

batch_size = 10
x0 = sample_8gaussians(batch_size)
x1 = sample_moons(batch_size)

# Assume batches x0 and x1 [Batch, Dim]
M = torch.cdist(x0, x1) ** 2
_, col_ind = scipy.optimize.linear_sum_assignment(M)
x0_ = x0[col_ind]
x1_ = x1[col_ind]

# Batch OT exact sampling!
ot_sampler = OTPlanSampler(method="exact")
x0__,x1__  = ot_sampler.sample_plan(x0, x1)

pairs = [
    (x0_, x1_),
    (x0__, x1__)
]

plot_multiple_points_with_connections(pairs, titles=['Alexander Script', 'Exact OT'])

And the plot looks like:

Would you like this merged, or any other performance validation? I’d be happy to help with anything.
Thanks for the help!

This can also be controlled in the sample_map function by setting replace=False. See here https://github.com/atong01/conditional-flow-matching/blob/main/torchcfm/optimal_transport.py#L99.
As it is solved, I am closing the issue.


Initialize $joinColumnsArray on each join

Having this uninitialized was causing join columns to pile up in $joinColumnsArray If you have columns joined from different tables with different names, and the second joined table doesn't have a column configured to be joined from the first join, an exception is thrown 'No such column'.

Could you provide me with the .json file and respective table definition?

Sure, but I'll have to whip up a sample case. Stay tuned.

Here's some demonstration files for your app/Misc/ - Admin.sqlite , and Misc/Admin/superhero.json, alignment.json, and superpower.json.
Each hero record joins to a superpower record, and an alignment record. each of those tables have different column names internally however.
When I attempt to load the hero list without the fix, here's the problem:
array(1) {
["first (successful) join $query"]=>
string(42) "SELECT id,superpower FROM superpower"
}
array(1) {
["second (unsuccessful) join $query"]=>
string(58) "SELECT id,superpower,id,alignment FROM alignment"
}
array(1) {
["failure exception message"]=>
string(60) "SQLSTATE[HY000]: General error: 1 no such column: superpower"
}
The first query pulls all the superpowers so that it can populate the superpower selector, but it doesn't clear the $joinColumnsArray of columns it selects. So by the time it gets around to pulling the records of the alignment table to populate the alignment selector, the superpower columns are still there. duplicating the id column is harmless, though redundant, but the superpower column is, of course, missing in the allignment table.
Misc.bug.zip

Good job, thank you!


Fix logic for optional dynamodb table

Fixed some template logic and locals that didn't work out of the box with the optional DynamoDB table creation.

Hey @nitrocode, I was thinking to fix those Ensure DynamoDB tables are encrypted in another pull request. Besides that, is there anything else I should do to get this one merged?

/test all


[Feature Request] Allow specifying a title for the SVG

For accessibility, it's suggested to add a <Title> element as the first child of an SVG.  It would be great if there was a prop to allow specifying this text.

https://github.com/rosskhanas/react-qr-code/commit/f863963064d6f75068cb68ae7a5e4e3e6e0d61f5


python312Packages.gcal-sync: 6.1.6 -> 6.2.0

Diff: https://github.com/allenporter/gcal_sync/compare/refs/tags/6.1.6...6.2.0
Changelog: https://github.com/allenporter/gcal_sync/releases/tag/6.2.0

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

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

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 350425

x86_64-linux

:white_check_mark: 5 packages built:

home-assistant-component-tests.google
python311Packages.gcal-sync
python311Packages.gcal-sync.dist
python312Packages.gcal-sync
python312Packages.gcal-sync.dist


Saves not loading

I get the following error when trying to load my saves with the latest releases:

Any ideas?

Current version doesn't support 1.6 types. Please wait for the update of the tool. Follow #41 for info.


(cli): "-v" options cannot be used as an alias for verbose

"-v" is actually used by sade as an alias for "version"
How to reproduce
skott index.android.js index.js -v

Actual
it will returns something like
skott, 0.28.2

Expected
It should print the logs like when specifying "--verbose"

Hello @ACHP, nice catch!
I'm not really using aliases myself so never noticed that actually. I think that sade default behavior should not be overridden, so we could find a new alias composed of 2 letters. Do you have any suggestions? You can even land a small PR directly if you want :)

I tried monkey patching my current skott install and tried with -vv instead but it still not working.
I think that sade expect alias to be 1 char long.
To test my hypothesis, I tried using -ee (since you already use -e for the fileExtensions options).
And when I log the options I see:
{
 e: [ '', '' ],
/*...*/
 ee: false,
}

And the error message is Error: options.fileExtensions.split is not a function, which seems to validate my hypothesis.
I didn't manage to find a sade documentation about this. (But honestly I didn't search for long)
I also tried using -ts instead of --tsconfig as documented, but it didn't worked :/
skott index.android.js --tsconfig "./yolo.json"
# tsconfig: 'yolo.json', ts: 'yolo.json' ✅ Works as expected

skott index.android.js --tsconfig="./yolo.json"
# tsconfig: 'yolo.json', ts: 'yolo.json' ✅ Works as expected

skott index.android.js -ts "./yolo.json"
# tsconfig: 'tsconfig.json', ts: 'tsconfig.json', t: true, s: true ❌ does not work as expected

skott index.android.js --ts "./yolo.json"
# tsconfig: 'yolo.json', ts: 'yolo.json' 🟧 Works but shouldn't IMO (only `--tsconfig` or `-ts` should work `--ts` shouldn't)

skott index.android.js --ts="./yolo.json"
# tsconfig: 'yolo.json', ts: 'yolo.json' 🟧 Works but shouldn't IMO (only `--tsconfig` or `-ts` should work `--ts` shouldn't)

Conclusion
I don't know sade very well and to be honest I didn't spent much time on the doc, but I think it behave a bit weird ...
I would recommand

trying commander to compare the behaviors, and see it it works "better" (more work but no change from the user perspective)
Or replace all alias that contains 2 char to use one char, probably uppercase to avoid conflict (easier, but requires to update the documentation) (and to answer your question, I would use -V for verbose, of -vv if it worked)

Thanks for this complete investigation!
Yes you're right, it seems that sade doesn't ignore multi char alias but requires a double dash -- instead of one dash like the docs show it (when running skott --help) so it's a bit inconsistent and misleading imho.
About one of your suggestions to avoid conflicts I just tested and it seems that the parser makes a difference between uppercased and lowercased flags, so skott -v or skott -V don't map to the same option but I'm not really a fan of that solution to avoid conflicts to be honest, I feel like uppercase/lowercase is not explicit enough to express different options, skott -v printing the version and skott -V enabling verbose/debug mode is misleading as hell.
Commander seems to work as expected towards the already established aliases for skott, that is multi char alias with one dash:
import { Command } from 'commander';
const program = new Command();

program
  .option('-vb, --verbose')

program.parse();

console.log(program.opts());

With the following command: node index.js -vb, commander actually prints Options:  { verbose: true }.
So we could actually switch to commander, it should be easy as the whole CLI initialization is done in this file https://github.com/antoine-coulon/skott/blob/main/packages/skott/bin/cli.ts.


Coin flips between

@lindsaycarr I'm not going to get to a complete PR today, so making this PR into a new branch (coin-flip). It needs work. Feel free to try playing with and debugging it, or I'll get to it once I'm in the office.
I started out attempting to just merge the circle and pie slice svg elements in some way, started thinking about all the various transitions that would be available/appealing, and then switched directions when I saw Jordan's suggestion of using coin flip transitions, which ended up affecting a lot of decisions about how I did the rewrite.
One thing I'm trying is thinking of pies as groups containing both slices (as before) and a tin (the circles). This allows us to do all transforms and scaling at the group level, for both slices and tins, which should be really useful for coin flip transitions.
So far the coin flips are looking quite choppy, and there are also still errors popping up because it was too big a rewrite for me to get correct right away. I think it's doable, but there's more debugging to do for sure.
I'm going to get in trouble if I keep coding tonight, so there you have it. Happy to discuss/explain more tomorrow.

Next steps:

if switching between pie slices and tins, hide the other polygons
there's some attribute transform error coming up

The tin/pie analogy is also useful for when we apply a stroke for #96 . Using a stroke on the circles is simple, but the pie is hard because you don't actually want the radials to have strokes, just the crusts. But that's hard because there isn't a clear way to do that with a path that is easy. If you use tins and they are under the pies, in pie-mode your tin can have a greyish stroke under the semitransparent pies, (but no fill) and it will look like the crusts are 👍

Cross-referencing to Jordan's description of the coin flips approach: https://github.com/USGS-VIZLAB/water-use-15/issues/72#issuecomment-377092558


I can't download VODs

I'm on Windows 10 64 bit on two computers. I'm using Twitch Leecher 2.0.5. I keep trying to download VODs from https://www.twitch.tv/fionn. it keeps giving me errors about being unable to download a cloudfront file about 10-20% in. I've used 360p, 160p, and audio only for both pcs, giving me the same issue every time. Here is the log.
Download task has been started!
TWITCH LEECHER INFO
Version: 2.0.5
VOD INFO
VOD ID:<PHONE_NUMBER>
Selected Quality: 160p (284x160)
Download Url: https://www.twitch.tv/videos/1261352168
Crop Start: No
Crop End: No
OUTPUT INFO
Disable Conversion: No
Output File: C:\Users\PC\Downloads\20220112_Fionn_1261352168.mp4
FFMPEG Path: C:\Program Files\Twitch Leecher\ffmpeg.exe
Temporary Download Folder: C:\Users\PC\AppData\Local\Temp\9615defe7bf2446e8c6aa5350ee7185a
Retrieving VOD access information... done!
ACCESS INFO
Token: %7B%22authorization%22%3A%7B%22forbidden%22%3Afalse%2C%22reason%22%3A%22%22%7D%2C%22chansub%22%3A%7B%22restricted_bitrates%22%3A%5B%5D%7D%2C%22device_id%22%3Anull%2C%22expires%22%3A1647228014%2C%22https_required%22%3Atrue%2C%22privileged%22%3Afalse%2C%22user_id%22%3Anull%2C%22version%22%3A2%2C%22vod_id%22%3A1261352168%7D
Signature: 0553ec03d0a3c2523535c6f246398f42a61b1da8
Sub-Only: No
Privileged: No
Creating temporary download directory 'C:\Users\PC\AppData\Local\Temp\9615defe7bf2446e8c6aa5350ee7185a'... done!
Retrieving playlist information for all VOD qualities... done!
PLAYLIST INFO
Playlist for quality '720p60' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/chunked/index-dvr.m3u8'
Playlist for quality '720p60' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/720p60/index-dvr.m3u8'
Playlist for quality '720p' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/720p30/index-dvr.m3u8'
Playlist for quality '480p' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/480p30/index-dvr.m3u8'
Playlist for quality 'Audio Only' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/audio_only/index-dvr.m3u8'
Playlist for quality '360p' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/360p30/index-dvr.m3u8'
Playlist for quality '160p' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/index-dvr.m3u8'
Playlist url for selected quality '160p (284x160)' is 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/index-dvr.m3u8'
Retrieving playlist... done!
Parsing playlist... done!
Number of video chunks: 1477
Starting parallel video chunk download
Number of video chunks to download: 1477
Maximum connection count: 10
Parallel video chunk download is running...
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1312.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1312.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/656.ts' failed! Trying again in 20s
System.Net.WebException: The operation has timed out
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/656.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1312.ts' failed! Trying again in 20s
System.Net.WebException: The operation has timed out
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/656.ts' failed! Trying again in 20s
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Downloading file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/0.ts' failed! Trying again in 20s
System.Net.WebException: The operation has timed out.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadData(Uri address)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
Starting temporary download folder cleanup!
Deleting directory 'C:\Users\PC\AppData\Local\Temp\9615defe7bf2446e8c6aa5350ee7185a'... done!
Download task ended with an error!
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.ApplicationException: Could not download file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' after 3 retries!
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
at System.Threading.Tasks.Parallel.<>c__DisplayClass17_01.<ForWorker>b__1()    at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)    at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)    at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)    at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Func4 bodyWithLocal, Func1 localInit, Action1 localFinally)
at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable1 source, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally)
at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable1 source, ParallelOptions parallelOptions, Action2 body)
at TwitchLeecher.Services.Services.DownloadService.DownloadParts(Action1 log, Action1 setStatus, Action1 setProgress, TwitchPlaylist vodPlaylist, CancellationToken cancellationToken)    at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass19_0.<StartQueuedDownloadIfExists>b__2()    at System.Threading.Tasks.Task.Execute()    --- End of inner exception stack trace --- ---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> System.ApplicationException: Could not download file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' after 3 retries!    at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.<DownloadParts>b__0(TwitchPlaylistPart part, ParallelLoopState loopState)    at System.Threading.Tasks.Parallel.<>c__DisplayClass17_01.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Func4 bodyWithLocal, Func1 localInit, Action1 localFinally)    at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable1 source, ParallelOptions parallelOptions, Action1 body, Action2 bodyWithState, Action3 bodyWithStateAndIndex, Func4 bodyWithStateAndLocal, Func5 bodyWithEverything, Func1 localInit, Action1 localFinally)    at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable1 source, ParallelOptions parallelOptions, Action2 body)    at TwitchLeecher.Services.Services.DownloadService.DownloadParts(Action1 log, Action1 setStatus, Action1 setProgress, TwitchPlaylist vodPlaylist, CancellationToken cancellationToken)
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass19_0.b__2()
at System.Threading.Tasks.Task.Execute()
---> (Inner Exception #0) System.ApplicationException: Could not download file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1148.ts' after 3 retries!
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )<---
---> (Inner Exception #1) System.ApplicationException: Could not download file 'https://d1ymi26ma8va5x.cloudfront.net/208bacb9d3b53fd4d8e7_fionn_44361418012_1642010333/160p30/1312.ts' after 3 retries!
at TwitchLeecher.Services.Services.DownloadService.<>c__DisplayClass26_0.b__0(TwitchPlaylistPart part, ParallelLoopState loopState)
at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )<---
<---

That is Twitch not providing the video files in the playlist. Not a TL issue.


.xaml file in BluetoothLE project Scenario1_discovery does not identify page,height,width,grid etc.

Hi
.xaml file in BluetoothLE project Scenario1_discovery does not identify page,height,width,grid etc.

Not sure what you're getting at. It doesn't need to define a height or width because its height and width are obtained from the containing frame. There is a grid element on the page. The sample seems to run fine. Can you be more specific what the problem is and how it impairs the sample?


Add Tencent QQ

Microsoft Reviewers: Open in CodeFlow

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: hifocus sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

The checks just keep being in the state of 'in progress' forever :(

The checks just keep being in the state of 'in progress' forever :(

Sorry for the disruption, but can you please have a look at my situation to see if  anywhere in either my configuration or the Azure Pipeline goes wrong? Thanks @KevinLaMS

/AzurePipelines run

@hifocus let's see if we can get that CI Bot to cooperate this time.

@hifocus let's see if we can get that CI Bot to cooperate this time.

It seems that it got stuck again... Shouldn't there be some improvements on the auto flow of CI?

started 9h 52m 58s ago

One reason that I didn't add the SilentWithProgress or similar variable is that a lot of software that I am adding is from China, they often come up with a bunch of other irrelevant software for promotion purpose. There being said, the user experience won't be good if auto installation is allowed.
I also have a concern despite some software (like the one in this PR, QQ) provides a 'always newest' download link, which means whenever a new version of the software is released, their staff is going to update the installer file on their server but keep the same name. However this could lead to a faulty sha256 of the installer file, also the user cannot get the latest update if on GitHub another PR towards the latest version is not made.
I know that the sha256 is for integrity to avoid damaged package to be installed, but can't we prompt a warning on the commandline saying that 'this software uses a always-latest-link, so the integrity of the download will not be verify, use it at your own risk'?
But eventually, thanks for the help.

Thanks for the feedback.   I agree we do not want to encourage a bunch of irrelevant software getting added.
We are aware of the issue with the newest URLs and are investigating the possibility of different solution in the future.

/AzurePipelines run

@hifocus we're working with an internal team to see if we can determine why our automation is failing to provide a more meaningful status. I'm hoping we get a response in the next day or two so we can make progress getting this PR merged.

Sure, many thanks for the hard work!

/AzurePipelines run


Serving Frameworks: text-embeddings

thanks for adding this list. I propose to add some of the following links under large-model-serving. In particular, some of the repos are not for decoder models, but more for sentence transformers or clip.
Embeddings from OpenAI clip.
Jina
https://github.com/jina-ai/clip-as-service (Apache)
Text-embeddings:
My own project: infinity ( just add it if you like it)
https://github.com/michaelfeil/infinity (MIT)
https://github.com/huggingface/text-embeddings-inference (no opensource Licence)
LLM Inference as a service:
Huggingface/ TGI
https://github.com/huggingface/text-generation-inference (no opensource licence after 1.0)
Nvidia-TensorRTLLM (Apache2.0)

Hello @michaelfeil! Thanks for your suggestion, and please feel free to create a pull request to add it.


Blueair 211i login

Describe Your Problem:
I'm unable to see device in Homekit. I can't recognize issue from logs below.
Logs:
[19/07/2024, 08:38:13] [homebridge-blueair-purifier] Gigya session received
[19/07/2024, 08:38:13] [homebridge-blueair-purifier] Gigya JWT received
[19/07/2024, 08:38:13] [homebridge-blueair-purifier] Getting AWS access token...
[19/07/2024, 08:38:14] [homebridge-blueair-purifier] AWS access token received
[19/07/2024, 08:38:14] [homebridge-blueair-purifier] Logged in
[19/07/2024, 08:38:15] [homebridge-blueair-purifier] Error getting initial device states: Error: API call failed after 3 retries with error: Error: API call error with status 502: Bad Gateway, {"message":"Internal server error"}
    at BlueAirAwsApi.apiCall (/var/lib/homebridge/node_modules/homebridge-blueair-purifier/src/api/BlueAirAwsApi.ts:252:17)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at BlueAirAwsApi.getDeviceStatus (/var/lib/homebridge/node_modules/homebridge-blueair-purifier/src/api/BlueAirAwsApi.ts:148:18)
    at BlueAirPlatform.getInitialDeviceStates (/var/lib/homebridge/node_modules/homebridge-blueair-purifier/src/platform.ts:84:23)
    at HomebridgeAPI.<anonymous> (/var/lib/homebridge/node_modules/homebridge-blueair-purifier/src/platform.ts:45:7)
[19/07/2024, 08:38:15] [homebridge-blueair-purifier] Updating devices states...
[19/07/2024, 08:38:16] [homebridge-blueair-purifier] Devices states updated!
[19/07/2024, 08:38:21] [homebridge-blueair-purifier] Updating devices states...
[19/07/2024, 08:38:21] [homebridge-blueair-purifier] Devices states

Plugin Config:

}

Screenshots:

Environment:

Plugin Version:
Homebridge Version:
Node.js Version:
NPM Version:
Operating System:

How did you add the device to Homebridge? Also, is that device still connected to your Blueair account?

HelloI have a raspi homebridge server with 6 plugins. I had been using an unverified Blueair plugin but decided to try this one. The device is visible via WiFi in my account and on the app. I did not understand the errors in the log. Sent from my iPhoneOn Jul 20, 2024, at 12:50 PM, Kovalovszky Patrik @.***> wrote:
How did you add the device to Homebridge? Also, is that device still connected to your Blueair account?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

My question was how did you add the device in the plugin? My guess is the plugin wants to use a different account from the account the air purifier is connected to. Can you please double check this?

I added the device found in my account using the plugin config. My id and password were accepted, and my device was added. I am just unable to see device when I run platform as a child bridge in Homekit.

From: Kovalovszky Patrik @.>
Sent: Sunday, July 21, 2024 12:09 PM
To: kovapatrik/homebridge-blueair-purifier @.>
Cc: rdav65 @.>; Author @.>
Subject: Re: [kovapatrik/homebridge-blueair-purifier] Blueair 211i login (Issue #9)
My question was how did you add the device in the plugin? My guess is the plugin wants to use a different account from the account the air purifier is connected to. Can you please double check this?
—
Reply to this email directly, view it on GitHubhttps://github.com/kovapatrik/homebridge-blueair-purifier/issues/9#issuecomment-2241715527, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A5BSEALYNGKTPK7PTTL2GJLZNPTOJAVCNFSM6AAAAABLEULGPOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBRG4YTKNJSG4.
You are receiving this because you authored the thread.Message ID: @.***>

Did you add the child bridge to the Home app?

All is working now. I ended up uninstalling plugin and Blueair child bridges in HomeKit and starting over from scratch. Everything then worked fine. Should’ve done that in the beginning. ThanksSent from my iPhoneOn Jul 29, 2024, at 4:51 PM, Kovalovszky Patrik @.***> wrote:
Did you add the child bridge to the Home app?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>


MODEXPS-21 Update

[MODEXPS-21] Update (https://issues.folio.org/browse/MODEXPS-21)
Purpose
Remove gen_random_uuid usage and remove usage of CREATE EXTENSION pgcrypto
Approach

Write SQL for drop the  extension pgcrypto if exists in db.changelog file
Remove the default value from table using dropDefaultValue tag in db.changelog file .

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Closes: #1

Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

This was part of Qwiklabs Coursera Assignment "Pushing Local Commits to Github"


feat(vm-runner): implement output handler for VM runner

What ❔

Why ❔
One of the components for the upcoming VM runner
Checklist

[ ] PR title corresponds to the body of PR (we generate changelog entries from PRs).
[ ] Tests for the changes have been added / updated.
[ ] Documentation comments have been added / updated.
[ ] Code has been formatted via zk fmt and zk lint.
[ ] Spellcheck has been run via zk spellcheck.
[ ] Linkcheck has been run via zk linkcheck.

Still working on the documentation but functionally I think the PR is ready for a review


[wip] Tests for ellipses and whitespace issue #153

No fix yet, just some failing tests...

This seems to break on Octave 3.8.1 (makes the wrong RE) but our DESCRIPTION file says Octave 4.0.0 is minimum.  Maybe I should drop 3.8.1 testing from the travis matrix.

Probably superseded by #156 .


Add discrete and custom marks

Ask your Question
Hi!
I am looking for a solution to get a similar effect as on the screen, maybe someone has already done something like this using this package? Something like that https://material-ui.com/components/slider/#custom-marks (but this is on react)
Screenshot

I got it

Hey sn4f!
Can you share what you got with us.
Thanks!

Hello @sn4f!
Can you check if #218 is the same feature you were after?
Would it be also possible to share your findings here?


Treat devicetree binding deprecation usage as build error when running w/twister

When running twister if we get a deprecation message from edtlib we should treat that as an error.

Done in fbd34dca1e619272a6489de32e7bb4ca9e049fc3


Adaptive Toggle input not showing correctly in teams dark mode Android

I have used  a simple toggle input but it is not showing correctly in Microsoft teams  dark mode )while opening in task module from compose box.

I have used the following code to create adaptive card.

@sudoaccessdenied - what host application are you using here?

@paulcam206  Microsoft teams in dark mode.

sorry -- I totally missed that in your description (I blame lack of coffee) :)
@golddove - can you repro this in the Android visualizer?
also adding Teams folks in case this is a known issue on their side...

Hi @sudoaccessdenied ,
We are unable to reproduce the issue. Could you please have a look on below image and code snippet.

Seems your issue is related to css, could you please check from your end.

@

Hi @sudoaccessdenied ,
We are unable to reproduce the issue. Could you please have a look on below image and code snippet.

Seems your issue is related to css, could you please check from your end.

@RamaMohanaChary I am not using any html/css page .I am using Adaptive card in task module and it is unrelated to css . Also this  issue occurs in task module not in the chat.  As you can see I have attached the screenshot of task module above not the chat. Since you are using teams task module sample to repro this so you are very close to repro this issue. Use the following Repro steps ;-

Clone this repo : teams task module

Add the toggle Input in /Resources/adaptiveCard.json  json file.

Run the bot.

Send hi to the bot it will send two cards.

Click on Adaptive Card button of hero or adaptive card in mobile  with dark mode theme it will trigger task module.

You will see the issue that title of task module is in black color which should be white and label of the toggle input is hidden.

Hi @sudoaccessdenied,
Thank you for sharing proper repro steps!
It helps us a lot to repro the issue, we are able to repro the issue in Android mobile.

So, we took this high priority and raised a bug for this, concerned team will work on this.
At present we don't have any ETA to share with you.

Hi @sudoaccessdenied, you clarify whether using the issue also repros in iOS dark mode or desktop dark mode, to help us isolate the issue.

@Jagadeesh-MSFT, It's working fine in desktop dark mode.  I don't have an ios device so you can test the same on your side.

@Jagadeesh-MSFT, @sudoaccessdenied - this is a Teams bug and is being tracked internally by them. Closing the issue but please feel free to continue communication here while the bug is being resolved by Teams. Thanks!


Map casting the second

Now the missing parts of the last pull requests.

Adding map casting for date
Adding missing tests for time and date
Code refactoring
Add to_i with integer parameter to Utils

Hope it's done now.

Thanks for the quick response :+1:


🐛 [firebase_messaging] (iOS) Display translated with Localizable.strings notifications on the app Locale, not on the phone one.

Bug report
Describe the bug
If we localize messages with Localizable.strings, as suggested in the FCM documentation https://firebase.google.com/docs/cloud-messaging/flutter/receive#ios then we have a logical issue with displaying messages on the app language.
For example:

Phone language is English.
The app language is German.

When the app is opened we can handle the messages, translate the and display them when we need in German.
But, when the app is terminated, FCM uses a phone locale for taking the translation from the Localizable.strings.

Thanks for the report @awaik
I am trying to replicate this use case using the plugin example wherein I set the Localizable.strings as below:

Sending payload as below per documentation:
{
      "data": {
          "title_loc_key": "NOTIFICATION_TITLE",
          "body_loc_key": "NOTIFICATION_MESSAGE"
        },
      notification: {
        title: 'A great title',
        body: 'Great content',
      },

Per your steps to replicate, I need to set the app language to any non-English language which I am not sure how to achieve. If with above setup, I try to send notification, it does not show me the notification in localized language as I set above, so I am not completely sure how to make this case replicable. Probably you can provide a sample app or repo that we can use to verify this properly.

Hi!
Yes, that is the problem this issue about.
If we have an app with two locales (EN, DE) made with Flutter
https://docs.flutter.dev/development/accessibility-and-localization/internationalization
and:

In the app we set up DE as a default.
Phone default locale EN default.

The phone OS doesn't have info about the default app's locale and will display notifications in EN.
For example, if we use SWIFT in the iOS app we can create an extension, and before displaying notifications check the app's locale and display the correct one.
But how to achieve this with FCM & Flutter?

Thanks for the update. I am unsure as how to achieve localized notification, so keeping this issue open for team's attention and insights on expected behavior.

The only way to adapt to the user-selected language is to store the language in your server.
Then, you can send the proper notification, correctly translated from your server.


Nil err message after waiting for VG

Do not print the always-nil 'err' value when we timeout while waiting for a VG to appear.

I saw this here:
: dean-mbp; kubectl get clientmount -n rabbit-compute-3 default-yellow-0-computes -o yaml | yq -M .status
allReady: false
error:
  debugMessage: 'mount/unmount failed: unable to activate block device: timeout waiting for VG %!w(<nil>)'
  severity: Major
  type: Internal
mounts:
  - ready: false
    state: mounted


Update config

This PR pull the latest config to check for any breaking changes.

@armiol @alexander-yevsyukov Please take a look.


Fix for Object Cache 'Get' method incorrectly setting cache value

This PR is for issue #438 wherein wp_cache_get shows $found to be true even it is directly preceded by awp_cache_delete.
The issue lies in the get function in ObjectCache_WpObjectCache_Regular.php , which always sets a value for the cache object's key, even if a hit was not found.
The proposed fix is to only set $this->cache[$key] = $value; if $value !== false

Thanks @charlesLF!

H


Routes missing?

Just a question, are the routes to change password or admin/pages created?
Or the menu is just a sample?
I just want to know if I did something wrong, or it's normal.

Just a sample :)


build: update required files for release-v3.3

updated the required templates and upgrade document for release 3.3
Signed-off-by: Madhu Rajanna<EMAIL_ADDRESS>

@Madhu-1 below change in build.env can also be made, Isnt it ?
-CSI_IMAGE_VERSION=canary
+CSI_IMAGE_VERSION=v3.3.0

@Madhu-1 below change in build.env can also be made, Isnt it ?
-CSI_IMAGE_VERSION=canary
+CSI_IMAGE_VERSION=v3.3.0

its already done, or am i missing?

@Madhu-1 below change in build.env can also be made, Isnt it ?
-CSI_IMAGE_VERSION=canary
+CSI_IMAGE_VERSION=v3.3.0

its already done, or am i missing?

I missed it while reviewing :)

Merging this manually


Add a note that the certificate ARN should be in the same region of the services

@yegle is this ready to merge?


Make the setup easier adding an agent/script to do the setup of the nodes

Here the idea is to simplify the setup of the dashboards by making available a script that could run on all the nodes to do the necessary setup (install exporters, configure them properly).
Users would be left with only Grafana / Prometeus to configure (and make sure they open the ports properly)

I'll adapt existing script for it...

Hello @alexott. Is it something you are working on or planning to work on any time soon (it's just for us to track this work properly, no pressure :))

I'm still planning to work on it (maybe begin of next week).

@alexott we're now maintaining MCAC instead. I'm closing this here, happy to see this issue moved over there if you're still willing to do that :).

Yep, I'll move it to MCAC...


I2C SDA and SDC pins are hardcoded to use VDDIO as vssel

Hi there,
I am working with the MAX32666 on a FTHR2 board. I configured I2C2 as a master like this (simplified for clarity):
MXC_I2C_Init(MXC_I2C2_BUS0, I2C_CFG_MASTER_MODE, 0);
MXC_I2C_SetFrequency(MXC_I2C2_BUS0, MXC_I2C_STD_MODE);

... and tied the 10k pullups to 3.3v using jumper J4 on the FTHR2.
With an oscilloscope I found that the SDA and SCL lines had a maximum of around 2.2v, not the expected 3.3v.
Running through the debugger I found that during the MXC_I2C_Init() call in i2c_me14.c a mxc_gpio_cfg_t  is used to configure the SDA and SCL pins. This is hardcoded to use VDDIO as the .vssel field.
The init call is here: https://github.com/analogdevicesinc/msdk/blob/1430a0c9fcddbd691bd7a26f8ea8ade7e3b678ba/Libraries/PeriphDrivers/Source/I2C/i2c_me14.c#L61
And the definition of the mxc_gpio_cfg_t  struct is here: https://github.com/analogdevicesinc/msdk/blob/1430a0c9fcddbd691bd7a26f8ea8ade7e3b678ba/Libraries/PeriphDrivers/Source/SYS/pins_me14.c#L76-L77
In my main function I added this code to re-initialize the SDA and SCL pins to use VDDIOH after the MXC_I2C_Init() call, and this does now bring the high level of both lines to 3.3v:
	const mxc_gpio_cfg_t i2c2_sda_pin = {
		.port = MXC_GPIO1,
		.mask = MXC_GPIO_PIN_15,
		.pad = MXC_GPIO_PAD_NONE,
		.func = MXC_GPIO_FUNC_ALT1,
		.vssel = MXC_GPIO_VSSEL_VDDIOH,
		.drvstr = MXC_GPIO_DRVSTR_0,
	};
	MXC_GPIO_Config(&i2c2_sda_pin);

	const mxc_gpio_cfg_t i2c2_scl_pin = {
		.port = MXC_GPIO1,
		.mask = MXC_GPIO_PIN_14,
		.pad = MXC_GPIO_PAD_NONE,
		.func = MXC_GPIO_FUNC_ALT1,
		.vssel = MXC_GPIO_VSSEL_VDDIOH,
		.drvstr = MXC_GPIO_DRVSTR_0,
	};
	MXC_GPIO_Config(&i2c2_scl_pin);

Question: Is this the intended way to use an I2C bus with 3.3v pullups? Is there some more ergonomic config I could do? It seems easy to miss this and then wonder why your pullups aren't pulling all the way to 3.3v. I'm definitely operating under the assumption that I might have missed something here, but if not there might be an opportunity for a slightly cleaner I2C config.
Thanks!

Hi @JordanAceto, you're right this is not very well-exposed to the user.
Your current solution is a good workaround.  If you wanted something a bit you more compact you could copy the existing struct and just overwrite the VSSEL field:
#include "mxc_pins.h"
// ...
mxc_gpio_cfg_t i2c2_pins_new = gpio_cfg_i2c2;
i2c2_pins_new.vssel = MXC_GPIO_VSSEL_VDDIOH;
MXC_GPIO_Config(&i2c2_pins_new);

In general I think we can offer a compile-time solution for switching the default logic level for mxc_pins.  Every single definition currently uses VDDIO.
Something like:
// pins_me14.c

#ifndef MXC_PINS_VSSEL
#define MXC_PINS_VSSEL MXC_GPIO_VSSEL_VDDIO
#endif
// ...
const mxc_gpio_cfg_t gpio_cfg_i2c2 = { MXC_GPIO1, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_ALT1,
                                       MXC_GPIO_PAD_NONE, MXC_PINS_VSSEL, MXC_GPIO_DRVSTR_0 };
//                                                                 ^

Overwriting it would look like:
# project.mk
PROJ_CFLAGS += -DMXC_PINS_VSSEL=MXC_GPIO_VSSEL_VDDIOH

Not the cleanest string to write, but at least gives you the option.  What do you think?

Jake, that all makes sense, thanks. I think in our case your more compact config will be fine. As I work more with the MSDK the paradigms make more sense. Now that I understand that most everything defaults to VDDIO I won't be surprised next time.
For what we're doing we have a couple different voltage domains and we have some pins on VDDIO and some on VDDIOH, so a compile-time setting that impacts all the pins doesn't help too much. In the end we'll actually have one I2C pulled to 1.8v and another one puled to 3.3v. But this idea might be useful for other people if you think it's worthwhile.
So, from my perspective you could close this with no action if you want, or if you think it's worth the time you could add the compile time solution you presented. Either way thanks for looking at it and thanks for the suggestion for the more compact config!

Thanks @JordanAceto, will close out for now


Introspection: improve schema order

Right now the schema is printed in alphabetical order, but many folks design their schemas with an order that makes sense to them.
My Order:
create table if not exists users (
  id serial primary key not null,
  email text not null unique
);

Prisma's Order:
model users {
  email   String  @unique
  id      Int     @id
}

I know in Postgres, there's a column we can introspect (attnum in pg_attribute) that will give us the right order.

This was implemented in 2.30. Introspection now follows the order determined by the db.


missing yum_repository attributes from documentation

Hey.  mode and options attributes appear to be missing from the yum_repository documentation.  would you accept a pull request to fix it?

I sure would.

Closing this for now... just send a PR and I'll merge review and merge it


Update Gradle Script for building JDBC Driver

Gradle Script updated with full support of building driver (jre8 and jre9 version)

Codecov Report

:exclamation: No coverage uploaded for pull request base (dev@b60068c). Click here to learn what that means.
The diff coverage is n/a.

@@          Coverage Diff           @@
##             dev     #689   +/-   ##
======================================
  Coverage       ?   48.11%
  Complexity     ?     2585
======================================
  Files          ?      113
  Lines          ?    26572
  Branches       ?     4450
======================================
  Hits           ?    12786
  Misses         ?    11644
  Partials       ?     2142

Flag
Coverage Δ
Complexity Δ

#JDBC42
47.99% <ø> (?)
2576 <ø> (?)

#JDBC43
47.95% <ø> (?)
2580 <ø> (?)

Continue to review full report at Codecov.

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


20160922 030400 move to well test

This PR tests the motor handler's move_to_well and move_into_well methods.

LGTM


Updated readme for sample apps

Fixes :

Updated readme in sample apps
Updated meeting link in sample apps
Added sample apps links in readme

Closing in favor of #850


Sync clusterserviceversion filename and extension

All operators in Kubernetes and Openshift Community Operators repositories uses .clusterserviceversion.yaml for filename.
I would like to propose to sync ClusterServiceVersion filename generated by quarkus-operator-sdk with operators repository.

Thank you!