text:
Don't delete kids from ComputedKeyInfos on revoke

Before this PR, if you do the following:

sign up a new user
provision a device1
deprovision the device1
login again and create a device2

Then the deviceHistoryRPC will fail with:
2016-05-06T11:35:12.255571 ▶ [WARN keybase rpc_exim.go:167] b28 not exportable error: device 6876a9ddda60b262f031d101ae094318 provisioned by kid 012039c68fe20ef741cf443ebde3ca8b9b3f229908e399f220293376b66c6ee8c8dc0a, but couldn't find matching device ID in ComputedKeyInfos (*errors.errorString)

It's true, device1's kid is no longer in ComputedKeyInfos.  It was removed by this code, added in de8686bde07:
	// Clear out the old Key that this device used to refer to.
	// We might wind up just clobbering it with the same thing, but
	// that's fine for now.
	if prevKid.IsValid() {
		ckf.G().Log.Debug("| Clear out old key")
		delete(ckf.cki.KIDToDeviceID, prevKid)
	}

	if kid.IsValid() {
		ckf.cki.KIDToDeviceID[kid] = did
	}

.. because "kid" is null in this case.  You can see that it's null in the sigchain by looking here:
https://stage0.keybase.io/cjbrev2/chain (#5)
@oconnor663 proposes this change to make both conditions (prevKid && kid) necessary to perform the delete.
r? @patrickxb || @maxtaco

I think the intended semantics of the device block in sigchain links, is that any field that's omitted from later links that use the same device ID, just means "keep the previous value". So leaving the kid out of the device section in a revoke link doesn't mean "this device, in addition to being revoked, is no longer associated with any kid" but rather "the kid this device is associated with hasn't changed".
@maxtaco when you get a chance to look at this, let me know if there's some other reason we wrote this the way we did, that I might've forgotten?

@oconnor663 your comment is correct

Alrighty then let's :ship:

authors: cjb maxtaco oconnor663


text:
The commapocalypse

The first two commits implement comma-dangle,
https://github.com/keybase/client/commit/1cdd7a6bf3b10036f778bc86baf4f841ed7fcd4d,
https://github.com/keybase/client/commit/a6addab71ac3308c74d7359cbfce5317f9ad636b,
I added shared/constants/types/keybase-v1.js to the .eslintignore because the code generator doesn't output trailing commas. I started working on updating the scripts to emit trailing commas, but then I realized we're already ignoring lint errors on the /protocol directory. If it's desirable to lint keybase-v1.js, I think the changes will be pretty trivial.
The last commit is a run of eslint --fix . on the current codebase. Once this is reviewed, let's find a time to merge it in this sprint when it'll create the fewest merge conflicts,
:eyeglasses: @keybase/react-hackers,
,

The solution to this problem is CoffeeScript, in which commas are optional-ish

:thumbsup:, but I thought we were gonna wait for some of (the largest of) our 10 open PRs to be merged in first, to avoid conflicts and missed changes

reiterating my :thumbsup:, :ship: :shipit:

@keybase/react-hackers
The commapocalypse is nigh! Here is how to update any outstanding PRs you have to automatically resolve merge conflicts:
Updating existing branches
git fetch origin
git checkout yourbranch

Update your branch to the last commit before the comma style update. Resolve any normal merge conflicts.
git rebase origin/pre-trailing-comma

Resolve any outstanding eslint issues before proceeding.
./desktop/node_modules/.bin/eslint --cache .

Let's check out a new branch on which to stage this work.
git branch yourbranch-pre-commas  # used for sanity check below
git checkout -b yourbranch-commas

Rebase your branch after the commas update, throwing out conflicts caused by the reformatting, and running eslint --fix (you may need to change the path for your specific setup) to amend each commit.
git rebase -i origin/post-trailing-comma -X theirs -x "./desktop/node_modules/.bin/eslint --cache --fix . && git add -u && git commit --amend -C HEAD"

After this churns for a minute or two, your branch should now contain code that fits the style guide and cleanly merges against master. Your commits have been rebased on top of the comma style update, but you may want to rebase on to master again to pull in any new changes.
Sanity check
It's a good idea to eyeball the resulting commits, but there's a simple way to check that this automatic process hasn't changed anything besides comma styling. If the result of running eslint --fix on your branch before the rebase is the same as after the rebase, we can be assured that the rebase conflict resolution didn't introduce any other changes.
git checkout yourbranch-pre-commas
./desktop/node_modules/.bin/eslint --cache --fix .
git diff yourbranch-commas

If there's no diff, you should be good to go! :ok_hand: Continue developing on the "yourbranch-commas" branch and force push it on top of your existing PR branch.

:mag_right: The commits 97dbe3edccac...83d61c5cef04 introduced some visual changes:

Changed: Profile-Changed (before) (after)

:mag_right: The commits 0026806daa99...739712b4a53e introduced some visual changes:

Changed: Profile-Changed (before) (after)

Changed: Device_Name-Waiting (before) (after)

source: gharchive/pull-request

authors: chromakode cjb keybase-ci-visdiff maxtaco

repo: keybase/client

license_type: permissive

license_source: github-api


text:
disk_block_cache: Start by default for Keybase users.

W00t it works!

lgtm

authors: akalin-keybase jzila

repo: keybase/kbfs

license_source: bigquery


text:
Adding coveralls

Just did this to another repo, thought it would be nice to include here.
@oconnor663

Changes Unknown when pulling 0d572a321c49c38110de4714eaa2853bd08ca5bb on coveralls into ** on master**.

👍 👍

authors: coveralls gabriel maxtaco

repo: keybase/saltpack


text:
decrease bundle size

HI @keyurshah
I was playing a bit with rollup and I found a better configuration for IE11.
The bundle size decreased to 7.37 KB and it's still working correctly.

Thanks! I’m away from the computer for a couple days but will merge when i get back

No worries, I've just tried again today and it seems that it triggers an error now, ignore this PR. :)

Hi @keyurshah
If you want to include the polyfills in the bundle as suggested by Caleb, you can have a look at
https://github.com/SimoTod/alpine/blob/feature/ie11-bundle/rollup.legacy.config.js
and
https://github.com/SimoTod/alpine/blob/feature/ie11-bundle/src/polyfills.js
(you need to requires all those packages).
The rest of the polyfills are already added by useBuiltIns usage. For some reason, without requiring coreJs, it did not work for me (it was saying that it was unable to lovate some files, do you have it installed as a global dependency?).
You probably want to move concurrently in the dependency-dev section, it looks a bit odd that it's the only dependency by its own.
Looks good, it will get merged soon, I think.

authors: SimoTod keyurshah

repo: keyurshah/alpine

license: MIT


text:
Do not inject monitoring, system, logging and other related namespaces

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

I'm not sure I understood your problem correctly, but if you want to ignore some namespaces for odigos functionality. There's ignoredNamespaces field you can use this.

I'd prefer to include to the namespaces I want to be injected instead of excluding some of them. Also, my list is dynamic, I'd like to specify a namespace selector (matchLabels or matchExpressions, I guess the best would be to allow both options) instead of a static list.

Writing a summary of all the comments just to make sure we are all on the same page:
We should probably support 4 ways to select the target applications:

Opt out: instrument everything besides well-known ignored namespaces (kube-system,etc)
Opt out + additional ignored namespaces: instrument everything besides the selected namespaces (as @eugercek said this is possible by using the ignoredNamespaces feature).
Opt in (applications scope): select specific applications by name / labels / annotations
Opt in (namespace scope) - select specific namespaces by name / labels / annotations

Does that sound right to everyone? can you think of a use case that we don't cover using these 4 ways to select applications?

source: gharchive/issue

authors: aslafy-z edeNFed eugercek jingslunt

repo: keyval-dev/odigos


text:
Upstream the gen-spec.py script

This PR simplifies slight and upstreams the gen-spec.py script used in the VSC repository.
Now three specs in tests/specs are generated from gen-spec.py, including ds-token-erc20, hkg-erc20, and hobby-erc20.

Unlike the VSC gen-spec.py script, this one generates a single -spec.k file for each method, and puts all the proof claims for that method into that one -spec.k file.
For example, the generated file ./tests/specs/ds-token-erc20/transfer-spec.k contains 7 proof claims, generated with python3 tests/gen-specs/gen-specs.py tests/specs/ds-token-erc20/spec.ini (which is called by make split-tests.

In addition, all of the proofs are made to use the same set of trusted lemma files in tests/specs/trusted, which are not verified on CI but can be used by any of the proofs.

This now uses the gen-specs.py script upstreamed into the K repository.

repo: kframework/evm-semantics


text:
[KIP] - kx improvements

Right now kx is just a bash script with limited functionality compared to the java implementation of krun.
Here are some improvement proposals:

[ ] cmd line arguments should be parsed by a library (help is manually formatted in a string right now)
[ ] more modularity. The script is already over 500 loc and growing and it's hard to keep track of things.
[ ] more error messages and warnings

We had a short discussion about implementing kx in something else

bash

is easy to write
fast
doesn't introduce another language in the K repository

python

requires a rewrite of the current script
should be fast enough
python is already a requirement when installing K but not sure where it's being used

C/C++

hard to write something like krun (lots of calls to external executables and working with files)
access to the llvm data structures in case we need some information from the definition

I tend to disagree with most of these suggestions. First of all, it's not uncommon for tools to have manually written help texts; take a look at GNU Coreutils for example.
As far as "more modularity", it was deliberately written the way it was, as a flatter sequence of logic than krun, which had such a degree of encapsulation that it actually became problematic. We can break the logic into some bash functions if you want so it's more organized, but the flow of the code should still be roughly what it is now, rather than trying to organize the control flow into any kind of hierarchy of abstraction.
As far as error messages are concerned, you really need to be more specific. "More error messages" sounds great, but it's meaningless if you can't tell me specific examples of error messages you think should exist but don't. In the absence of that information, the action item is completely meaningless and might as well not exist.
Finally, I don't think it's productive to rewrite the script in another language; it would just make the script more complex for very little gain. Bear in mind also that the goal is <100ms overhead, which probably actually does preclude python, which takes 30ms just to boot up. C++ is technically an option, but given that c++ has no portable file system library and no high level process invocation library, it's not really a very good one.

You can only print one error message right now and exit. This might be more relevant to kompile though.
For more error messages I will look into the current krun code and see what else is missing and add them to the list.

authors: dwightguth radumereuta

repo: kframework/k


text:
Tab Filter Upgrade - Include/Exclude/Off, Filter on more things

Update, February 2024
With dnd5e 3.0.0, the filter sets have been moved or replaced by something else.
It is now time to go ahead and implement an alternative.

[ ] Create a utility toolbar filter menu
[ ] In the menu, filters should appear similar to enrichers and links
[ ] When left-clicked, the filter cycles forward through Include/Exclude/Off
[ ] When right-clicked, the filter cycles backward through Exclude/Include/Off
[ ] When a filter is active and the filter menu is closed, the filter control icon on the utility bar should appear in the system red / warning color (or the Tidy version)
[ ] There should be a Clear All button/link at the bottom of the filter menu pane
[ ] To start, migrate the existing filters into the new filter menu
[ ] Support Include/Exclude/Off
[ ] Evaluate the complexity of enhancing the existing filters and adding more filters

[ ] Try to accomplish some of the goals listed in the original notes when it comes to prepare spell counts
[ ] For Spellbook, an ideal filter: Can Cast (or some similar name) - shows you what spells are able to be cast in this moment, whether they are prepared, pact, innate, at will, cantrips (with prepared cantrips turned off), etc.
[ ] Poll the community for other useful filters
[ ] Rip off Draw inspiration from A5E and dnd5e 3.x's new sheet for available filters for each tab type

Original Notes
Upgrade tab filter buttons so that they can represent one of the following 3 states:

Include
Exclude
Off

Currently, the built-in tab filters change the count of spells throughout the sheet; this has proven to be misleading over the years. Instead,

Do not alter the spell count (prepared spells, etc.) when a filter is active; merely filter the view
When viewing prepared spells at the bottom of the Spellbook tab, it should read the correct number of prepared spells every time. This value excludes prepared cantrips.
The prepared filter button should contain the accurate count of prepared spells, excluding prepared cantrips.
When Cantrip Preparation is active, then unprepared cantrips should be filtered out when the Prepared filter button is pressed.

Example of filter button states:

User input:

Left Click: cycle forward
(when focus visible) Spacebar: cycle forward
Right Click: cycle backward
(when focus visible) Shift+Spacebar: cycle backward

Colors:

Off: --t5ek-light-color
Include: suggest a simple emphasized color, not the accent, because the accent can easily be confused as disabled
Exclude: maybe rgba(205, 92, 92, 1), as seen in the screenshot, open to suggestions, but something that denotes warning or exclusion

Persist these settings as part of sheet state #17 in sessionStorage.

Awaiting more changes to the A5E character sheet, as there is a great deal of inspiring work being done there which can help us with Tidy.

2.4.x legacy implementation reference:
base-sheet.mjs:
  /**
   * Track the set of item filters which are applied
   * @type {Object<string, Set>}
   * @protected
   */
  _filters = {
    inventory: new Set(),
    spellbook: new Set(),
    features: new Set(),
    effects: new Set()
  };

  // ...

  /**
   * Initialize Item list filters by activating the set of filters which are currently applied
   * @param {number} i  Index of the filter in the list.
   * @param {HTML} ul   HTML object for the list item surrounding the filter.
   * @private
   */
  _initializeFilterItemList(i, ul) {
    const set = this._filters[ul.dataset.filter];
    const filters = ul.querySelectorAll(".filter-item");
    for ( let li of filters ) {
      if ( set.has(li.dataset.filter) ) li.classList.add("active");
    }
  }

  // ...

  /**
   * Determine whether an Owned Item will be shown based on the current set of filters.
   * @param {object[]} items       Copies of item data to be filtered.
   * @param {Set<string>} filters  Filters applied to the item list.
   * @returns {object[]}           Subset of input items limited by the provided filters.
   * @protected
   */
  _filterItems(items, filters) {
    return items.filter(item => {

      // Action usage
      for ( let f of ["action", "bonus", "reaction"] ) {
        if ( filters.has(f) && (item.system.activation?.type !== f) ) return false;
      }

      // Spell-specific filters
      if ( filters.has("ritual") && (item.system.components.ritual !== true) ) return false;
      if ( filters.has("concentration") && (item.system.components.concentration !== true) ) return false;
      if ( filters.has("prepared") ) {
        if ( (item.system.level === 0) || ["innate", "always"].includes(item.system.preparation.mode) ) return true;
        if ( this.actor.type === "npc" ) return true;
        return item.system.preparation.prepared;
      }

      // Equipment-specific filters
      if ( filters.has("equipped") && (item.system.equipped !== true) ) return false;
      return true;
    });
  }

  // ...

  /**
   * Handle toggling of filters to display a different set of owned items.
   * @param {Event} event     The click event which triggered the toggle.
   * @returns {ActorSheet5e}  This actor sheet with toggled filters.
   * @private
   */
  _onToggleFilter(event) {
    event.preventDefault();
    const li = event.currentTarget;
    const set = this._filters[li.parentElement.dataset.filter];
    const filter = li.dataset.filter;
    if ( set.has(filter) ) set.delete(filter);
    else set.add(filter);
    return this.render();
  }

  activateListeners(html) {
    // Activate Item Filters
    const filterLists = html.find(".filter-list");
    filterLists.each(this._initializeFilterItemList.bind(this));
    filterLists.on("click", ".filter-item", this._onToggleFilter.bind(this));
    // ...
  }

character-sheet.mjs:
_prepareItems(context) {
// Categorize items as inventory, spellbook, features, and classes
const inventory = {};
for ( const type of ["weapon", "equipment", "consumable", "tool", "backpack", "loot"] ) {
  inventory[type] = {label: `${CONFIG.Item.typeLabels[type]}Pl`, items: [], dataset: {type}};
}

// Partition items by category
let {items, spells, feats, races, backgrounds, classes, subclasses} = context.items.reduce((obj, item) => {
  const {quantity, uses, recharge} = item.system;

  // Item details
  const ctx = context.itemContext[item.id] ??= {};
  ctx.isStack = Number.isNumeric(quantity) && (quantity !== 1);
  ctx.attunement = {
    [CONFIG.DND5E.attunementTypes.REQUIRED]: {
      icon: "fa-sun",
      cls: "not-attuned",
      title: "DND5E.AttunementRequired"
    },
    [CONFIG.DND5E.attunementTypes.ATTUNED]: {
      icon: "fa-sun",
      cls: "attuned",
      title: "DND5E.AttunementAttuned"
    }
  }[item.system.attunement];

  // Prepare data needed to display expanded sections
  ctx.isExpanded = this._expanded.has(item.id);

  // Item usage
  ctx.hasUses = item.hasLimitedUses;
  ctx.isOnCooldown = recharge && !!recharge.value && (recharge.charged === false);
  ctx.isDepleted = ctx.isOnCooldown && ctx.hasUses && (uses.value > 0);
  ctx.hasTarget = item.hasAreaTarget || item.hasIndividualTarget;

  // Item toggle state
  this._prepareItemToggleState(item, ctx);

  // Classify items into types
  if ( item.type === "spell" ) obj.spells.push(item);
  else if ( item.type === "feat" ) obj.feats.push(item);
  else if ( item.type === "race" ) obj.races.push(item);
  else if ( item.type === "background" ) obj.backgrounds.push(item);
  else if ( item.type === "class" ) obj.classes.push(item);
  else if ( item.type === "subclass" ) obj.subclasses.push(item);
  else if ( Object.keys(inventory).includes(item.type) ) obj.items.push(item);
  return obj;
}, { items: [], spells: [], feats: [], races: [], backgrounds: [], classes: [], subclasses: [] });

// Apply active item filters
items = this._filterItems(items, this._filters.inventory);
spells = this._filterItems(spells, this._filters.spellbook);
feats = this._filterItems(feats, this._filters.features);

// Organize items
for ( let i of items ) {
  const ctx = context.itemContext[i.id] ??= {};
  ctx.totalWeight = (i.system.quantity * i.system.weight).toNearest(0.1);
  inventory[i.type].items.push(i);
}

// Organize Spellbook and count the number of prepared spells (excluding always, at will, etc...)
const spellbook = this._prepareSpellbook(context, spells);
const nPrepared = spells.filter(spell => {
  const prep = spell.system.preparation;
  return (spell.system.level > 0) && (prep.mode === "prepared") && prep.prepared;
}).length;

// Sort classes and interleave matching subclasses, put unmatched subclasses into features so they don't disappear
classes.sort((a, b) => b.system.levels - a.system.levels);
const maxLevelDelta = CONFIG.DND5E.maxLevel - this.actor.system.details.level;
classes = classes.reduce((arr, cls) => {
  const ctx = context.itemContext[cls.id] ??= {};
  ctx.availableLevels = Array.fromRange(CONFIG.DND5E.maxLevel + 1).slice(1).map(level => {
    const delta = level - cls.system.levels;
    return { level, delta, disabled: delta > maxLevelDelta };
  });
  arr.push(cls);
  const identifier = cls.system.identifier || cls.name.slugify({strict: true});
  const subclass = subclasses.findSplice(s => s.system.classIdentifier === identifier);
  if ( subclass ) arr.push(subclass);
  return arr;
}, []);
for ( const subclass of subclasses ) {
  feats.push(subclass);
  const message = game.i18n.format("DND5E.SubclassMismatchWarn", {
    name: subclass.name, class: subclass.system.classIdentifier
  });
  context.warnings.push({ message, type: "warning" });
}

// Organize Features
const features = {
  race: {
    label: CONFIG.Item.typeLabels.race, items: races,
    hasActions: false, dataset: {type: "race"} },
  background: {
    label: CONFIG.Item.typeLabels.background, items: backgrounds,
    hasActions: false, dataset: {type: "background"} },
  classes: {
    label: `${CONFIG.Item.typeLabels.class}Pl`, items: classes,
    hasActions: false, dataset: {type: "class"}, isClass: true },
  active: {
    label: "DND5E.FeatureActive", items: [],
    hasActions: true, dataset: {type: "feat", "activation.type": "action"} },
  passive: {
    label: "DND5E.FeaturePassive", items: [],
    hasActions: false, dataset: {type: "feat"} }
};
for ( const feat of feats ) {
  if ( feat.system.activation?.type ) features.active.items.push(feat);
  else features.passive.items.push(feat);
}

// Assign and return
context.inventoryFilters = true;
context.inventory = Object.values(inventory);
context.spellbook = spellbook;
context.preparedSpells = nPrepared;
context.features = Object.values(features);

}

**npc-sheet.mjs**:

```js
/** @override */
  _prepareItems(context) {

    // Categorize Items as Features and Spells
    const features = {
      weapons: { label: game.i18n.localize("DND5E.AttackPl"), items: [], hasActions: true,
        dataset: {type: "weapon", "weapon-type": "natural"} },
      actions: { label: game.i18n.localize("DND5E.ActionPl"), items: [], hasActions: true,
        dataset: {type: "feat", "activation.type": "action"} },
      passive: { label: game.i18n.localize("DND5E.Features"), items: [], dataset: {type: "feat"} },
      equipment: { label: game.i18n.localize("DND5E.Inventory"), items: [], dataset: {type: "loot"}}
    };

    // Start by classifying items into groups for rendering
    let [spells, other] = context.items.reduce((arr, item) => {
      const {quantity, uses, recharge, target} = item.system;
      const ctx = context.itemContext[item.id] ??= {};
      ctx.isStack = Number.isNumeric(quantity) && (quantity !== 1);
      ctx.isExpanded = this._expanded.has(item.id);
      ctx.hasUses = uses && (uses.max > 0);
      ctx.isOnCooldown = recharge && !!recharge.value && (recharge.charged === false);
      ctx.isDepleted = item.isOnCooldown && (uses.per && (uses.value > 0));
      ctx.hasTarget = !!target && !(["none", ""].includes(target.type));
      ctx.canToggle = false;
      if ( item.type === "spell" ) arr[0].push(item);
      else arr[1].push(item);
      return arr;
    }, [[], []]);

    // Apply item filters
    spells = this._filterItems(spells, this._filters.spellbook);
    other = this._filterItems(other, this._filters.features);

    // Organize Spellbook
    const spellbook = this._prepareSpellbook(context, spells);

    // Organize Features
    for ( let item of other ) {
      if ( item.type === "weapon" ) features.weapons.items.push(item);
      else if ( item.type === "feat" ) {
        if ( item.system.activation.type ) features.actions.items.push(item);
        else features.passive.items.push(item);
      }
      else features.equipment.items.push(item);
    }

    // Assign and return
    context.inventoryFilters = true;
    context.features = Object.values(features);
    context.spellbook = spellbook;
  }

vehicle-sheet.mjs:
  /** @override */
  _prepareItems(context) {
    const cargoColumns = [{
      label: game.i18n.localize("DND5E.Quantity"),
      css: "item-qty",
      property: "quantity",
      editable: "Number"
    }];

    const equipmentColumns = [{
      label: game.i18n.localize("DND5E.Quantity"),
      css: "item-qty",
      property: "system.quantity",
      editable: "Number"
    }, {
      label: game.i18n.localize("DND5E.AC"),
      css: "item-ac",
      property: "system.armor.value"
    }, {
      label: game.i18n.localize("DND5E.HP"),
      css: "item-hp",
      property: "system.hp.value",
      editable: "Number"
    }, {
      label: game.i18n.localize("DND5E.Threshold"),
      css: "item-threshold",
      property: "threshold"
    }];

    const features = {
      actions: {
        label: game.i18n.localize("DND5E.ActionPl"),
        items: [],
        hasActions: true,
        crewable: true,
        dataset: {type: "feat", "activation.type": "crew"},
        columns: [{
          label: game.i18n.localize("DND5E.Cover"),
          css: "item-cover",
          property: "cover"
        }]
      },
      equipment: {
        label: game.i18n.localize(CONFIG.Item.typeLabels.equipment),
        items: [],
        crewable: true,
        dataset: {type: "equipment", "armor.type": "vehicle"},
        columns: equipmentColumns
      },
      passive: {
        label: game.i18n.localize("DND5E.Features"),
        items: [],
        dataset: {type: "feat"}
      },
      reactions: {
        label: game.i18n.localize("DND5E.ReactionPl"),
        items: [],
        dataset: {type: "feat", "activation.type": "reaction"}
      },
      weapons: {
        label: game.i18n.localize(`${CONFIG.Item.typeLabels.weapon}Pl`),
        items: [],
        crewable: true,
        dataset: {type: "weapon", "weapon-type": "siege"},
        columns: equipmentColumns
      }
    };

    context.items.forEach(item => {
      const {uses, recharge} = item.system;
      const ctx = context.itemContext[item.id] ??= {};
      ctx.canToggle = false;
      ctx.isExpanded = this._expanded.has(item.id);
      ctx.hasUses = uses && (uses.max > 0);
      ctx.isOnCooldown = recharge && !!recharge.value && (recharge.charged === false);
      ctx.isDepleted = item.isOnCooldown && (uses.per && (uses.value > 0));
    });

    const cargo = {
      crew: {
        label: game.i18n.localize("DND5E.VehicleCrew"),
        items: context.actor.system.cargo.crew,
        css: "cargo-row crew",
        editableName: true,
        dataset: {type: "crew"},
        columns: cargoColumns
      },
      passengers: {
        label: game.i18n.localize("DND5E.VehiclePassengers"),
        items: context.actor.system.cargo.passengers,
        css: "cargo-row passengers",
        editableName: true,
        dataset: {type: "passengers"},
        columns: cargoColumns
      },
      cargo: {
        label: game.i18n.localize("DND5E.VehicleCargo"),
        items: [],
        dataset: {type: "loot"},
        columns: [{
          label: game.i18n.localize("DND5E.Quantity"),
          css: "item-qty",
          property: "system.quantity",
          editable: "Number"
        }, {
          label: game.i18n.localize("DND5E.Price"),
          css: "item-price",
          property: "system.price.value",
          editable: "Number"
        }, {
          label: game.i18n.localize("DND5E.Weight"),
          css: "item-weight",
          property: "system.weight",
          editable: "Number"
        }]
      }
    };

    // Classify items owned by the vehicle and compute total cargo weight
    let totalWeight = 0;
    for ( const item of context.items ) {
      const ctx = context.itemContext[item.id] ??= {};
      this._prepareCrewedItem(item, ctx);

      // Handle cargo explicitly
      const isCargo = item.flags.dnd5e?.vehicleCargo === true;
      if ( isCargo ) {
        totalWeight += (item.system.weight || 0) * item.system.quantity;
        cargo.cargo.items.push(item);
        continue;
      }

      // Handle non-cargo item types
      switch ( item.type ) {
        case "weapon":
          features.weapons.items.push(item);
          break;
        case "equipment":
          features.equipment.items.push(item);
          break;
        case "feat":
          const act = item.system.activation;
          if ( !act.type || (act.type === "none") ) features.passive.items.push(item);
          else if (act.type === "reaction") features.reactions.items.push(item);
          else features.actions.items.push(item);
          break;
        default:
          totalWeight += (item.system.weight || 0) * item.system.quantity;
          cargo.cargo.items.push(item);
      }
    }

    // Update the rendering context data
    context.inventoryFilters = false;
    context.features = Object.values(features);
    context.cargo = Object.values(cargo);
    context.encumbrance = this._computeEncumbrance(totalWeight, context);
  }

vehicle-sheet.mjs:
  /** @override */
  _prepareItems(context) {
    const cargoColumns = [{
      label: game.i18n.localize("DND5E.Quantity"),
      css: "item-qty",
      property: "quantity",
      editable: "Number"
    }];

    const equipmentColumns = [{
      label: game.i18n.localize("DND5E.Quantity"),
      css: "item-qty",
      property: "system.quantity",
      editable: "Number"
    }, {
      label: game.i18n.localize("DND5E.AC"),
      css: "item-ac",
      property: "system.armor.value"
    }, {
      label: game.i18n.localize("DND5E.HP"),
      css: "item-hp",
      property: "system.hp.value",
      editable: "Number"
    }, {
      label: game.i18n.localize("DND5E.Threshold"),
      css: "item-threshold",
      property: "threshold"
    }];

    const features = {
      actions: {
        label: game.i18n.localize("DND5E.ActionPl"),
        items: [],
        hasActions: true,
        crewable: true,
        dataset: {type: "feat", "activation.type": "crew"},
        columns: [{
          label: game.i18n.localize("DND5E.Cover"),
          css: "item-cover",
          property: "cover"
        }]
      },
      equipment: {
        label: game.i18n.localize(CONFIG.Item.typeLabels.equipment),
        items: [],
        crewable: true,
        dataset: {type: "equipment", "armor.type": "vehicle"},
        columns: equipmentColumns
      },
      passive: {
        label: game.i18n.localize("DND5E.Features"),
        items: [],
        dataset: {type: "feat"}
      },
      reactions: {
        label: game.i18n.localize("DND5E.ReactionPl"),
        items: [],
        dataset: {type: "feat", "activation.type": "reaction"}
      },
      weapons: {
        label: game.i18n.localize(`${CONFIG.Item.typeLabels.weapon}Pl`),
        items: [],
        crewable: true,
        dataset: {type: "weapon", "weapon-type": "siege"},
        columns: equipmentColumns
      }
    };

    context.items.forEach(item => {
      const {uses, recharge} = item.system;
      const ctx = context.itemContext[item.id] ??= {};
      ctx.canToggle = false;
      ctx.isExpanded = this._expanded.has(item.id);
      ctx.hasUses = uses && (uses.max > 0);
      ctx.isOnCooldown = recharge && !!recharge.value && (recharge.charged === false);
      ctx.isDepleted = item.isOnCooldown && (uses.per && (uses.value > 0));
    });

    const cargo = {
      crew: {
        label: game.i18n.localize("DND5E.VehicleCrew"),
        items: context.actor.system.cargo.crew,
        css: "cargo-row crew",
        editableName: true,
        dataset: {type: "crew"},
        columns: cargoColumns
      },
      passengers: {
        label: game.i18n.localize("DND5E.VehiclePassengers"),
        items: context.actor.system.cargo.passengers,
        css: "cargo-row passengers",
        editableName: true,
        dataset: {type: "passengers"},
        columns: cargoColumns
      },
      cargo: {
        label: game.i18n.localize("DND5E.VehicleCargo"),
        items: [],
        dataset: {type: "loot"},
        columns: [{
          label: game.i18n.localize("DND5E.Quantity"),
          css: "item-qty",
          property: "system.quantity",
          editable: "Number"
        }, {
          label: game.i18n.localize("DND5E.Price"),
          css: "item-price",
          property: "system.price.value",
          editable: "Number"
        }, {
          label: game.i18n.localize("DND5E.Weight"),
          css: "item-weight",
          property: "system.weight",
          editable: "Number"
        }]
      }
    };

    // Classify items owned by the vehicle and compute total cargo weight
    let totalWeight = 0;
    for ( const item of context.items ) {
      const ctx = context.itemContext[item.id] ??= {};
      this._prepareCrewedItem(item, ctx);

      // Handle cargo explicitly
      const isCargo = item.flags.dnd5e?.vehicleCargo === true;
      if ( isCargo ) {
        totalWeight += (item.system.weight || 0) * item.system.quantity;
        cargo.cargo.items.push(item);
        continue;
      }

      // Handle non-cargo item types
      switch ( item.type ) {
        case "weapon":
          features.weapons.items.push(item);
          break;
        case "equipment":
          features.equipment.items.push(item);
          break;
        case "feat":
          const act = item.system.activation;
          if ( !act.type || (act.type === "none") ) features.passive.items.push(item);
          else if (act.type === "reaction") features.reactions.items.push(item);
          else features.actions.items.push(item);
          break;
        default:
          totalWeight += (item.system.weight || 0) * item.system.quantity;
          cargo.cargo.items.push(item);
      }
    }

    // Update the rendering context data
    context.inventoryFilters = false;
    context.features = Object.values(features);
    context.cargo = Object.values(cargo);
    context.encumbrance = this._computeEncumbrance(totalWeight, context);
  }

Closing as completed.


text:
Instagram issue

Hi! Everything seems to be working fine, according to the config and logs:
: phishlets enable instagram
[02:27:21] [inf] enabled phishlet 'instagram'
[02:27:21] [inf] setting up certificates for phishlet 'instagram'...
[02:27:21] [+++] successfully set up SSL/TLS certificates for domains: [www.mydomain.com m.mydomain.com]
: lures

+-----+------------+-----------+------------+-----------+------------+-------------------+-------+
| id  | phishlet   | hostname  |   path     | template  | ua_filter  |   redirect_url    |  og   |
+-----+------------+-----------+------------+-----------+------------+-------------------+-------+
| 0   | instagram  |           | /yLJJRKFa  |           |            | https://www.i...  | ----  |
| 1   | instagram  |           | /HtGwSMku  |           |            |                   | ----  |

+-----+------------+-----------+------------+-----------+------------+-------------------+-------+

But when I access the page, I receive an error message from Instagram: "Error, try in a few minutes" (image)

Any advices on how to troubleshoot this?

Did you find a solution? Got the same error

authors: mrbuckethead rzmpzgeviii


text:
Yes, there are not enough "make Web Components Better"  tools

https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/

Please don't use issues to complain about not liking the concept of a project. This is a place for actual bugs and suggestions, not griping about the premise itself - no one is forcing you to use Facet if you prefer a different library's take on making web components less of a clunky mess of boilerplate. In fact, I'm happy to recommend some of my favorites:

Catalyst
Lit
Slim.js

authors: Danny-Engelman kgscialdone

repo: kgscialdone/facet

license: Unlicense


text:
No test dataset in snakebids bootstrap app

snakebids create is supposed to drop the tutorial test dataset in the new app, but this doesn't seem to be happening. I don't think the presence of this dataset is actually explicitly tested, which explains how this got past CI.
As of yet, I think the tutorial still says to download the dataset manually, so this issue isn't immediately pressing, but should be fixed as soon as feasible

Just a note that when I follow the instructions in the snakebids create flow, the app doesn't work because the dataset is missing. So this is actually quite serious

I’m out at the moment so maybe i missed something in the code / docs.
It looks like the copier would only copy the project slug if I understand how run_copy works in create, in addition to those that are conditionally grabbed? Do we need to include the test/data path separately in the copy command?

Not sure, I'll look into it shortly

authors: kaitj pvandyken

repo: khanlab/snakebids


text:
Introduce python based e2e tests

Introduce an E2E test suite, based on the pytest testing framework.
The tests mimics the existing kubevirt-vm-latency checkup e2e test which is implemented in a bash script.
Following changes are planned to include:

Remove the bash e2e tests.
Push the test-image to the registry and auto-build it per need (when the Dockerfile or the requirements.txt files change).

WDYT about moving the e2e under the vm latency directory?
They are specific to this checkup.

WDYT about moving the e2e under the vm latency directory? They are specific to this checkup.

e2e tests are about testing everything.
I also prefer to see all e2e tests under a separate subtree.
I think this also correlates with other projects we work on these days (e.g. kubevirt).

change: Rebase to trigger the CI before merging.

authors: EdDev orelmisan

repo: kiagnose/kiagnose


text:
[MBL-823] Update ProjectNotificationViewmodel to RX2

📲 What
Updating the viewmodel and relevant view code and tests to Rx2
🤔 Why
RX1 ❌
RX2 ✔
🛠 How
🧠
📋 QA
Confirm that the views in the notification settings page for individual projects works as expected
Story 📖
MBL-823

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 75.00000% with 5 lines in your changes missing coverage. Please review.

Project coverage is 67.50%. Comparing base (25bf865) to head (3b6127b).

Files with missing lines
Patch %
Lines

...starter/viewmodels/ProjectNotificationViewModel.kt
75.00%
3 Missing and 2 partials :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2114      +/-   ##
============================================
- Coverage     67.51%   67.50%   -0.02%
  Complexity     2133     2133
============================================
  Files           364      364
  Lines         22186    22190       +4
  Branches       3116     3117       +1
============================================
  Hits          14979    14979
- Misses         5568     5571       +3
- Partials       1639     1640       +1

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

authors: codecov-commenter mtgriego

repo: kickstarter/android-oss


text:
MBL-721

📲 What
Now that we have RemoteConfig configured, lets get our local feature flags in our debug menu working.
🤔 Why
Some background context on why the change is needed.
🛠 How
These toggles will first reference values stored in user defaults, if there is one, before referencing the values currently published in our firebase console.
Allowing us to test our app with different flags enbaled/disabled without impacting production.
We're using the same pattern here that we've had with Optimizely, so this is mostly renames and making sure that we're referencing the RemoteConfigClientType that is now in AppEnvironment
👀 See
Trello, screenshots, external resources?

After 🦋

✅ Acceptance criteria
Make sure you run the app using our AppCenter Alpha scheme to test.

[ ] Toggling flags in Debug -> Remote Config Feature Flags persists on relaunch and fully closing the app.
[ ] On a fresh install with Consent Management Dialog flag enabled, and the live value in the firebase console set to false, the app shows the Tracking dialog proving that the app is referencing the local flag value and not the published on

          1 Warning

:warning:
Big PR

  Generated by :no_entry_sign: Danger

addressed your comments @msadoon take your time reviewing. no rush!

authors: nativeksr scottkicks

repo: kickstarter/ios-oss


text:
'this' is missing in 'Locals'

Acces to the this keyword is missing, hence debugging of certain code is impossible without using console.log or similar.

Good point.

Fixed

authors: alexandernst codecontemplator

repo: kiddkai/atom-node-debugger

license: mit


text:
olm test fix

Many thanks for submiting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[ ] You have read the contributors guide
[ ] Pull Request title is properly formatted: [KOGITO-XYZ] Subject
[ ] Pull Request contains link to the JIRA issue
[ ] Pull Request contains description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket
[ ] Your feature/bug fix has a unit test that verifies it
[ ] You've tested the new feature/bug fix in an actual OpenShift cluster

We have to change the CRDs to add versions on it based on the CSV:
ERROR: CSV.spec.crd.owned.version isnot in CRD.spec.versions list [0.9.1/kogito-operator.v0.9.1.clusterserviceversion.yaml]

repo: kiegroup/kogito-cloud-operator


text:
[KOGITO-6022] Assigments Unification at engine/flow level

Jira: https://issues.redhat.com/browse/KOGITO-6022

Jenkins retest this please

Jenkins retest this please

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

test are likely to be unrelated.
Jenkins retest this please.

The (build) kogito-examples check has failed. Please check the logs.

Jenkins retest this please.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

Jenkins retest this please

The (build) kogito-examples check has failed. Please check the logs.

rebased

The (build) kogito-examples check has failed. Please check the logs.

rebased

The (build) kogito-examples check has failed. Please check the logs.

Jenkins retest this please

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

rebased

The (build) kogito-examples check has failed. Please check the logs.

Jenkins rerun kogito-examples tests

The (build) kogito-examples check has failed. Please check the logs.

Jenkins rerun kogito-examples tests

The (build) kogito-examples check has failed. Please check the logs.

rebased

The (build) kogito-examples check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

Jenkins retest this please

Jenkins retest this please

@elguardian needs rebase again

The (build) kogito-runtimes check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

Jenkins retest this please

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

Jenkins rerun kogito-apps tests

The (build) kogito-apps check has failed. Please check the logs.

jenkins please retest this

The (build) kogito-examples check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

rebased

all green.
merging

authors: cristianonicolai elguardian kie-ci

repo: kiegroup/kogito-runtimes


text:
[KOGITO-6267] move PackageClassLoader into dynamic module to fix kogi…

…to native compilation
JIRA: https://issues.redhat.com/browse/KOGITO-6267
Related PRs:
https://github.com/kiegroup/drools/pull/4050
https://github.com/kiegroup/kogito-runtimes/pull/1761

The (build) kogito-examples check has failed. Please check the logs.

authors: kie-ci mariofusco


text:
KOGITO-6433: Remove non working javadoc plugin

For more details see:

https://issues.redhat.com/browse/KOGITO-6433

LGTM - thanks!

authors: jesuino jomarko

repo: kiegroup/kogito-tooling


text:
An error about InitFlux LoRATraining

I was still using it normally last week and didn't update Comfyui.
There was an error this week, and I am very confident that I did not make any changes to the settings.
I even reset my Comfyui and plugins.

Check the last widgets of that node, the gradient checkpointing options changed at one point and it looks like the workflow is trying to use non-existing choice.

Thank you very much for your efficient feedback.
I also noticed this small setting, it's really too hidden.
I've been searching for a long time.
This issue has been resolved.
I have some small questions to summarize:

I see that there is only num_depeaks here, but no setting for the number of loops.
If I have 2000 1024 * 1024 images, do you recommend using Lora for training or fine-tuning the large model?
How can I calculate the total number of steps based on the parameters of this script?

authors: kijai linseasea

repo: kijai/ComfyUI-FluxTrainer


text:
swift catalog search should support more complex queries

Currently you can only search repo strings:

The only extra logic is that forks are searched as well if a query in the form of a github slug, e.g. ZeeQL/ZeeQL3 is given

E.g. I would like to query SPM packages which are 10*+, order by stars.
Another useful query would be "packages referred to by N+ other packages" (popular by reference, though that may need to imply indirection).

good idea! I'm not entirely sure how much is possible through GH's API, but it's more than worth the investigation!

repo: kiliankoe/apodidae


text:
update remaining maintenance docs

update single-tier and multi-tier maintenance docs
based on cloudformation doc
fix links in single-tier setup

There are a few differences between the maintain docs for single-tier and multi-tier. The main difference is that the single-tier implementation includes the database and load balancer in the same instance. They could be combined, but there would be times when it would say "this applies to the xxx version only".

There are a few differences between the maintain docs for single-tier and multi-tier. The main difference is that the single-tier implementation includes the database and load balancer in the same instance. They could be combined, but there would be times when it would say "this applies to the xxx version only".

Got it. Just that, if any updates are required to the docs in the future, both docs would need to be updated consitently. Another idea is to move the common content to a separate file and include it in both files via the includedirective. See https://github.com/killbill/killbill-docs/blob/v3/userguide/subscription/userguide_subscription.adoc for an example.

There are a few differences between the maintain docs for single-tier and multi-tier. The main difference is that the single-tier implementation includes the database and load balancer in the same instance. They could be combined, but there would be times when it would say "this applies to the xxx version only".

Got it. Just that, if any updates are required to the docs in the future, both docs would need to be updated consitently. Another idea is to move the common content to a separate file and include it in both files via the includedirective. See https://github.com/killbill/killbill-docs/blob/v3/userguide/subscription/userguide_subscription.adoc for an example.

I understand that this might be a big change, so let's keep it on hold for now and revisit later.

authors: jdmooney reshmabidikar

repo: killbill/killbill-docs


text:
primesieve 6.2 fails two tests on 32bit architectures

According to Debian Package Auto-Building for the latest packaging for primesieve 6.2, here, primesieve 6.2 fails two tests on the i386 architecture (and other 32bit arch): the involved tests are: floorPow2 and ilog2 .

Hi Jerome,

The ilog2.cpp test has been fixed by commit https://github.com/kimwalisch/primesieve/commit/a1d3a3b812360a52712990500542552f6d49cbf1
The floorPower2.cpp test has been fixed by commit https://github.com/kimwalisch/primesieve/commit/6c74531408cab6d2f19f4bd0f71e3df69c328c85

The other bugs which are all related to:
libprimesieve.so.8.2.0: undefined reference to `__atomic_fetch_add_8'

are not primesieve bugs, these are caused by CPU architectures that currently don't fully support C++11 threading. The build status  shows that for each such failure the CPU architecture is out of date. I cannot fix these failures.

Thanks for the numerical fixes.
Otherwise, I am not sure what to understand by out of date CPU architecture: I guess it is more correct to say that the compiler doest not fully support C++-11 on some architectures. Of course we cannot fix the compiler (or the architectures). Given that, is there any work around that can be applied only on these exotic architecture ?

I guess it is more correct to say that the compiler doest not fully support C++-11 on some architectures.

Yes, that is more accurate.

Given that, is there any work around that can be applied only on these exotic architecture ?

Yes, I guess it is possible. This issue seems to be a known Debian bug. Apparently the atomic features are not in libpthread.so on some Debian CPU architectures  but in libatomic.so.
Hence a possible fix would be to add libatomic as a link dependency of libprimesieve and static_libprimesieve in CMakeLists.txt:
- target_link_libraries(libprimesieve Threads::Threads)
+ target_link_libraries(libprimesieve Threads::Threads atomic)

- target_link_libraries(static_libprimesieve Threads::Threads)
+ target_link_libraries(static_libprimesieve Threads::Threads atomic)

However I cannot test if this really fixes the issue. I found one other open source project that fixed the same issue this way.

Ok. Can you make conditional/optional in CMakeLists.txt ?
And then release a micro version in such a way I can easily repack and test ?

Ok. Can you make conditional/optional in CMakeLists.txt ?
And then release a micro version in such a way I can easily repack and test ?

Yes, but it will take a few hours because I need to test this myself a little (I am worried libatomic might not exist on some systems (e.g. Windows) and CMakeLists.txt must handle this correctly).

I understand. Take you time. It would be nice if you can test it on Debian derived box.
For Debian, I will trigger it only where it is required.

I have now merged the fix for the libatomic linker error. I have tested the fix on Debian, Ubuntu, Red Hat, macOS and Windows. CMakeLists.txt now correctly finds libatomic and adds it as a link dependency to libprimesieve(but only if this is really needed).
I am not 100% sure if it works though as I don't have access to any of the Debian architectures where the primesieve-6.2 build failed.
I have released primesieve-6.3-rc1 for testing.

Thanks for your prompt fix. I will have a look on next Friday.

I have just tested primesieve-6.3-rc1 on an armel box: the built and the tests work.
When do you plan to release the version 6.3 ?

If v6.3-rc1 works for you I will release primesieve-6.3 tomorrow, v6.3 will
contain no code changes compared to v6.3-rc1.
Regards,
Kim
On Nov 17, 2017 9:36 PM, "Jérôme Benoit" notifications@github.com wrote:

I have just tested primesieve-6.3-rc1 on an armel box: the built and the
tests work.
When do you plan to release the version 6.3 ?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/kimwalisch/primesieve/issues/45#issuecomment-345358700,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEcMW8VvEvwRMcFe1sUuCJXt8WBoLuMpks5s3e45gaJpZM4Qav8w
.

Hi Jérôme,
I have released primesieve-6.3 on GitHub:
https://github.com/kimwalisch/primesieve/releases
Kim
On Fri, Nov 17, 2017 at 10:31 PM, Kim Walisch kim.walisch@gmail.com wrote:

If v6.3-rc1 works for you I will release primesieve-6.3 tomorrow, v6.3
will contain no code changes compared to v6.3-rc1.
Regards,
Kim
On Nov 17, 2017 9:36 PM, "Jérôme Benoit" notifications@github.com wrote:

I have just tested primesieve-6.3-rc1 on an armel box: the built and the
tests work.
When do you plan to release the version 6.3 ?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/kimwalisch/primesieve/issues/45#issuecomment-345358700,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEcMW8VvEvwRMcFe1sUuCJXt8WBoLuMpks5s3e45gaJpZM4Qav8w
.

So I have begun to package. It appears that the check in CMakeLists.txt see whether or not the atomic material comes from the compiler itself or from the adhoc libatomic library. I will dig the issue next week-end. Sorry for the delay.

It appears that the check in CMakeLists.txt see whether or not the atomic
material comes from the compiler itself or from the adhoc libatomic library.

Yes, while searching for the error using Google I found that the LLVM
compiler had the same issue: https://reviews.llvm.org/D10453 (also bug
explained here:
https://answers.launchpad.net/gcc-arm-embedded/+question/616213). And as
LLVM also uses cmake as its build system I cloud see how they fixed the
issue and implement something similar. As far as I understand this issue
exists on CPU architectures that do not have the required atomic
instructions to support C++11 atomics, in this case using C++11 atomics
requires linking against libatomic. Hence in CMakeLists.txt I first check
whether C++11 atomic compiles without libatomic, if it does not compile I
add libtoamic to the linker flags.
Kim
On Sat, Nov 18, 2017 at 4:06 PM, Jérôme Benoit notifications@github.com
wrote:

So I have begun to package. It appears that the check in CMakeLists.txt
see whether or not the atomic material comes from the compiler itself or
from the adhoc libatomic library. I will dig the issue next week-end. Sorry
for the delay.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/kimwalisch/primesieve/issues/45#issuecomment-345448009,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEcMW6vpVcbuA06y192Ao34ZLWoKL5UFks5s3vJ2gaJpZM4Qav8w
.

Yes but as libatomic is installed and it is meant to be transparent at build time, the test is lure.
Having said that, I have noticed that some tests are lasting extremely long on armel. So, you might consider to avoid atomic feature when it is not engraved in the CPU.

Having said that, I have noticed that some tests are lasting extremely long on armel.

How how long did it take to complete primesieve's test suite on armel?
What are the 2 slowest tests on armel?

My goal with primesieve's test suite has been that it should complete in about 30 seconds on a recent x86 CPU. Unfortunately this also means that if the test suite is run on a very old or low power embedded CPU running the test suite might take much longer. E.g. For the hppa CPU (which I guess is at least 15 years old) primesieve-6.2 took 2430 seconds to complete its test suite.
Looking at the build time and test time of the gmp C multiprecision library for the hppa CPU I see that it even took 1h 17m. So other libraries are having the same issue.
This is not an easy fix because I cannot simply reduce the tests by a factor of 100 just to reduce the test suite runtime on some ancient CPUs...

So, you might consider to avoid atomic feature when it is not engraved in the CPU.

I am quite sure that the long test run times are not related to the use of atomic instructions. Atomics are obviously only used when using multi-threading but e.g. for the hppa architecture many long running tests: generate_primes2, next_prime2, prev_prime1, generate_n_primes1 are single-threaded tests. Also atomics are used extremely sparsely in primesieve so that even if the CPU does not support hardware atomics this will not affect primesieve's run-time.

I will record the time next time. BTW, it can be an issue for automates at building time; we will see.
Otherwise, do you have any idea how to harden the test ?

do you have any idea how to harden the test?

Sorry, but I don't understand what you mean?

The current test does not work. If libatomic is installed, the test set have_atomic to true.

My understanding is that have_atomic is set to true only if the compiler is able to compile std::atomic without linking against libatomic. In this case libatomic is not needed.
If however have_atomic is false than we need to link against libatomic.
I have tested this on i386 and x64 and there it worked fine.

it does not work on armel .

Ok, can you print the cmake (and make) output here so that I can see what went wrong?

it does not work on armel.

I have been able to reproduce the bug on my old 32-bit PowerPC Mac. The issue is that these old CPU architectures do have 32-bit atomic instructions but not 64-bit atomic instructions. Hence my have_atomic test which used std::atomic<int> passed fine but then primesieve failed to compile because it uses std::atomic<int64_t>.
Hence I have now modified the test in CMakeLists.txt to use std::atomic<int64_t> and now the test correctly fails on my 32-bit PowerPC Mac.
check_cxx_source_compiles("
    #include <atomic>
    #include <stdint.h>
    int main() {
        std::atomic<int64_t> x;
        x = 1;
        x--;
        return (int) x;
    }"
    have_atomic)

Can you please retest using the latest code from the master branch?

Sorry for my late reply. It works on armel. I am on way to test on other architectures.

Sorry for my late reply. It works on armel. I am on way to test on other architectures.

Thanks, once you have tested it successfully on other architectures I will bump the version number again and release 6.4. I misunderstood you last week, I thought it was working without any issues that's why I released 6.3 last week, otherwise I would have fixed this issue first before releasing version 6.3.

The suggested test works at least on the mipsel, mips, and armel architectures (which architect officially supported by Debian).
The time for the test are:
armel: 1175.13 s
mips: 707.6 s
mipsel: 417.96 s
Concerning realising, you did misunderstand my claim, but I rather overestimated my own test; I am sorry for that.
Given that, I do not think it is necessary to make a new release: let apply a patch and see if it works well on all architectures (officially or not supported by Debian).

Given that, I do not think it is necessary to make a new release: let apply a patch and see if it works well on all architectures (officially or not supported by Debian).

OK, I like this solution better.

It rocks ! In about 5 days, it should reach testing. Thank you very much for your patience.

authors: jgmbenoit kimwalisch

repo: kimwalisch/primesieve


text:
Add german translation

closes #91

I haven't figured out how translations work in the home assistant core for integrations. Looks like they have an external tool for translations and the language files are possibly built during packaging. I'm not sure. Maybe someone else knows.
Even on their development documentation it doesn't go into the details of where the translated strings are held and how they're brought in.
When this moves to a core integration this file will have to be dropped in favor of however they do it.

At least I looked at the official translation tool of HA to get the common strings for the translations

repo: kingsleyadam/local-abbfreeathome-hass


text:
Example 36 - Nearly Incompressible Hyperelasticity: XDMF Export (Meshio Error)

Hi,
in Example 36, line 256, I had to transpose the mesh points to be able to export the XDMF file.
Code as is
        Mesh(mesh.p, cells={"tetra": mesh.t.T},

should be changed to
        Mesh(mesh.p.T, cells={"tetra": mesh.t.T},

Best regards,
Andreas

One additional information:
print(pkg_resources.get_distribution('scikit-fem').version)
2.5.0

Makes sense, meshio usually expects one point per row.

I wonder why this example is not using Mesh.save...

I'm new to scikit-fem and I'm just diving through the examples - so I can't help you on that :blush:

Don't worry! Just a reminder for myself to look into it.
Feel free to report any inconsistencies in the documentation or propose improvements.

I don't think that this has ever worked:
https://github.com/kinnala/scikit-fem/blob/e0703948a5d5ed18f78c935a9d6929f76a104648/docs/examples/ex36.py#L253
Also there's no need to transpose the scalar pressure
https://github.com/kinnala/scikit-fem/blob/e0703948a5d5ed18f78c935a9d6929f76a104648/docs/examples/ex36.py#L259

Actually transposing the pressure might work but better is to flatten or squeeze the nodal_dofs, as in
https://github.com/kinnala/scikit-fem/blob/e0703948a5d5ed18f78c935a9d6929f76a104648/docs/examples/ex18.py#L119

authors: adtzlr gdmcbain kinnala

repo: kinnala/scikit-fem


text:
Pass **kwargs to solvers

@gdmcbain : is this what you propose in #300 ?

No, I didn't foresee not being able to define a solver with a fixed preconditioner.

Sorry for doing the reordering in the same PR. I didn't realize the changelog would become so unreadable. I'll try to avoid this in the future.

authors: gdmcbain kinnala


text:
App Bridge UI Menu not corresponding to the page

Hey, building another app with this template, and I see there have been some cool updates, including transition to AppBridge CDN (#34)
If you try switching between the three different menu tabs on the lefthand side of the app, it usually does not reflect the page shown after the second switch. As you can see from the screenshot, I have the clicked the "Fetch Data" page, but the ui menu shows the "Billing" page as active.

|
I suspect this might be completely on the AppBridge side, as I've seen some complaints on their repo that it takes longer to load a page from previous versions, but still wanted to reach out. 🙌🏽

You're correct - it's a little slower and on prod mode it's still not as noticeable as on dev mode, but ye this is totally on AppBridge's end and there's nothing we can do about it except open an issue on official repos!

authors: AndrejMazhenkovski kinngh

repo: kinngh/shopify-nextjs-prisma-app


text:
Version 15.0.0 published?

Has v15.0.0 been published to npm yet?

Yes since about 2 hours. What has changed since v13? Changelog is outdated AF https://github.com/kirjs/react-highcharts/blob/master/CHANGELOG.md

What about v.14 as well?
npm show react-highcharts says that the one has not been published
'12.0.0': '2017-04-27T04:49:39.012Z',
'13.0.0': '2017-10-11T15:26:38.119Z',
'15.0.0': '2017-11-16T19:26:08.166Z'

An even newer one would be great to get rid of the warnings related to "getDefaultProps()" on React 16.

authors: Skaronator Tsvetkovv eliseumds nhpace

repo: kirjs/react-highcharts


text:
functional expansion: add regExp for ID

Hey man, I added feature to generate name by regex from absolute file path.
see: https://github.com/webpack/loader-utils#interpolatename
loaderUtils.interpolateName(loaderContext, "script-[1].[ext]", { regExp: "page-(.*)\.js", content: ... });
// => script-home.js

Hey! Good idea, have you tested this?

Yes, I have this feature on production 😄

You have got a file: ./application/icons/xs/export.svg
Webpack:
  loaders: [{
      test: /\.svg$/,
      loader: 'svg-sprite?' + JSON.stringify({
        name: 'icon:[1]',
        regExp: '/icons/(.*)\\.svg'
      })
    }]

index.js
var iconExport = require('./application/icons/xs/export.svg'); // "icon:xs/export"

result in comment: "icon:xs/export"

@AndreiSoroka shipped with 0.3.0

authors: AndreiSoroka kisenka

repo: kisenka/svg-sprite-loader


text:
🛑 archive.swiftdevelopers.jp is down

In 06c329c, archive.swiftdevelopers.jp (https://archive.swiftdevelopers.jp/) was down:

HTTP code: 503
Response time: 317 ms

Resolved: archive.swiftdevelopers.jp is back up in fa47a16.


text:
seatd has dependencies on meson, samurai

@muevoid; two make depends please :)

Will do, will be at laptop later.

Just meson as the makedepend should be enough. meson has a dependency on samurai.

Fixed here: https://github.com/kisslinux/community/commit/406fa31561a86074f5c2a9d408ce4676c9815e7e

authors: dilyn-corner dylanaraps konimex muevoid

repo: kisslinux/community


text:
PHP-Problem

TaskBoard have the known "Bumps back to login"-problem. The solution is to use Mod-PHP.
With Fast-CGI, CGI or SuPHP you have the "Bumps back to login" after login problem.

Is this just posted for future searchers? I'm not seeing an actual issue, just a statement.

is it maybe because your fsstcgi, cgi or suphp is running under a different user then the taskboard.db file was created with?

Using MySQL
---Sent from Boxer | http://getboxer.com
On 26. April 2015 16:50:59 MESZ, Martin Holzhauer notifications@github.com wrote:is it maybe because your fsstcgi, cgi or suphp is running under a different user then the taskboard.db file was created with?  —Reply to this email directly or view it on GitHub.

authors: jazzcrack kiswa woodworker

repo: kiswa/TaskBoard


text:
🛑 Vinos Divertidos is down

In 0b48e30, Vinos Divertidos (https://vinosdivertidos.es) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Vinos Divertidos is back up in eea4cd9 after 5 minutes.


text:
Multiple uploads example

What's in this PR?
Introducing multiple files upload with example.

LGTM 🚢 🇮🇹

authors: babedev kittinunf

repo: kittinunf/Fuel


text:
Wrong Platform

get_input(callback=callback_mic)
gives me wrong platform, is there any documentation about this module?

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

from the docs

This function currently work only on Android and iOS.

If there is still somone using this project, can you explain to me how to implement the missing class "LinuxAudioInput" ?

👋 We use the issue tracker exclusively for bug reports and feature requests.
However, this issue appears to be a support request. Please use our   support channels            to get help with the project.
Let us know if this comment was made in error, and we'll be happy to reopen the issue.

authors: Julian-O lexoyo rainbowdesign

repo: kivy/audiostream


text:
On Raspian Jessie mouse and keyboard clicks passed to background desktop screen

On Raspberry Pi 2 Raspian Jessie, mouse and keyboard works but on fullscreen app (could not found a way to run in a windows btw) mouse and keyboard clicks are passed to desktop screen. No problem with binding keys on keyboard, or mouse working, eg/ on settings screen, but those mouse clicks cause running some applications on the background.

Thumbs up for this issue!
I'm also working with Kivy on Raspian Jessie for some time now and as far as i can say, it only works really well when you are in cli and start the app in fullscreen.
When i start an app in x-session, i can't even close the application (no esc, no ctrl-c,...) - the input in textfields is working though.
What i found out about that issue is, that Kivy is rendered on top of your x-session - and your mouse seems also to be still active behind your app. This also seems to be the reason, why you don't see your mouse-cursor, when you don't enable the workaround with "touchring = show_cursor=true" in your config.ini. (The thing here is, that i only see the touchring when i press my mousebutton - probably should further look into kivy's touchring module docs)
Therefore, the only real way to run kivy on raspbian atm is to reboot into cli and start your app there.

If I start the application from terminal application in x-session, ctrl-c works. But if the application is started by autorun after login, ctrl modifier does not work.
Mouse-cursor is visible always and working good (except click is done on upper left corner of the touchring icon).
The only solution is running in cli mode, as you have mentioned.

Confirming this issue as well. I have opened a StackOverflow question regarding this:
Starting in CLI alleviates the touch issue (obviously) however physical keyboard input is still passed through.

same problem here. still no soution? :/

RPi Kivy apps don't run within X. In order to utilize the hardware acceleration on the RPi we have to write directly to a framebuffer, which renders over whatever would otherwise be on the screen (X11 or a VT). As such, we don't do anything with X Input, so input events are still passed to X if it's running, and all RPi Kivy apps are fullscreen.

FYI: I made a workaround.
The X11-app grabbing the fullscreen behind the kivy-app on the desktop can catch the all events passed from kivy-app to desktop.
sample code:
// gcc -Wall -L/usr/X11R6/lib -lX11 kivyrun.c -o kivyrun
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned long RGB(Display *disp,
        unsigned char r,
        unsigned char g,
        unsigned char b)
{
    XColor xc;
    Colormap cm = DefaultColormap(disp, DefaultScreen(disp));

    xc.red = 257 * r;
    xc.green = 257 * g;
    xc.blue = 257 * b;

    XAllocColor(disp, cm, &xc);
    return xc.pixel;
}

int main(int argc, char *argv[])
{
        char cmdStr[1024];
        Display *disp;
        XWindowAttributes attr;
        XSetWindowAttributes myAttr;
        Window myWin, rootWin;
        int screen;
        GC gc;

        if (argc != 2) {
                fprintf(stderr, "Usage: %s SCRIPT_FILE_NAME\n", argv[0]);
                exit(1);
        }

        disp = XOpenDisplay(":0.0");
        if (disp == NULL) {
                fprintf(stderr, "Cannot open display\n");
                exit(1);
        }

        rootWin = DefaultRootWindow(disp);
        screen = DefaultScreen(disp);

        XGetWindowAttributes(disp, rootWin, &attr);

        myAttr.override_redirect = True;

        myWin = XCreateWindow(disp, RootWindow(disp, screen),
                0, 0, attr.width, attr.height, 0,
                CopyFromParent, CopyFromParent, CopyFromParent,
                CWOverrideRedirect, &myAttr);
        XMapWindow(disp, myWin);

        gc = XCreateGC(disp, myWin, 0, 0);
        XSetForeground(disp, gc, RGB(disp, 0, 0, 0));

        XFillRectangle(disp, myWin, gc, 0, 0, attr.width, attr.height);
        XFlush(disp);

        snprintf(cmdStr, 1024, "python %s", argv[1]);

        printf("%s\n", cmdStr);
        system(cmdStr);

        XCloseDisplay(disp);
        return 0;
}

Please type:

kivyrun SCRIPTNAME

instead of

python SCRIPTNAME

Thanks for posting that workaround!
I've tried it out on my RPi but it throws the "Cannot open display" error, so I'm assuming something goes wrong in the XOpenDisplay.
I'm new to Kivy and Python in general, and have zero experience with C so I'm at a loss as to what I'm doing wrong.
Do you have any suggestions for troubleshooting steps I could take to help fix this?
If it helps, I'm running Raspbian Jessie and Kivy 1.9.2.
Any help would be greatly appreciated!

Thanks for posting that workaround!
I've tried it out on my RPi but it throws the "Cannot open display" error, so I'm assuming something goes wrong in the XOpenDisplay.
I'm new to Kivy and Python in general, and have zero experience with C so I'm at a loss as to what I'm doing wrong.
Do you have any suggestions for troubleshooting steps I could take to help fix this?
If it helps, I'm running Raspbian Jessie and Kivy 1.9.2.
Any help would be greatly appreciated!

dirkjan237,
I think you didn't have an authorization of X-window at that time.
For example, don't running X11-desktop or another user is running X11-desktop.
At first, you should login to X11-desktop.
Start a LXTerminal by launch menu on the desktop then execute the such command.
If you found the error again, type 'echo $DISPLAY' on LXTerminal and compare with the parameter of XOpenDisplay(":0.0")  in the source code.
If $DISPLAY was empty, you don't run the X11-desktop.
If it is different from the parameter, change the parameter in source code to the value or NULL.
When you set the parameter to NULL, environment variable (DISPLAY) will be used.
example1:
$ echo $DISPLAY
:0.1
$

You have to change the parameter below:

option1:

disp = XOpenDisplay(":0.1");

option2:

disp = XOpenDisplay(NULL);

example2:
$ echo $DISPLAY

$

You have to run the X11-desktop first.

Seeing the same thing on Raspbian stretch. That would be expected from the comment by kivyd above, but I wanted to remind the developers about it so that the stale bot won't close the issue.
Kivy and the official touchscreen are a killer match for a lot of uses, so a fix would be nice.

I found a better solution if you use Xorg (= desktop screen, x-session) on HDMI-1 and a Kivy app on DSI-1. As @kived explains, a Kivy app draw directly to a framebuffer bypassing the X server. But the touchscreen itself is listed as an X input in the X server:
$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech MX Anywhere 2S                 	id=6	[slave  pointer  (2)]
⎜   ↳ FT5406 memory based driver              	id=9	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ DELL DELL USB Keyboard                  	id=7	[slave  keyboard (3)]
    ↳ DELL DELL USB Keyboard                  	id=8	[slave  keyboard (3)]
    ↳ Logitech MX Anywhere 2S                 	id=10	[slave  keyboard (3)]

From Disable mouse (not touchpad!) in Xorg while idle I could disable temporarily the touchscreen in Xorg but not in the Kivy app as following:
$ xinput list-props "FT5406 memory based driver"
Device 'FT5406 memory based driver':
	Device Enabled (114):	1
	Device Node (263):	"/dev/input/event2"
        [...]

$ xinput set-prop "FT5406 memory based driver" "Device Enabled" 0

I will check if there is something that is more presistant like How to disable touchpad completely on boot?...

I'm having the same issue with this configuration:

Python: 3.6.0
OS: Raspbian GNU/Linux 9 (stretch)
Kivy: 1.10.1

In my application I am popping up the terminal window in front, but its popping up the window but in background. I tried using sdl2, its so slow. If anyone has found any other solution?
Or if any body has tried the kivypie distribution?

This is an issue not only with X. I am running a Kivy app using egl_rpi and No X windows, and using hidinput. All the keys are going to the shell in the backround potentially causing havoc as they run commands in that shell. The keys are also seen by Kivy of course. The X solution above won't work in this case as there is no X. I am actually quite surprised this is still an issue.

FYI my current solution to this when running in egl_rpi (no X) is to run my kivy app in the following shell script...
stty -echo
python3 main.py
while read -r -t 0; do read -r; done
stty echo

This stops the echoing of the characters to the background shell, then eats up the characters before the shell can get them.

I am actually quite surprised this is still an issue.

+1, though a few years have now passed - maybe there's a proper solution? I use a barcode reader which acts as a USB HID keyboard; each scan prints the barcode's content + CR to the console even when the Kivy app is running. This leads to repeated failed logins on the terminal:
Raspbian GNU/Linux 9 station tty1
station login: 82947682
Password:
85404526
70198164

Login incorrect
station login: 72998502
Password:
81799152
48270571
52904783

Login incorrect
...

can't you just configure the default tty to have no console on, just like the one for X on most distribution, so the touches/keyboard events are not received by anything? (and you can still use alt-fN to switch to a different tty), this is system configuration, not something kivy can really solve in a general case.

can't you just configure the default tty to have no console on

Absolutely, in fact I was going to do that before deployment anyway, to get a completely blank boot-screen. I just thought there might be some way in Python/Kivy to capture a particular USB device and gobble up everything it produces.

do
export DISPLAY=:0.0

do
export DISPLAY=:0.0

Doing this prevents the application from using the OpenGL ES broadcom driver on my raspberry pi 3.
It uses the Open GL software emulation instead, having very poor performance and CPU used at almost 100%.
Only way to use hardware acceleration is to set the DIPLAY environment variable to nothing.
Maybe I'm doing something wrong and there's another way to force SDL2 to use the hardware chip...

I worked around my problem by disabling the xinput device at lauch in my kivy app and enabling it again just before exiting.
Not a nice solution though...

Closing as this isn't a bug in Kivy; it is a configuration issue with several workarounds given above.

authors: Hayatomon JohnPersano Julian-O Kuldeepwadaskar asim411 clickworkorange dirkjan237 dlparker dsz-dsz-k fsinisi90 kived ozc schitzN te-bachi tshirtman wagi007 wolfmanjm

repo: kivy/kivy


text:
Problem with 4D Systems display cape on Raspberry Pi

Kivy doesn't display on the 4D Systems display cape on the Raspberry Pi. i.e a 4DPI-35-II on a RPi 2 running Jessie. This touchscreen displays from /dev/fb1. If fbcp is run in the background (copies /dev/fb0 to /dev/fb1) then kivy will display. Setting the environment variable KIVY_BCM_DISPMANX_ID to different values (0-7) doesn't make any difference. It would seem like a setting needs to be included that will force kivy to display to /dev/fb1.

Sorry about the closure. Clicked wrongly. Fixed.

authors: Julian-O thjames


text:
MDSegmentButtonIcon class can't be initialized

KivyMD version: 2.0.1.dev0
I've found that MDSegmentedButtonIcon works well with the KV Builder, but fails when trying to initialize it inside the class.
To reproduce:
from kivymd.app import MDApp

from kivymd.uix.screen import MDScreen
from kivymd.uix.segmentedbutton import (
    MDSegmentedButton,
    MDSegmentButtonLabel,
    MDSegmentButtonIcon,
    MDSegmentedButtonItem,
)

class Example(MDApp):
    def build(self):
        screen = MDScreen()

        segmented_button = MDSegmentedButton(
            MDSegmentedButtonItem(
                MDSegmentButtonIcon(icon="language-python"),
                MDSegmentButtonLabel(text="Python"),
            ),
            MDSegmentedButtonItem(
                MDSegmentButtonIcon(icon="language-javascript"),
                MDSegmentButtonLabel(text="Javascript"),
            ),
        )
        screen.add_widget(segmented_button)

        return screen

Example().run()

error seems to occur in the builder, can't exactly say where it fails

As in the example in the documentation I wrapped the segmentedbutton in a boxlayout

`from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.segmentedbutton import (
MDSegmentedButton,
MDSegmentButtonLabel,
MDSegmentButtonIcon,
MDSegmentedButtonItem,
)
class Example(MDApp):
def build(self):
screen = MDScreen()
    box=MDBoxLayout(

                MDSegmentedButton(
                    MDSegmentedButtonItem(
                        MDSegmentButtonLabel(
                            text="Songs",
                        ),
                    ),
                    MDSegmentedButtonItem(
                        MDSegmentButtonLabel(
                            text="Albums",
                        ),
                    ),
                    MDSegmentedButtonItem(
                        MDSegmentButtonLabel(
                            text="Podcasts",
                        ),
                    ),

                ),
                orientation="vertical",
                spacing="12dp",
                adaptive_height=True,
            )

    screen.add_widget(box)

    return screen

Example().run()`

authors: JosselinDb sysax

repo: kivymd/KivyMD


text:
Chore: Upgrading @kiwicom/universal-components v0.0.12

Summary: Now that Flow types are correctly being picked up, there were quite a few Flow errors to fix.
Some are related to using react-native-web flow-typed in this repo and they conflict with @kiwicom/universal-components in node_modules. These will have to be fixed there and they are ignored in this repo in .flowconfig file.

https://github.com/kiwicom/margarita/blob/c7e8b340230268867330c47f03fc1f1b759debfc/packages/components/src/SearchParamsSummary/SearchParamsSummary.js#L63
Flow is still showing me 3 errors inside SearchParamsSummary for each AdaptableBadge text prop. But it will probably be solved by Tronds ?React.Node suggestion.

Yes, I planned to modify a few flow types in universal components and release a new patch version for these to be fixed.
cf https://github.com/kiwicom/universal-components/pull/244

There are still some issues with tests. For example:
FAIL  packages/components/src/tripTypeSwitch/__tests__/TripTypeSwitch.test.js
  ● Test suite failed to run

    Cannot find module './Button' from 'index.js'

    However, Jest was able to find:
        './Button.web.js'
        './Button.web.js.flow'

    You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'node', 'ts', 'tsx'].

    See https://jestjs.io/docs/en/configuration#modulefileextensions-array-string

    However, Jest was able to find:
        '../TripTypeSwitch.js'

    You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'json', 'jsx', 'node', 'ts', 'tsx'].

    See https://jestjs.io/docs/en/configuration#modulefileextensions-array-string

      at Resolver.resolveModule (node_modules/jest-runner/node_modules/jest-resolve/build/index.js:203:17)
      at Object.<anonymous> (node_modules/@kiwicom/universal-components/lib/web/Button/index.js:13:38)

I did try to add web.js to the list of extensions in our Jest config, and it did not help. To be continued.

authors: JoseDuSV RobinCsl

repo: kiwicom/margarita


text:
feat(PictureCard): Add src attribute

I also adjusted LazyImage to be more flexible, so technically, if PictureCard is adjusted accordingly, it should be possible to use the srcset feature with arbitrary images, but I considered that to be outisde of the scope for now.
This Pull Request meets the following criteria:

[x] Tests have been added/adjusted for my new feature
[ ] New Components are registered in index.js of my project

Closes #1834

authors: CollierCZ aexvir

repo: kiwicom/orbit-components


text:
Support for Doc String type

Hi all,
I am trying to implement a step which feature file looks like:
Scenario Outline: something something
     Given an individual customer with an account
        ....
      Then a warning tile will display the following message:
            """
            Lorem ipsum etc etc
            Lorem ipsum line 2
            """

Following this documentation https://cucumber.io/docs/gherkin/reference/#doc-strings I assumed this argument is passed just like a Data Table, so I create my step like this:
Then('a warning tile will display the following message:', async (t, ...docString) => {
    console.log(docString);
});

This step works, but the console.log() results in [ [], null ]
I have looked in a lot of documentations, but I can't find anything that could help me.
Is Doc String supported ? And if so, what is the correct usage?
Thanks!

Hi @Dreun,
no, doc strings are not supported, unfortunately.

Thanks for the quick response. If I was to build it myself, could you give me some pointers where to start?

You would need to modify gherkin-testcafe to pass this parameter to your step implementation.
If you are brave enough to do it:

Extract the doc string from the compiled step the same way it is done here for data tables
Pass the result to _runStep here
Pass the doc string to the step implementation here
Do not forget to adjust the type definitions: https://github.com/kiwigrid/gherkin-testcafe/blob/master/index.d.ts#L35

authors: Dreun Lukas-Kullmann

repo: kiwigrid/gherkin-testcafe


text:
🛑 Sangharaja is down

In f257129, Sangharaja (https://sangharaja.org) was down:

HTTP code: 530
Response time: 1024 ms

Resolved: Sangharaja is back up in 16b5f70.

repo: kizzna/uptime


text:
🛑 Exam3 is down

In a5f279a, Exam3 (https://exam3.gongtham.net/__test.php) was down:

HTTP code: 530
Response time: 55 ms

Resolved: Exam3 is back up in cec3bda.


text:
"yuna foo .wav" gives no error

yuna foo .wav
yuna foo. wav
yuna foo . wav

These give no errors

now just synthesizes text when it can't find a good file name

repo: kjoonlee/yuna


text:
Unable to install on MacOS

Nikitas-MacBook-Pro:scraper mojojojo$ cabal install curlhs
Resolving dependencies...
Configuring curlhs-0.1.3...
Building curlhs-0.1.3...
Failed to install curlhs-0.1.3
Build log ( /Users/mojojojo/.cabal/logs/curlhs-0.1.3.log ):
Configuring curlhs-0.1.3...
Building curlhs-0.1.3...
Preprocessing library curlhs-0.1.3...
In file included from LibCC.hsc:110:
Network/CURL000/LibC0.c:91:30: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment and section separated by a comma
void* __attribute__((section(".data"))) curlADRTAB[TABLEN] = {};
                             ^
1 error generated.
compiling dist/build/Network/CURL000/LibCC_hsc_make.c failed (exit code 1)
command was: /usr/bin/gcc -c dist/build/Network/CURL000/LibCC_hsc_make.c -o dist/build/Network/CURL000/LibCC_hsc_make.o -m64 -fno-stack-protector -D__GLASGOW_HASKELL__=708 -Ddarwin_BUILD_OS=1 -Dx86_64_BUILD_ARCH=1 -Ddarwin_HOST_OS=1 -Dx86_64_HOST_ARCH=1 -INetwork/CURL000 -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/time-1.4.2/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/Users/mojojojo/.cabal/lib/x86_64-osx-ghc-7.8.4/rtld-0.0.2/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/bytestring-0.10.4.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/base-4.7.0.2/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/integer-gmp-0.5.1.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/usr/local/Cellar/ghc/7.8.4/lib/ghc-7.8.4/include/
cabal: Error: some packages failed to install:
curlhs-0.1.3 failed during the building phase. The exception was:
ExitFailure 1

It seems that the OSX compiler (clang?) has a different syntax for 'section' attribute than gcc.
Network/CURL000/LibC0.c:91:30: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment and section separated by a comma
void* __attribute__((section(".data"))) curlADRTAB[TABLEN] = {};

According to the documentation on https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/index.html, this should work:
Network/CURL000/LibC0.c:91:
void* __attribute__((section("__DATA,__data"))) curlADRTAB[TABLEN] = {};

But maybe a better solution would be to just remove the 'section' attribute at all:
Network/CURL000/LibC0.c:91:
void* curlADRTAB[TABLEN] = {};

Forcing the '.data' section is not needed on Windows, so maybe the same works on OSX.
Unfortunately I don't have access to the OSX machine and actually I don't even know if curlhs works at all on that platform. It should, but I can't test it, so sorry for all inconveniences. I would be grateful if you could do some tests for me.

Travis can be used to test against different OSs. Here's a page on OS X: http://docs.travis-ci.com/user/osx-ci-environment/.
AIU, you're already acquainted with Travis, so I think it'll be best if you just update your config accordingly and experiment with changes without me in the middle.

I'm informing you that both
- void* __attribute__((section(".data"))) curlADRTAB[TABLEN] = {};
+ void* __attribute__((section("__DATA,__data"))) curlADRTAB[TABLEN] = {};

- void* __attribute__((section(".data"))) curlADRTAB[TABLEN] = {};
+ void* curlADRTAB[TABLEN] = {};

resolved the problems on my OS.

Thanks for your time.

Thanks for the fix and the library!
Could you please make a release containing the fix?

Done. Just wanted to make it compatible with GHC 7.10 before release.

Thanks

authors: kkardzis nikita-volkov

repo: kkardzis/curlhs

license: isc


text:
Add an async interface

Probably needs to spawn an OS thread and perform all line reading there with a channel (I don't think there is another way to do it anyway). I could (an likely will) implement this outside rustyline but if it seems useful enough to warrant inclusion I am happy to do a PR.
fn readline(&mut self, prompt: &str) -> Box<Future<Item = String, Error = ReadLineError>>;

https://github.com/alexcrichton/futures-rs

I was thinking about tokio support, which basically means async support. I'm probably also trying to sketch something up.

Very excited to see this receiving attention!

I don't think Rustyline internals need to change to read from stdin asynchronously, I think it just needs to provide an async-compatible interface, which should probably be a futures Stream of String.

One reason to build async support into rustyline would be to allow operation without threads in cases where that is possible (e.g. stdin/out connected to a terminal or pipe on *nix). That's a lot of complexity for dubious benefit, though.

I think for async use to be really nice, it would be good to have a new interface that allows output to be sent while the user is editing a line. I'm thinking of being able to create a remote "handle" to an Editor (kind of like the Handle to a Reactor in the previous iteration of tokio. That handle would probably implement AsyncWrite.

Something like this sounds really great! Producing output without interfering with a prompt is exactly what I want for building e.g. an admin interface to a server. You might be able to get away with a synchronous std::io::Write interface, since nobody should be using this to dump large volumes of data anyway. Support for more fine-grained writes than complete lines will be useful for things like displaying live progress bars concurrent with user input.

It'd also be nice to be able to use async for output from the log crate; a stretch-goal-feature for this could be a wrapper for Handle that impls Log.

If anyone still wants to add this feature to rustyline, I've made a cleanroom implementation that could be used as a reference.
https://github.com/zyansheep/rustyline-async

I think this well intended but it's not necessarily going to achieve what you want it to.
I would focus on what the goal is. I think aiming at first to interoperate with an application that is using asyc and tokio is a good goal.
As it turns out threads are always available, and the threaded model must have a way of yielding time so that it can be put in a suspend state. Then the core can activate another thread. They don't all need to be hot.
Also anything that uses async with tokio must be thread safe because tokio uses threads to spread tasks across cores.
The core of a tokio application is usually an event loop that uses the tokio "select!" macro.
This chooses one from among awaited futures that are in a ready state at random.
Events filter into the select from among other things an mpsc channel. What is sent on a channel has to be pin and send which is complex way to say it needs to be in a fixed place in memory and usually fairly simple. We don't want to create a congestion point where the buffer being edited is sent on an mpsc channel so it should probably instead be shared with this main loop as an arc<mutex>.
Buffer would be whatever string type or data structure you use to manage what is being edited that hopefully has string_from or something like that implemented.
A simple enum event type for when the buffer has changed, or the line is done can then be sent or returned to the application select! macro.  After it is handled a call back to rustyline would be a future awaited until another one of those events is available. while it's in an unready state it would not be selected and the application would be free to do the other things it does like network  IO  or handling other fields that are not line edited.
I guess another less complex issue is that rustyline might be in different contexts within a complex app and so in each context it would have a different history and shared buffer. So maybe it's the app that passes this arc<mutex> to rustyline and buffer contains both the line and history.  Then you 'd get back a Vec<Arc<mutex> to save and load the histories and pass an unit16 to the select to indicate what context is being updated.
I will look at the code and see if this makes sense.

https://github.com/antirez/linenoise#asyncrhronous-api

Are you planning to add this in the future?

Are you planning to add this in the future?

I am not sure but removing / replacing ExternalPrinter by the clever / simple linenoise solution is appealing

I am not sure but removing / replacing ExternalPrinter by the clever / simple linenoise solution is appealing.

I spent a few hours looking into this, and implementing an incremental read API similar to linenoise would be a significant architectural shift.
This isn't simply a matter of moving the needed state into the right place (currently the state is spread out across Editor, State, InputState, impl Renderer, and impl RawReader).  There's also a significant amount of recursion to handle command completion, reverse history search, paging, etc.  Those recursive routines would need to be rewritten to handle single Cmds, and additional state added to determine which cmd handler function should we dispatch the next Cmd to when called.
Basically we'd need to keep a stack of trait CmdDispatcher instances, each holding whatever state they need, then passing it the result of next_cmd() each time readline updates.  There's a lot to figure out here, but there's a very high chance of breaking some existing behavior not covered by tests.
I think this approach is the right one as it would make it trivial to use rustyline in async, multi-threaded, and single-threaded multiplex (select()) situations.  @gwenn I'm just not sure you're interested in that significant of a change.  It would be a large PR to review.

authors: Marwes Ralith azoyan dmlary esotericbyte gwenn remexre rubdos zyansheep

repo: kkawakam/rustyline


text:
Implement Candidate for Arc<str>

Should've already done it in #721

See #810

Thanks @gwenn ! 👍🏿

authors: fsktom gwenn


text:
The slots example does not fire the my_custom_event

The example on https://docs.puepy.dev/components.html#slots does not fire the my_custom_event, but instead writes to the console: Triggering event with underscores. Did you mean dashes?:  my_custom_event

Does it work on PyScript.com when you run it? See here: https://kkinder.pyscriptapps.com/puepy-tutorial/latest/tutorial/06_components/index.html

Yes

You're right, there was an issue a while back I did fix, where PuePy's event system was using underscores, but most other projects were using hyphens, so I updated PuePy but neglected to update the docs. I fixed them now.
Your tickets are a good reminder of why we need tests for what's in the docs, not just the samples. Thanks; should be fixed now. You just change "my_custom_event" to "my-custom-event" here:
    def on_button_click(self, event):
        self.trigger_event("my-custom-event", detail={"type": self.type})

repo: kkinder/puepy