pyfa-org / pyfa Goto Github PK
View Code? Open in Web Editor NEWPython fitting assistant, cross-platform fitting tool for EVE Online
License: GNU General Public License v3.0
Python fitting assistant, cross-platform fitting tool for EVE Online
License: GNU General Public License v3.0
Would be nice if Pyfa could use GitHub API to check for new releases and notify user if one is found (if internal version is different than latest GitHub release version). User should be able to suppress message.
I can look into this a little more in the coming weeks, but I figured I'd start some discussion on it now. =)
I am not a big fan of running applications I use every day from a folder in my downloads directory as i means that I am forever having to open explorer and find it in that mess.
To that end I have created the following Inno Setup sciprt for making installers. Just put it next to the pyfa folder from the windows zip and then compile it using Inno Setup (GPL applicaiton)
It can be monstrous, for example:
<shipType value="<localized hint="Maelstrom">Maelstrom</localized>"/>
Need to support it properly.
When importing fittings exported from EVE v8.41.714680, or from versions of Pyfa prior to 1.1.19, it never completes, and becomes unresponsive. XML files created by exporting from Pyfa 1.1.20 import with no problems. The XML files from EVE and from pyfa 1.1.16 and 1.1.18 used in testing were all imported to 1.1.18 and to EVE with no problems.
I find it convenient to host binaries with my github projects. You can host binaries via the releases tab on the project main page. There is more information here: https://github.com/blog/1547-release-your-software
I plan to work on the HTML export after the release of Rubicon 1.3. I never liked how it navigated before, so I gave it a bit of facelift:
This is easy and will probably be committed soonish already committed >_>.
Functionality outside IGB, such as displaying a popup with the fittings in it, is something I want to look into. I don't know how possible this is considering the format and time required (I have to look more into DNA and how it works). enabled by linking to null-sec.com if outside IGB.
I also would like to address some performance issues related to the HTML export. Currently, it exports every time a fit is changed (although, it has a mechanism to stop exporting if a fit is changed in the process of export). The export consists of looping through all the fits in the DB and gathering the fitting DNA. On my main computer, this loop takes on average 3.3 seconds for 252 saved fits (some of which are empty)(not including writing to file). On my laptop it takes a whopping 9 seconds. So I'm going to look into optimizing to see if we can get this down a tad.
I've thrown around the idea of selective updates - opening HTML file when pyfa starts and keeping it in memory, and changing only the fit that needs to be changed. Or instead of looping and getting the fit one by one, get one list of all ships and parse from there (this particular method worked wonders for another project of mine, but I was working with the much slower MySQL). Or simply not updating with every change, and instead doing it at set intervals / when program closes.
Open to thoughts.
Would you put the traits back to ships' descriptions? Or just create a new tab for traits.
There seems to be something off with the stacking penalties of SeBos.
A Tornado shows a scan res of 1299 instead of 900ish ingame.
Fit:
3 F-90 Positional Sensor Subroutines
3 Medium Targeting System Subcontroller I
Any way, or plans to add a way, to get stats for upcoming expansions (Rubicon) in Pyfa?
Here's the fits that I'm using:
I have this Scythe fit:
[Scythe, sites]
Damage Control II
Beta Reactor Control: Capacitor Power Relay I
Beta Reactor Control: Capacitor Power Relay I
Beta Reactor Control: Capacitor Power Relay I
Beta Reactor Control: Capacitor Power Relay I
10MN Afterburner II
EM Ward Amplifier II
Adaptive Invulnerability Field II
Large C5-L Emergency Shield Overload I
Shield Boost Amplifier II
Medium S95a Remote Shield Booster
Medium S95a Remote Shield Booster
Medium S95a Remote Shield Booster
Medium Processor Overclocking Unit I
Medium Processor Overclocking Unit I
Medium Capacitor Control Circuit I
Light Shield Maintenance Bot I x1
Medium Shield Maintenance Bot I x4
projected to this Oracle fit:
[Oracle, sites]
Damage Control II
Heat Sink II
Heat Sink II
Heat Sink II
Tracking Enhancer II
Capacitor Power Relay II
Adaptive Invulnerability Field II
Adaptive Invulnerability Field II
Large Shield Extender II
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Tachyon Modulated Energy Beam I, Imperial Navy Multifrequency L
Medium Anti-EM Screen Reinforcer I
Medium Core Defense Field Extender I
Medium Core Defense Field Extender I
with this Sleipnir as booster on the Scythe:
[Sleipnir, Booster]
[Empty Low slot]
[Empty Low slot]
[Empty Low slot]
[Empty Low slot]
[Empty Low slot]
Command Processor I
Command Processor I
[Empty Med slot]
[Empty Med slot]
[Empty Med slot]
Siege Warfare Link - Active Shielding II
Siege Warfare Link - Shield Efficiency II
Siege Warfare Link - Shield Harmonizing II
Skirmish Warfare Link - Rapid Deployment II
Skirmish Warfare Link - Interdiction Maneuvers II
[Empty High slot]
[Empty High slot]
[Empty Rig slot]
[Empty Rig slot]
Although I know current focus is on the new EOS engine, I think that discussion should at least be started on a new interface on gang bonuses. There is a long-standing gripe with the current interface and how it works. I think the current implementation works better than EFT (where you need to have the gang fit open), however it is very unintuitive, and I think it should be one of the first things to be tackled once work on Pyfa itself is started again.
A while ago I was looking through the Pyfa source and found that work on a fleet browser, similar to the market / skip browser, was started, however left for ruin as Pyfa continued to be developed. Here is a screenshot of how it currently looks when enabled via source:Fleet browser
I don't know where exactly this was going and I can't find any discussion in old commit messages. It might be a good idea to maybe start brainstorming around this design / concept, and flesh out what it would do / how it would look
OR
A much simpler proposal: Keep the current fleet window (where it shows the commanders and characters), but instead of having to navigate to the fit to set as commander, auto populate a dropdown box with fits that have ganglink modules (should be easy to select such requirements from the database).
The ability to tag a fit as belonging to a specific fleet doctrine.
Ships should be filterable by fleet doctrine.
A ship could be tagged as belonging to multiple fleets or moved/copied from one fleet to another.
The ability to export to xml a complete fleet.
Display of all ships in a fleet colored as usable/unsuable for the selected pilot.
Importing of vanity ships is somewhat broken. The import works, but there's no way of accessing it unless you search for the name as vanity ships are forcefully excluded from Pyfa's market.
This was not really an issue when they were limited ships, but now with the new skinning feature they are more common. Case in point: Police Pursuit Comet. Although these have the same stats as their regular counterpart, those who find a kill on the killboard may want to import the kill, and will not know to edit the kill to show the regular ship.
I propose one of three things:
skinned: unskinned
relationship in the market service. On import, simply compare and save as the unskinned ship. However, this has an issue in that the price will not be accurate, and those who import a Police Pursuit Comet will not expect it to show up in the regular comet fittings.I am not sure if CCP maintains the relationship internally. I don't think so, as there is no relationship in the variations tab in-game. If there is no internal relationship, it might be a pain to keep up to date when new skins are released.
I'd like to setup a loadout for a Sarum Magnate but it seems to be missing in v1.1.15.
While attempting to see what the 1.1 changes did to my booster, I found that the remote reps were not receiving boosts.
No difference in reps between a fleet boosted repair module and a non boosted repair module.
If I try to see my punisher fittings, the ship browser is empty.
I just get a warning in the console: http://pastebin.com/eFvNuBvg
blitzmann edit:
(python:6580): Gtk-WARNING **: gtk_menu_attach_to_widget(): menu already attached to GtkMenuItem
Traceback (most recent call last):
File "/home/carlos/Downloads/pyfa/gui/shipBrowser.py", line 812, in stage3
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, name, booster, timestamp),shipID))
File "/home/carlos/Downloads/pyfa/gui/shipBrowser.py", line 1362, in __init__
self.fitMenu.Check(self.toggleItem.GetId(), self.fitBooster)
File "/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 11210, in Check
return _core_.Menu_Check(*args, **kwargs)
TypeError: in method 'Menu_Check', expected argument 3 of type 'bool'
As per https://forums.eveonline.com/default.aspx?g=posts&m=4260992#post4260992
Sometimes when you rig a strategic cruiser and then proceed to change around subs, you get a ghost fourth rig slot showing. Other than the visual, there is no change in stats or calibration. Here is an example:
Steps:
As stated, attempting to project a neut effect to a titan results in an X'd out module in the Projected tab.
Affects all titans, and all neutralizers.
Long standing issue for me. Neither selecting Graph from the menu nor Ctrl-G bring up the graphing window.
Using Windows 7
error_log.txt and output_log.txt are both empty.
Google search showed some people having issues with font caching and matplotlib, but deleting fontList.cache in the ~/.matplotlib/folder to force its reconstruction did not fix the issue.
Please advise if there's a way I can enable more logging to get better information on what's happening. Thanks.
I've confirmed that the shield boost nerf is not being applied (the remote shield is, however)
https://forums.eveonline.com/default.aspx?g=posts&m=4275459#post4275459
Fleet interface is a major gripe of the community. I've submitted pull request #50 to help alleviate this issue a bit. However, after discussing it with a friend, he came up with a better way, and I think more work should be done on this front.
What are the problems with the fleet interface? Certainly the navigation is a big issue. You should not have to navigate to your ships, and then navigate to your booster. There's also the problem that I and I'm sure many people have of navigating to their boosting ship and then accidentally selecting it, which is... annoying to say the least.
I propose a change to flag boosting ships in the database, then having a dropdown in the fleet window showing the flagged ships. Flagging can be either manual or automatic (if the fit contains a link, flag it). This way navigating to the ship is unneeded. Can even add a link to open the fit in another tab in case editing is needed.
If this should be implemented, what to do about the current implementation of dragging / right clicking fitting and setting booster? I think we can leave it in because there might be some cases where we want the squad booster in a regular ship and propagating their basic leadership skill bonuses.
Obviously there are inherent problems with the current interface and UI that should be addressed whenever work on next pyfa version is started. But I think this change is a relatively simple UI change (even if some backend work needs to be done) that would benefit the entire community until such a time comes.
Thoughts?
The DPS Graph window does not open for me when only the required packages are installed on openSUSE 13.1. Instead, I had to additionally install python-matplotlib-wx in order to make matplotlib work with python-wxWidgets.
The same issue probably exists for Fedora systems, which seem to have the packages split in the same vein, though I do not have a machine to test this on.
It's an easy fix but might bother other people on the same platform, so this would probably be a good addition to the requirements section of the readme.
Hello,
When i click on preference, the preference window will not appear on the 1.1.21 Stable version.
I have a stacktrace:
Traceback (most recent call last):
File "/home/vchemiere/Téléchargements/pyfa/gui/mainFrame.py", line 319, in showPreferenceDialog
dlg = PreferenceDialog(self)
File "/home/vchemiere/Téléchargements/pyfa/gui/preferenceDialog.py", line 61, in __init__
prefView.populatePanel(page)
File "/home/vchemiere/Téléchargements/pyfa/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py", line 44, in populatePanel
self.PathLinkCtrl = wx.HyperlinkCtrl( panel, wx.ID_ANY, self.HTMLExportSettings.getPath().encode('utf-8'), 'file:///' + str(self.HTMLExportSettings.getPath()), wx.DefaultPosition, wx.DefaultSize, wx.HL_ALIGN_LEFT|wx.NO_BORDER|wx.HL_CONTEXTMENU )
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 17: ordinal not in range(128)
I found the error and i fix it:
pyfa/gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py line 42
replace:
self.PathLinkCtrl = wx.HyperlinkCtrl( panel, wx.ID_ANY, str(self.HTMLExportSettings.getPath()), 'file:///' + str(self.HTMLExportSettings.getPath()), wx.DefaultPosition, wx.DefaultSize, wx.HL_ALIGN_LEFT|wx.NO_BORDER|wx.HL_CONTEXTMENU )
by
self.PathLinkCtrl = wx.HyperlinkCtrl( panel, wx.ID_ANY, self.HTMLExportSettings.getPath().encode('utf-8'), 'file:///' + self.HTMLExportSettings.getPath().encode('utf-8'), wx.DefaultPosition, wx.DefaultSize, wx.HL_ALIGN_LEFT|wx.NO_BORDER|wx.HL_CONTEXTMENU )
I hope it will help you.
Thanks for your work!
Hello,
in order I can look for new versions of Pyfa would you please insert the version information in your tag?
I maintain the version published in playdeb:
http://www.playdeb.net/software/Python%20Fitting%20Assistant
I would like to scan for new versions with this regexp:
https://github.com/DarkFenX/Pyfa/tags
(?:.*/)?v([\d.]+).tar.gz
So tagname of 1.1.16 should be v1.1.16 and everything should be fine.
Thanks.
Any Triage carrier fitting:
Expected: under Projected effects the Remote Capacitor Transmitter gets turned off but the Neuts stay enabled
Actual: all modules under Remote effects get forced offline and can't be toggled
Minor secondary issue: when deactivating the Triage module all remote effects stay offlined
I want to make sure I have a backup of my fittings. Where does Pyfa store the user files?
On OS X. I could be doing something wrong though...
I DLed this, and pasted it all into my existing Pyfa folder, letting it overwrite as needed, and now when I try to start pyfa up, it fails. Help? Also, I've never used this... GitHub thing before, so if you could do it via my email, I'd appreciate that :)
Not sure if this is an easy fix, and I haven't looked into it at all. Noticed this issue while the wife was fitting something up.
With no saved Kestrel Fits, attempting to create a new one gives the error in the attached pastebin on win7 x64
http://pastebin.com/4PNiKPmr
After re-launching pyfa there are now fits listed, however they will not open into the fitting editing tab(s).
The 1.1.22 release notes had an item "Preferences have had has a face lift with new icons". However, on my Mac, the actual effect seems to be that the Preferences (Cmd+,) option is no longer available at all: the keypress does nothing, and the option is greyed out in the menu.
To reproduce:
The restart pyfa
part is relevant, there's another bug where it doesn't update anything at all after a failed one.
Hello ! Just read http://www.eve-ru.com/blogs/devblog/5515 . Some ideas:
1.1) Build automation, auto class docs and call graphs (static analysis tools + profiler), unit/functional/acceptance testing. The testing is must have, especially with casual contributors. Even if you don't feel likely to write tests yourself - do make foundation for them.
1.2) Quit trying to learn and implement everything yourself. Google for libs, or beg it out of university students. And auto-test everything.
Do think of using existing and proven inequality solver and/or optimisation library, not necessary in Python, maybe in compiled or special math/stat language.
Do think of offloading the work to existing SQL engine, even SQLite, maybe Firebird if the former lacks features or performance. Load CCP data into database, save character with skills and implants in custom tables(s), then express game math in a multi-join SELECT
ending with
WHERE
cost_fixed < 1000000000
AND cost_consumable_per_sec < 1000
AND damage_take_dps > 150
AND damage_take_alpha > 450
ORDER BY damage_deal_dps DESC
and let the SQL engine pick weapons by skills, hull by weapons, rigs by hull, or even implants and next skills to learn within WHERE ... AND time_skills_learn < 30 * 24 * 60 * 60
.
2+3) Try to find any other possible declarative DSL's (domain specific languages) and/or libraries working back from desired result towards available resources through constraints. Do ask people who you deem competent, get creative in coming up with ideas who this might be, and to what mathematical problems ours is equal. Theory of constraints ?
2+3 again) Think about fusing SQL and solvers together, for strong sides of both, maybe in iterative or tree-pruning algorithm.
P.S. Me personally may do some work with SQL, given full and comprehensive existing EVE math with examples/tests. Sorry, no experience with solvers/optimizers, but have some background wish to learn them.
It would be awesome if we could get an easy to run multiplatform fitting tool with a training plan manager.
EOS looks like it has most of the data needed to compute training times and skill dependencies, and EveMon's optimizer is open source, which would be a great model to a new one off.
This isn't so much a feature request as it is me asking where you think the logic should live, what should be added to EOS and what should be kept in Pyfa, because I'm tired of not having this and will probably try to bang it out in a weekend.
In my mind, the skill objects could grow a field or method for computing their skill point requirements, the character class could store partial skillpoints earned so far on incomplete skills. I'm unsure if EOS should also contain the optimizer, or if that should be put in Pyfa.
(yes, I know this is petty, but I'm a stickler for little things! =D)
I just pushed a commit that allows for manual HTML exports, which will help those who want to use this feature but automatically updating is slow for whatever reason.
However, had trouble figuring out where to put the option in the menu. I propose discussion on menu labels and arrangement. I eventually settled on this:
I grouped the XML import/export together, and the other misc functions together. However, I'm not really fond of it. I was think we may switch to grouping by import/export:
Import Fittings
Import Characters
------
Export Fitting
Export HTML
Export Skills Needed
------
Backup All Fittings
This might be a more sensible approach. Thoughts?
As for labeling... Import Characters
is misleading as people may think that's how they use the API (I've had discussions with 3 folks who've convo'd me wondering why it wasn't working). Although, I have no idea what we might relabel it as. Import XML Characters
?
The omnidirectional tracking links are not applying their bonuses to drones, and they can't be turned on and off (since they were changed to active modules w/ overheat). This worked perfectly fine in the pre-release, however.
Also, the Nestor does not have an image even though it had one in the pre-release.
Another note, the traits of all ships have been moved from the description of the ship to the "Traits" tab in-game, so now you cannot see a ship's bonuses in pyfa.
I'm looking to improve on the preferences a bit by finding appropriate icons and just kind of tidying up.
Do you think it would be a good idea to separate Proxy Settings from the Global Options page?
I've looked into icons, and since famfamfam doesn't have 32x32 icons, I found a huge cache of some licensed under CCA 3.0 from fatcow.com/free-icons. Example:
https://forums.eveonline.com/default.aspx?g=posts&m=4241084#post4241084
'pro', 'prot' - no proteus in search results.
Hi, I've noticed on 1.1.15 stable - Odyssey 1.0, that it is not possible to apply fleet boosts. Friends have reported the same. Is it implemented? I'll take a look see if I can find the right bits of code.
I have installed all of Pyfa's dependencies on OS X (Mavericks) via homebrew, including Python 2.7.5 and wxPython (via wxmac-2.9.4.0).
The change made in 0d6968 seems to break this type of install, as I get:
➔ python pyfa.py
Cannot find wxPython or the installed wxPython version doesn't meet requirements.
on any commit after that one. I'm not a python developer, so I'm not sure how to debug farther, but I can try to debug if you point me in the right direction.
If you project fit A onto fit B, then project fit B onto fit A, this will cause the fits to be recursively projected onto each other infinitely eventually hitting Python's recursion limit. This will break both fits until one is deleted, as well as any fit that either fit is projected onto.
Best way to try this is to create two new blank fittings and project each one onto the other.
Currently, pyfa does not allow you to set the same fit as a booster. I am not sure if this was to prevent infinite recursion (taking the boosts applied to the boosts that are applied to the boosts that are applied to the boosts... etc), but there are instances where you might want to do this. For example, if you're using a boosting loki, you want to know what you're sensor strength is so as to mitigate being probed down. Even if this boosting loki is the one giving boosts, it still benefits from those same boosts.
You can easily make it so that you can set the bootee and the booster as the same fit by simple removing
if boostee == booster:
return
from the setLinear*Com
methods in the fleet service (service/fleet.py
). Doing so does not seem to have any ill effects in regards to recursion. However, there is still yet a bug that seems to be present. The following reproduction steps assumes that the change above has already taken place..
I have a boosting loki (fit included at bottom of this post). The Loki's max speed is 1,388 m/s. Setting the squad booster as the same fit does not immediately change the ships stats - the speed remains the same. However, if I disable and re-enable the Rapid Deployment link, or if I change characters (either global char or booster char), the stats update to the correct speed. I am not sure why this is happening, because after the booster is set the fit should go through the recalc
method.
[Loki, Sable's Loki]
'Deuce' Co-Processor I
Co-Processor II
Co-Processor II
Experimental 10MN Microwarpdrive I
Command Processor I
Command Processor I
Conjunctive Ladar ECCM Scanning Array I
Conjunctive Ladar ECCM Scanning Array I
Conjunctive Ladar ECCM Scanning Array I
Covert Ops Cloaking Device II
Skirmish Warfare Link - Evasive Maneuvers II
Skirmish Warfare Link - Interdiction Maneuvers II
Skirmish Warfare Link - Rapid Deployment II
Sisters Expanded Probe Launcher, Sisters Combat Scanner Probe
[Empty High slot]
Medium Gravity Capacitor Upgrade I
Medium Gravity Capacitor Upgrade I
[Empty Rig slot]
Loki Defensive - Warfare Processor
Loki Electronics - Emergent Locus Analyzer
Loki Engineering - Capacitor Regeneration Matrix
Loki Offensive - Covert Reconfiguration
Loki Propulsion - Interdiction Nullifier'
Is there a reason not to make this pip installable? It would help a lot with adoption.
Clicking on the button to delete a fit causes pyfa to crash. This happens regardless of if the fit is being displayed or not. I'm running "v1.1.15 git".
Running hand calculation and using EFT to verify that Damage Role bonus is not being applied, did not investigate any other role bonuses.
Hi,
On mac, the pyfa -> preferences menu option is not available. I was looking for a way to import my characer, I assume it's through preferenes... but I can't open them on my machine.
Targeting System Subcontroller rigs should have a stacking penalty with other things affecting scan resolution but pyfa doesn't implement that.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.