-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 651bc1d
Showing
8 changed files
with
763 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*/__pycache__/** |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
import numpy as np | ||
import networkx as nx | ||
import matplotlib.pyplot as plt | ||
import json | ||
import random | ||
|
||
BOARDS = {} | ||
|
||
|
||
class Board: | ||
def __init__(self, graph: nx.Graph, pos=None): | ||
self.g = graph | ||
self.pos = pos | ||
def reset(self, n_agent, n_unit_per_agent, n_cell_per_agent): | ||
n_cells = self.g.number_of_nodes() | ||
assert n_cell_per_agent * n_agent == n_cells | ||
remaining_cells = [i for i in self.g.nodes()] | ||
for i in range(n_agent): | ||
cells = random.sample(remaining_cells, n_cell_per_agent) | ||
remaining_cells = [c for c in remaining_cells if c not in cells] | ||
nx.set_node_attributes(self.g, {c: 1 for c in cells}, 'units') | ||
nx.set_node_attributes(self.g, {c: i for c in cells}, 'player') | ||
t = n_unit_per_agent - n_cell_per_agent | ||
left_unit = t | ||
for j, cell in enumerate(cells): | ||
if left_unit <= 0: | ||
break | ||
x = left_unit if j + 1 == len(cells) else random.randint(1, min(left_unit, t // 3)) | ||
print(x) | ||
left_unit -= x | ||
nx.set_node_attributes(self.g, {cell: x+1}, 'units') | ||
|
||
|
||
def register_map(name, filepath): | ||
global BOARDS | ||
f = open(filepath) | ||
m = json.load(f) | ||
g = nx.Graph() | ||
g.add_nodes_from([(cell['id'], cell) for cell in m['cells']]) | ||
g.add_edges_from([e for e in m['edges']]) | ||
assert min([d[1] for d in g.degree()]) > 0 | ||
BOARDS[name] = Board(g, m['pos']) | ||
|
||
|
||
register_map('world', 'maps/world.json') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 4, | ||
"metadata": { | ||
"collapsed": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"import random\n", | ||
"\n", | ||
"import risk_env\n", | ||
"\n", | ||
"env = risk_env.env()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 6, | ||
"outputs": [], | ||
"source": [ | ||
"env.reset()" | ||
], | ||
"metadata": { | ||
"collapsed": false, | ||
"pycharm": { | ||
"name": "#%%\n" | ||
} | ||
} | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 7, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"[(1, {'name': 'Alaska', 'group': 'North America', 'id': 1, 'gid': 1}), (2, {'name': 'NW Territory', 'group': 'North America', 'id': 2, 'gid': 1, 'units': 1, 'player': 5}), (3, {'name': 'Green Land', 'group': 'North America', 'id': 3, 'gid': 1, 'units': 1, 'player': 2}), (4, {'name': 'Alberta', 'group': 'North America', 'id': 4, 'gid': 1, 'units': 1, 'player': 5}), (5, {'name': 'Ontario', 'group': 'North America', 'id': 5, 'gid': 1, 'units': 1, 'player': 0}), (6, {'name': 'Quebec', 'group': 'North America', 'id': 6, 'gid': 1, 'units': 1, 'player': 4}), (7, {'name': 'Central America', 'group': 'North America', 'id': 7, 'gid': 1, 'units': 1, 'player': 1}), (8, {'name': 'W USA', 'group': 'North America', 'id': 8, 'gid': 1, 'units': 1, 'player': 3}), (9, {'name': 'E USA', 'group': 'North America', 'id': 9, 'gid': 1, 'units': 1, 'player': 1}), (10, {'name': 'Venezuela', 'group': 'South America', 'id': 10, 'gid': 2, 'units': 1, 'player': 5}), (11, {'name': 'Peru', 'group': 'South America', 'id': 11, 'gid': 2}), (12, {'name': 'Brazil', 'group': 'South America', 'id': 12, 'gid': 2, 'units': 12, 'player': 3}), (13, {'name': 'Argentina', 'group': 'South America', 'id': 13, 'gid': 2, 'units': 1, 'player': 4}), (14, {'name': 'Egypt', 'group': 'Africa', 'id': 14, 'gid': 3, 'units': 1, 'player': 1}), (15, {'name': 'N Africa', 'group': 'Africa', 'id': 15, 'gid': 3, 'units': 1, 'player': 2}), (16, {'name': 'E Africa', 'group': 'Africa', 'id': 16, 'gid': 3, 'units': 3, 'player': 0}), (17, {'name': 'Congo', 'group': 'Africa', 'id': 17, 'gid': 3, 'units': 1, 'player': 2}), (18, {'name': 'S Africa', 'group': 'Africa', 'id': 18, 'gid': 3, 'units': 1, 'player': 4}), (19, {'name': 'Madagascar', 'group': 'Africa', 'id': 19, 'gid': 3, 'units': 1, 'player': 2}), (20, {'name': 'Iceland', 'group': 'Europe', 'id': 20, 'gid': 4, 'units': 1, 'player': 5}), (21, {'name': 'Scandinavia', 'group': 'Europe', 'id': 21, 'gid': 4, 'units': 5, 'player': 5}), (22, {'name': 'N Europe', 'group': 'Europe', 'id': 22, 'gid': 4, 'units': 13, 'player': 2}), (23, {'name': 'W Europe', 'group': 'Europe', 'id': 23, 'gid': 4, 'units': 1, 'player': 1}), (24, {'name': 'S Europe', 'group': 'Europe', 'id': 24, 'gid': 4, 'units': 3, 'player': 3}), (25, {'name': 'Ukraine', 'group': 'Europe', 'id': 25, 'gid': 4, 'units': 1, 'player': 5}), (26, {'name': 'Britain', 'group': 'Europe', 'id': 26, 'gid': 4, 'units': 1, 'player': 3}), (27, {'name': 'Ural', 'group': 'Asia', 'id': 27, 'gid': 5, 'units': 3, 'player': 4}), (28, {'name': 'Middle East', 'group': 'Asia', 'id': 28, 'gid': 5, 'units': 1, 'player': 3}), (29, {'name': 'Afghanistan', 'group': 'Asia', 'id': 29, 'gid': 5, 'units': 1, 'player': 4}), (30, {'name': 'India', 'group': 'Asia', 'id': 30, 'gid': 5, 'units': 10, 'player': 1}), (31, {'name': 'Siam', 'group': 'Asia', 'id': 31, 'gid': 5}), (32, {'name': 'China', 'group': 'Asia', 'id': 32, 'gid': 5, 'units': 1, 'player': 2}), (33, {'name': 'Japan', 'group': 'Asia', 'id': 33, 'gid': 5, 'units': 4, 'player': 4}), (34, {'name': 'Mongolia', 'group': 'Asia', 'id': 34, 'gid': 5, 'units': 2, 'player': 0}), (35, {'name': 'Irkutsk', 'group': 'Asia', 'id': 35, 'gid': 5}), (36, {'name': 'Yakutsk', 'group': 'Asia', 'id': 36, 'gid': 5, 'units': 1, 'player': 5}), (37, {'name': 'Siberia', 'group': 'Asia', 'id': 37, 'gid': 5, 'units': 1, 'player': 3}), (38, {'name': 'Kamchatka', 'group': 'Asia', 'id': 38, 'gid': 5, 'units': 8, 'player': 1}), (39, {'name': 'W Australia', 'group': 'Australia', 'id': 39, 'gid': 6, 'units': 1, 'player': 4}), (40, {'name': 'E Australia', 'group': 'Australia', 'id': 40, 'gid': 6, 'units': 8, 'player': 5}), (41, {'name': 'Indonesia', 'group': 'Australia', 'id': 41, 'gid': 6, 'units': 1, 'player': 2}), (42, {'name': 'New Guinea', 'group': 'Australia', 'id': 42, 'gid': 6, 'units': 10, 'player': 0})]\n" | ||
] | ||
}, | ||
{ | ||
"ename": "KeyError", | ||
"evalue": "'player'", | ||
"output_type": "error", | ||
"traceback": [ | ||
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", | ||
"\u001B[0;31mKeyError\u001B[0m Traceback (most recent call last)", | ||
"\u001B[0;32m/tmp/ipykernel_14222/1551777326.py\u001B[0m in \u001B[0;36m<module>\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0;31m \u001B[0menv\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m", | ||
"\u001B[0;32m/app/anaconda3/envs/risk/lib/python3.8/site-packages/pettingzoo/utils/wrappers/order_enforcing.py\u001B[0m in \u001B[0;36mrender\u001B[0;34m(self, mode)\u001B[0m\n\u001B[1;32m 55\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0mmode\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mmetadata\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m\"render.modes\"\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 56\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_has_rendered\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;32mTrue\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 57\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0msuper\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmode\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 58\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 59\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mstep\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0maction\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;32m/app/anaconda3/envs/risk/lib/python3.8/site-packages/pettingzoo/utils/wrappers/base.py\u001B[0m in \u001B[0;36mrender\u001B[0;34m(self, mode)\u001B[0m\n\u001B[1;32m 47\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 48\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmode\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m\"human\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 49\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0menv\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmode\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 50\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 51\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mreset\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;32m/app/anaconda3/envs/risk/lib/python3.8/site-packages/pettingzoo/utils/wrappers/capture_stdout.py\u001B[0m in \u001B[0;36mrender\u001B[0;34m(self, mode)\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmode\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m\"human\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 11\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mmode\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0;34m\"human\"\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 12\u001B[0;31m \u001B[0msuper\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 13\u001B[0m \u001B[0;32melif\u001B[0m \u001B[0mmode\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0;34m\"ansi\"\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 14\u001B[0m \u001B[0;32mwith\u001B[0m \u001B[0mcapture_stdout\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mas\u001B[0m \u001B[0mstdout\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;32m/app/anaconda3/envs/risk/lib/python3.8/site-packages/pettingzoo/utils/wrappers/base.py\u001B[0m in \u001B[0;36mrender\u001B[0;34m(self, mode)\u001B[0m\n\u001B[1;32m 47\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 48\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmode\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m\"human\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 49\u001B[0;31m \u001B[0;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0menv\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mrender\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mmode\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 50\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 51\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mreset\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;32m/app/risk/pz-risk/pz_risk/risk_env.py\u001B[0m in \u001B[0;36mrender\u001B[0;34m(self, mode)\u001B[0m\n\u001B[1;32m 82\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mG\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnodes\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 83\u001B[0m nx.draw_networkx_nodes(G, pos,\n\u001B[0;32m---> 84\u001B[0;31m \u001B[0mnodelist\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mc\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mG\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnodes\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mc\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m1\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'player'\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0magent\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 85\u001B[0m node_color=COLORS[agent], **options)\n\u001B[1;32m 86\u001B[0m \u001B[0;31m# nx.draw_networkx_nodes(G, pos, nodelist=[4, 5, 6, 7], node_color=\"tab:blue\", **options)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;32m/app/risk/pz-risk/pz_risk/risk_env.py\u001B[0m in \u001B[0;36m<listcomp>\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 82\u001B[0m \u001B[0mprint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mG\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnodes\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 83\u001B[0m nx.draw_networkx_nodes(G, pos,\n\u001B[0;32m---> 84\u001B[0;31m \u001B[0mnodelist\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mc\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mc\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mG\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mnodes\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mc\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m1\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;34m'player'\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0magent\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 85\u001B[0m node_color=COLORS[agent], **options)\n\u001B[1;32m 86\u001B[0m \u001B[0;31m# nx.draw_networkx_nodes(G, pos, nodelist=[4, 5, 6, 7], node_color=\"tab:blue\", **options)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", | ||
"\u001B[0;31mKeyError\u001B[0m: 'player'" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"env.render()" | ||
], | ||
"metadata": { | ||
"collapsed": false, | ||
"pycharm": { | ||
"name": "#%%\n" | ||
} | ||
} | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 8, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": "<pettingzoo.utils.wrappers.order_enforcing.OrderEnforcingWrapper at 0x7f6c7c47cf40>" | ||
}, | ||
"execution_count": 8, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"env." | ||
], | ||
"metadata": { | ||
"collapsed": false, | ||
"pycharm": { | ||
"name": "#%%\n" | ||
} | ||
} | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"outputs": [], | ||
"source": [ | ||
"\n" | ||
], | ||
"metadata": { | ||
"collapsed": false, | ||
"pycharm": { | ||
"name": "#%%\n" | ||
} | ||
} | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 2 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython2", | ||
"version": "2.7.6" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 0 | ||
} |
Oops, something went wrong.